gjae / laravel-mercadopago
Requires
- laravel/framework: >=5.5
- mercadopago/dx-php: 1.5.0
This package is auto-updated.
Last update: 2024-09-13 04:29:18 UTC
README
执行以下命令
composer require gjae/laravel-mercadopago
基本配置
在其 config/app.php
文件中添加以下行(仅适用于 LARAVEL <= 5.4 版本)
在其服务提供者数组(providers)中
Gjae\MercadoPago\MPServiceProvider::class,
添加以下 facade 到其别名列表(仅适用于 LARAVEL <= 5.4 版本)
'MercadoPago' => Gjae\MercadoPago\Facade::class,
最后执行以下命令
php artisan vendor:publish --provider="Gjae\MercadoPago\MPServiceProvider"
最后执行迁移
php artisan migrate
现在,转到 config/mercadopago.php
文件并添加配置,文件内容类似如下
<?php return [ /** * Si es verdadero entonces no se validan las credenciales * en mercadopago */ 'local_debug' => true, /** * Especifica el modo en el que se estara usando * el mercado pago, : sandbox, production */ 'mode' => 'sandbox', /** * Credenciales para el caso en que la aplicacion este en modo * produccion (especificado en la clave mode) */ 'production' => [ 'access_token' => env('MP_ACCESS_TOKEN', ''), 'public_key' => env('MP_PUBLIC_KEY', ''), ], /** * Credenciales para el modo sandbox * especificado el uso en la clave "mode" */ 'sandbox' => [ 'access_token' => env('MP_SANDBOX_ACCESS_TOKEN', ''), 'public_key' => env('MP_SANDBOX_PUBLIC_KEY', '') ], /** * Tipo de identificacion usada para los pagos */ 'identification_type' => 'DNI', /** * Codigo de area telefonico */ 'area_code' => '', /** * Especifica las URL de retorno para el smartcheckout */ 'back_urls' => [ 'success' => '', 'failure' => '', 'pending' => '', ], // Indica en que caso de respuesta del pago se ejecutara una autorecarga // Por defecto: approved (el usuario pagador volvera automaticamente en caso de que el pago haya sido completado y aprobado) 'auto_return' => 'approved', ];
基本使用
要开始使用库,只需调用 facade MercadoPago(或其在 config.php
文件别名数组中的名称),调用方法 begin,该方法接受一个回调函数作为参数,该函数将接收交易本身作为参数,例如
\MercadoPago::begin(function($mp){ // agrega un item al procesamiento $mp->addItem([ 'title' => 'Prueba', // Titulo del item 'qtty' => 1, // Cantidad del item 'price' => 150.0, // Precio unitario 'currency' => 'USD', // MONEDA USADA PARA PAGAR 'id' => "MYAWESOMEPRODUCTID" // ID DEL PRODUCTO (PARA CONTROL INTERNO DE SU APLICACIÓN) ]); // OPCIONAL: el metodo backUrlAddQS agregara parametros adicionales a la URL de pago, dichos parametros seran devueltos al completar la transaccipon // usado para control interno de su propia aplicación, si desea agregar un token o ID de seguridad a su proceso $mp->backUrlAddQS([ 'foo' => "bar" ]); });
可以多次调用 addItem 方法,以添加所需加载到付款中的项目。最后,在其响应视图中
将可用 facade MercadoPago 的 initPoint 方法(视图代码示例)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Redirigiendo a MercadoPago para procesar su compra</title> </head> <body> <input type="hidden" name="redirect-mp" id="mp" value="{{ \MercadoPago::initPoint() }}"> <script> window.location = document.getElementById('mp').value </script> </body> </html>
支付网关返回的响应应在路由中进行控制,并在配置文件(config/mercadopago.php
)中添加。
处理响应
在相关响应路由(在配置文件中配置)中,调用 MPResponse 类并使用依赖注入来处理响应,例如
<?php ... use Gjae\MercadoPago\Contracts\MPResponse; class MercadoPagoController extends Controller { public function successResponse(MPResponse $request) { ... } }
注入的 MPResponse 对象将自动为您保存响应数据。
关联对象与付款
此外,您可以将模型与交易相关联,为此,请转到您的 Eloquent 模型类并实现包含在包中的 HasTransaction 接口和 HasTransactions trait
namespace App; ... use Illuminate\Database\Eloquent\Model; use Gjae\MercadoPago\Contracts\HasTransaction; use Gjae\MercadoPago\Traits\HasTransactions; class MyAwesomeModel extends Model implements HasTransaction{ use HasTransactions; ... }
完成此操作后,可以将实现 HasTransaction 接口和 HasTransactions trait 的任何类的对象(或对象数组)作为 begin 函数的第二个参数传递
\MercadoPago::begin(function($mp){ ... }, [ $HasTransactionObjects ]);
获取相关对象
实现 HasTransaction
接口和 HasTransactions
trait 的对象通过扩展 transactions 返回与该对象相关联的交易集合
$user = App\User::first(); $user->transactions;
注意事项
注入到控制器的 MPResponse 对象具有 getTransaction 方法,该方法返回接收到的交易数据
public function successResponse(MPResponse $request) { $transaction = $request->getTransaction(); }
注意
当配置文件中的 "local_debug" 选项为 true 时,不会发出带有 mercadopago URL 的 init_point;这是为了防止用户创建不会在网关中执行的交易,并可以轻松地测试功能,而无需等待 mercadopago 服务器的响应,当准备好在生产或沙盒模式下完整测试功能时,将此选项更改为 false
待办事项
- 当应用程序处于本地调试模式时发出异常