coder79 / laravel-paymob
Laravel-paymob 是一个用于通过 Paymob 支付网关处理支付的简单包。
Requires
- php: >=5.5.9
- guzzlehttp/guzzle: ~5.0|~6.0
- illuminate/support: 5.*
- laravel/framework: 5.*
- nesbot/carbon: ~1.0
Requires (Dev)
- fabpot/goutte: ~3.2
- phpunit/phpunit: ~4.0
This package is auto-updated.
Last update: 2024-09-11 07:04:31 UTC
README
PayMob(We Accept) 集成
目录
安装
通过 composer 需要
$ composer require coder79/laravel-paymob:dev-master
在 config/app.php 文件中
'providers' => [ ... Coder79\PayMob\PayMobServiceProvider::class, ... ]; 'aliases' => [ ... 'PayMob' => Coder79\PayMob\Facades\PayMob::class, ... ];
首先,在 WeAccept 门户 上创建一个账户,运行以下命令以生成 PayMob 配置文件
$ php artisan vendor:publish
然后,在 config/paymob.php 文件中填写凭据。确保在仪表板上创建一个 iframe 并获取用于支付请求的集成 ID。
在集成详细信息中填写处理回调和响应回调路由,使用 PayMobController 中的 processedCallback 和 invoice 方法中的路由
在 PayMob 服务器上进行交易步骤
- API 身份验证请求
- 订单注册请求
- 支付密钥生成请求
- 准备客户端代码以执行支付请求(Web 客户端和移动应用程序)
- 商家通知端点
- 交易响应端点
您可以通过参考PayMob 在线指南 获取更多信息。
1. API 身份验证请求(服务器端)
在此步骤中,您需要向 PayMob 的身份验证 API 发送 POST 请求以获取身份验证令牌
使用 PayMob Facade 来发送请求。
$auth = PayMob::authPaymob(); // Run this method to get a sample response of auth request. PayMob::sample('authPaymob');
此方法从 config/paymob.php 文件中获取凭据,因此首先填写 username 和 password 以进行此身份验证请求。
2. 订单注册请求(服务器端)
在此步骤中,您将在 Paymob Accept 上注册一个订单,以便您可以稍后使用交易支付。
$paymobOrder = PayMob::makeOrderPaymob( $auth->token, // this is token from step 1. $auth->profile->id, // this is the merchant id from step 1. $order->totalCost * 100, // total amount by cents/piasters. $order->id, // your (merchant) order id. $request->user()->name, // Order User Name. $request->user()->phone,// Order User phone. $request->user()->email // Order User email. ); // Run this method to get a sample response of make order request. PayMob::sample('makeOrderPaymob');
将返回的 paymob 订单 ID 存储在您的数据库中,以便您将来使用此 ID 进行交易。
3. 支付密钥生成请求(服务器端)
在此步骤中,您将获得一个 payment_key 令牌。此密钥将用于对您的支付请求进行身份验证。
$paymentKey = PayMob::getPaymentKeyPaymob( $auth->token, // from step 1. $order->totalCost * 100, // total amount by cents/piasters. $order->paymob_order_id, // paymob order id from step 2. // For billing data $user->email, // optional $user->firstname, // optional $user->lastname, // optional $user->phone, // optional $city->name, // optional $country->name // optional ); // Run this method to get a sample response of payment key request. PayMob::sample('getPaymentKeyPaymob');
4. 准备客户端代码以执行支付请求(Web 客户端和移动应用程序)(客户端)
既然您已经获得了支付密钥,您需要准备您的结账体验(即客户端代码)。
网站/网络应用程序的 Iframe
PayMob 推荐的 iframe
<form id="paymob_checkout"> <label for="">Card number</label> <input type="text" value="4987654321098769" paymob_field="card_number"> <br> <label for="">Card holdername</label> <input type="text" value="Test Account" paymob_field="card_holdername"> <br> <label for="">Card month</label> <input type="text" value="05" paymob_field="card_expiry_mm"> <br> <label for="">Card year</label> <input type="text" value="21" paymob_field="card_expiry_yy"> <br> <label for="">Card cvn</label> <input type="text" value="123" paymob_field="card_cvn"> <input type="hidden" value="CARD" paymob_field="subtype"> <input type="checkbox" value="tokenize" name="save card"> <label for="save card">save card</label> <input type="submit" value="Pay"> <br> </form>
<iframe src="https://accept.paymobsolutions.com/api/acceptance/iframes/{{config('paymob.iframe_id')}}?payment_token={{$paymentKey->token}}"></iframe>
移动客户端
对于移动应用程序,您需要导入 Accept 原生 iOS 或 Android SDK 以进行支付和/或保存卡详细信息。
请通过电子邮件 support@weaccept.co 请求所需的 SDK。有关更多信息,请访问 PayMob 移动指南
$payment = PayMob::makePayment( $paymentKey->token, // payment key token from step 3. $request->card_number, $request->card_holdername, $request->card_expiry_mm, $request->card_expiry_yy, $request->card_cvn, $order->paymob_order_id, // PayMob order id from step 2. $user->firstname, $user->lastname, $user->email, $user->phone ); // Run this method to get a sample response of make payment for API request. // processedCallback is for the post response to your processed callback route from PayMob. PayMob::sample('processedCallback'); // responseCallback is for the Get response to your response callback route from PayMob. PayMob::sample('responseCallback');
您可以使用一些 测试卡 进行测试支付。
您可以通过运行 PayMob::sample() 来查看可用的示例。
PayMobController
我们在 PayMobController 中有 4 个方法。
首先使用 checkingOut 方法显示带有 iframe 的支付表单页面。或者,对于移动客户端,简单地使用 payAPI 方法进行支付。
然后,我们有一个用于捕获 PayMob 服务器 POST 回调响应的 processedCallback 方法,以及用于捕获 GET 回调响应并显示您的发票页面的 invoice 方法。
将所有 #code ... 替换为您的逻辑。
别忘了为这些方法创建路由,并在 PayMob 控制面板的集成详情中保存 processedCallback 和 invoice 路由。
其他 PayMob 方法
有一些 GET 方法可以从 PayMob 获取您的数据。
1. 获取所有订单
PayMob::getOrders( $auth->token, // token from step 1. $page // optional for pagination, by default set to 1 );
2. 获取特定订单
PayMob::getOrder( $auth->token, // token from step 1. $order->paymob_order_id // PayMob order id from step 2. );
3. 获取所有交易
PayMob::getTransactions( $auth->token, // token from step 1. $page // optional for pagination, by default set to 1 );
4. 获取特定交易
PayMob::getTransaction( $auth->token, // token from step 1. $transactionId // PayMob transaction id from step 4. );
5. 对授权交易进行捕获
如果您的交易类型是 auth(不是 standalone),那么您必须通过 capture 方法捕获您的付款。
PayMob::capture( $auth->token, // token from step 1. $transactionId, // the returned id from step 4. $totalCost * 100 // total price/cost in cents/piasters. );
待办事项
- 发票页面。
- 示例交易周期。
- 获取所有订单/交易页面。
- 后端退款。
- 带有 JS 验证的 Iframe。
- 3D secure 顶级重定向请求。
许可
Laravel PayMob 是一个在 MIT 许可条款下免费分发的软件。