قم بتشغيل الأمر التالي
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
الخاص بك)، واستدعاء طريقة البدء التي تحتوي كمعلمة على وظيفة رد الاتصال التي ستتلقى المعاملة نفسها كمعلمة، على سبيل المثال:
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;
. . .
}
بعد القيام بذلك، يمكنك تمرير المعلمة الثانية إلى وظيفة البدء، وهو كائن (أو مجموعة من الكائنات) من أي فئة تنفذ واجهة 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 بعنوان URL الخاص بـ Mercadopago، وذلك حتى لا يقوم المستخدم بإنشاء معاملات لن يتم تنفيذها داخل البوابة ويمكنه اختبار العملية بهدوء دون انتظار ردود من خادم Mercadopago دون حاجة، عندما يكون كذلك جاهز لاختبار التشغيل الكامل سواء في الإنتاج أو في وضع الحماية، قم بتغيير هذا الخيار إلى خطأ