diego-mascarenhas/laravel-mercadopago-sdk

Mercado Pago SDK v0.6.3 for Laravel

0.6.3 2024-03-18 13:31 UTC

This package is auto-updated.

Last update: 2024-09-18 14:57:41 UTC


README

安装

composer require diego-mascarenhas/laravel-mercadopago-sdk

在 config/app.php 文件中,添加以下 Provider 和 Alias

Provider

'providers' => [
  // Others Providers...
  DiegoMascarenhas\LaravelMercadoPago\Providers\MercadoPagoServiceProvider::class,
  /*
   * Application Service Providers...
   */
],

Alias

'aliases' => [
  // Others Aliases
  'MP' => DiegoMascarenhas\LaravelMercadoPago\Facades\MP::class,
],

配置

在配置 APP ID 和 APP SECRET 之前,运行以下命令

php artisan vendor:publish

执行命令后,转到 .env 文件,并添加 MP_APP_ID 和 MP_APP_SECRET 字段,其值对应于您 MercadoPago 应用程序的 CLIENT_ID 和 CLIENT_SECRET。

要查找您的 CLIENT_ID 和 CLIENT_SECRET 信息,您可以访问这里

如果您不想使用 .env 文件,请转到 config/mercadopago.php 并添加您相应的应用程序详情。

return [
	'app_id' => env('MP_APP_ID', 'YOUR CLIENT ID'),
	'app_secret' => env('MP_APP_SECRET', 'YOUR CLIENT SECRET'),
  'app_ssl' => env('MP_APP_SSL', true),
	'app_sandbox' => env('MP_APP_DEBUG', false)
];

用法

在这个例子中,我们将使用 MP Facade 创建一个支付偏好设置。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use MP;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class MercadoPagoController extends Controller
{
  public function getCreatePreference()
  {
    $preferenceData = [
        'items' => [
            [
                'id' => 101,
                'category_id' => 'electronics',
                'title' => 'iPhone 14 Pro Max',
                'description' => 'iPhone 14 Pro Max 128GB - Black',
                'picture_url' => 'https://example.com/images/products/iphone-14-pro-max-black.png',
                'quantity' => 1,
                'currency_id' => 'ARS',
                'unit_price' => 150000
            ]
        ],
        'payer' => [
            'email' => 'customer@example.com'
        ],
        'payment_methods' => [
            'excluded_payment_types' => [
                ['id' => 'atm']
            ],
            'installments' => 12
        ],
        'back_urls' => [
            'success' => 'https://yourdomain.com/success',
            'failure' => 'https://yourdomain.com/failure',
            'pending' => 'https://yourdomain.com/pending'
        ],
        'auto_return' => 'approved',
        'notification_url' => 'https://yourdomain.com/notifications'
    ];

  	$preference = MP::create_preference($preferenceData);

  	return dd($preference);

  }

在这个例子中,我们将使用 MP Facade 创建一个订阅(自动扣款)。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use MP;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class MercadoPagoController extends Controller
{
  public function getCreatePreapproval()
  {
    $preapproval_data = [
      'payer_email' => 'customer@example.com',
      'back_url' => 'https://example.com/preapproval',
      'reason' => 'Premium Suscription',
      'external_reference' => $subscription->id,
      'auto_recurring' => [
        'frequency' => 1,
        'frequency_type' => 'months',
        'transaction_amount' => 99,
        'currency_id' => 'ARS',
        'start_date' => Carbon::now()->addHour()->format('Y-m-d\TH:i:s.BP'),
        'end_date' => Carbon::now()->addMonth()->format('Y-m-d\TH:i:s.BP'),
      ],
    ];

    MP::create_preapproval_payment($preapproval_data);

    return dd($preapproval);
  }

在示例中,可以看到使用 Carbon 库指定订阅的开始和结束日期,频率为每月一次。

通过 Carbon 向当前日期添加一个小时,否则 MercadoPago 可能会认为日期是过去的。

故障排除

SSL 证书问题:无法获取本地颁发者证书

如果您遇到 SSL 证书问题:无法获取本地颁发者证书的错误,这通常发生在您的系统中的根证书已过时或缺失时。

要解决这个问题,请从 CA Extract 下载最新的 CA 证书包。