รันคำสั่งต่อไปนี้
composer require gjae/laravel-mercadopago
ในไฟล์ config/app.php
ของคุณให้เพิ่มบรรทัดต่อไปนี้ (เฉพาะรุ่น LARAVEL <= 5.4):
ในอาร์เรย์ผู้ให้บริการของคุณ ( ผู้ให้บริการ ):
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
ของคุณ) โดยเรียกเมธอด start ซึ่งมีพารามิเตอร์เป็นฟังก์ชันเรียกกลับที่จะรับธุรกรรมนั้นเอง เป็นพารามิเตอร์ เช่น:
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 ได้หลายครั้งตามที่คุณพิจารณาว่าจำเป็นเพื่อเพิ่มรายการที่คุณต้องเรียกเก็บจากการชำระเงิน สุดท้ายนี้ ในมุมมองการตอบกลับของคุณ
วิธีการ initPoint ของส่วนหน้าของ MercadoPago จะพร้อมใช้งาน (ตัวอย่างโค้ดมุมมอง):
<!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;
. . .
}
เมื่อทำเช่นนี้แล้ว คุณสามารถส่งผ่านเป็นพารามิเตอร์ที่สองไปยังฟังก์ชัน start ซึ่งเป็นอ็อบเจ็กต์ (หรืออาร์เรย์ของอ็อบเจ็กต์) ของคลาสใดๆ ที่ใช้อินเทอร์เฟซ HasTransaction:
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" เป็นจริง init_point จะไม่ออกให้กับ Mercadopago URL ทั้งนี้เพื่อให้ผู้ใช้ไม่สร้างธุรกรรมที่จะไม่ดำเนินการภายในเกตเวย์ และสามารถทดสอบการดำเนินการอย่างใจเย็นโดยไม่ต้องรอการตอบสนองจากเซิร์ฟเวอร์ Mercadopago โดยไม่จำเป็น เมื่อเขา พร้อมที่จะทดสอบการทำงานเต็มรูปแบบไม่ว่าจะใช้งานจริงหรือในโหมดแซนด์บ็อกซ์ ให้เปลี่ยนตัวเลือกนี้เป็นเท็จ