運行以下命令
composer require gjae/laravel-mercadopago
在您的config/app.php
檔案中新增以下行(僅適用於 LARAVEL 版本 <= 5.4):
在您的服務提供者數組(providers)中:
Gjae MercadoPago MPServiceProvider::class,
將以下外觀新增至您的別名清單(僅適用於 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 ' ,
];
要開始使用該函式庫,您只需要呼叫 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 方法,以將需要收費的項目新增至付款。最後,在您的回覆視圖中
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 特徵:
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 介面的任何類別的物件(或物件陣列)作為第二個參數傳遞給 begin 函數:
MercadoPago:: begin ( function ( $ mp ){
. . .
}, [ $ HasTransactionObjects ]);
實作HasTransaction
介面和HasTransactions
特徵的物件具有事務擴展,該擴展傳回與所述物件相關的事務集合:
$ 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。