gjae/laravel-mercadopago

0.1.0 2020-05-12 17:43 UTC

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

待办事项

  • 当应用程序处于本地调试模式时发出异常