crizprz / laravelmercadopago
此包可轻松集成Mercado Pago的Checkout Pro
v1.0.5
2021-05-23 18:19 UTC
Requires
- guzzlehttp/guzzle: ^7.0.1
README
此包可非常轻松地集成Mercado Pago的Checkout Pro
需求
推荐使用Composer v.2
guzzlehttp/guzzle
安装
通过Composer安装此包。
composer require crizprz/laravelmercadopago
或者将以下内容添加到您的composer.json
文件中
"require": { "crizprz/laravelmercadopago": "^1.0", },
配置
- 打开
config/app.php
,并将此行添加到您的Service Providers数组中。
crizprz\laravelmercadopago\Providers\LaravelMercadoPagoProvider::class,
- 打开
config/app.php
,并将此行添加到您的aliases数组中。
'MercadoPago' => crizprz\laravelmercadopago\Facades\MercadoPago::class,
- 发布资源。
php artisan vendor:publish --provider="crizprz\laravelmercadopago\Providers\LaravelMercadoPagoProvider"
如何使用
创建用户测试
- 要创建用户,我们必须用真实账户登录到Mercado Pago开发者
- 转到右上角部分,点击并选择您的集成
- 进入您的集成后,点击测试凭据,复制访问令牌,并将其放入
.env
文件中名为ACCESS_TOKEN_MP =
的变量中 - 在您的代码中的某个位置粘贴此代码,无论是路由还是运行中的控制器,此代码将打印两个测试用户,卖方和买方
use crizprz\laravelmercadopago\Facades\MercadoPago;
MercadoPago::CreateUsersTest();
这将返回一个包含两种类型用户的数组,我们必须很好地保存这些用户,因为付费市场每个账户只允许创建10个测试用户。
注意:只运行一次。
前述代码的示例输出
array:2 [▼ 0 => array:5 [▼ "id" => 752892812 "nickname" => "TESTE2VYDAPX" "email" => "test_user_84921269@testuser.com" "password" => "qatest3393" "type User" => "seller" ] 1 => array:5 [▼ "id" => 752890064 "nickname" => "TETE9884170" "email" => "test_user_45814566@testuser.com" "password" => "qatest6713" "type User" => "payer" ] ]
使用测试用户创建支付偏好
- 在Mercado Pago开发者中以测试用户登录
- 转到右上角部分,点击并选择您的集成
- 创建新的集成,填写表单,然后点击创建应用程序,点击生产密钥,复制访问令牌,并将其放入
.env
文件中名为ACCESS_TOKEN_MP =
的变量中
创建偏好
1.在项目中要实现支付按钮的地方粘贴以下代码
use crizprz\laravelmercadopago\Facades\MercadoPago; $preference = MercadoPago::CreatePreference([ 'auto_return' => 'approved', 'binary_mode' => true, 'back_urls' => [ "success" => route('mpsuccess'), "failure" => route('mpfailure'), "pending" => route('mppending') ], 'notification_url' => route('webhook'), 'items' => [ 'id' => '001', 'title' => 'prod 1', 'picture_url' => 'https://www.tusitio.com/images/products/prod1.jpg', 'description' => 'this is descriptions', 'category_id' => 'food', 'quantity' => 1, 'price' => 1000, ], 'payment_methods' => [ 'excluded_payment_methods' => array( array('id' => 'master'), // array('id' => 'visa'), ), 'excluded_payment_types' => array( array('id' => 'ticket') ), 'installments' => 12 ], 'payer' => [ 'name' => 'Cristian', 'last_name' => 'Lira Perez', 'email' => 'al221711754@gmail.com', 'phone' => [ 'area_code' => +52, 'number' => '7224738425' ], 'address' => [ 'zip_code' => 23492, 'street_name' => 'Calle cerrada de juerez', 'street_number' => '104' ] ], 'shipments' => [ 'cost' => 100, ], 'statement_descriptor' => 'Mi tienda online', ]);
- 访问API参考,创建偏好以了解数组中每个属性的含义
- 将数组值更改为您项目的值
创建支付按钮
- 将变量
$preference
返回到某个blade视图中,此变量已保存所有支付偏好,例如
return view('checkout',['preference' => $preference]);
- 在视图中渲染包的默认按钮
{{ MercadoPago::ButtonPay($preference->init_point) }}
或创建一个自定义支付按钮,并将其传递给init_point,它在$ preference
变量中存储,例如
<a class="btn btn-info mt-5" href="{{ $preference->init_point }}">Pay Now</a>
测试您的集成
- 阅读测试您的集成文档以获取它提供的测试卡
支付状态响应
支付成功
从成功支付返回到您的网站时执行此代码的代码在App\Http\Controllers\MercadoPagoController
控制器中的success方法中
public function success(Request $request) { // dd($request->all()); if ($request->status === 'approved') { $response = Http::get("https://api.mercadopago.com/v1/payments/{$request->payment_id}", [ 'access_token' => env('ACCESS_TOKEN_MP'), ])->json(); dd($response); } }
支付会返回到您的服务器的GET请求,因此我们将使用Request $request,其中包含所有支付数据,我们感兴趣的是payiment_id
示例回答
array:11 [▼ "collection_id" => "14694550173" "collection_status" => "approved" "payment_id" => "14694550173" "status" => "approved" "external_reference" => "null" "payment_type" => "credit_card" "merchant_order_id" => "2621979593" "preference_id" => "752892812-d318bf82-4eea-4748-af60-cd4ade381491" "site_id" => "MLM" "processing_mode" => "aggregator" "merchant_account_id" => "null" ]
我们将使用guzzle/huzzle进行GET请求,以找到已进行的支付,从而获取详情,例如金额、货币类型、买家数据等 ...
if ($request->status === 'approved') { $response = Http::get("https://api.mercadopago.com/v1/payments/{$request->payment_id}", [ 'access_token' => env('ACCESS_TOKEN_MP'), ])->json(); dd($response); }
在$response变量中,我们拥有所有成功支付的详细信息,利用这些信息我们可以发送电子邮件、推送通知、在Laravel中显示会话消息等。