queen-tech-solution/laravel-paymob

基于baklysystems的Laravel PayMob在线支付网关包

1.3 2017-12-18 14:42 UTC

This package is auto-updated.

Last update: 2024-09-16 15:48:24 UTC


README

一个Laravel在线支付网关。

目录

  1. 安装

  2. 在PayMob服务器上执行交易的步骤

    1. API身份验证请求(服务器端)
    2. 订单注册请求(服务器端)
    3. 支付密钥生成请求(服务器端)
    4. 准备客户端代码以执行支付请求(Web客户端和移动应用程序)(客户端)
      1. 网站/web应用中的iframe
      2. 移动客户端
  3. PayMobController

  4. PayMob Postman集合

  5. 其他PayMob方法

  6. 待办事项

  7. 许可证

安装

通过composer要求

$ composer require baklysystems/laravel-paymob

config/app.php 文件中

'providers' => [
    ...
    BaklySystems\PayMob\PayMobServiceProvider::class,
    ...
];

'aliases' => [
    ...
    'PayMob' => BaklySystems\PayMob\Facades\PayMob::class,
    ...
];

首先,在WeAccept门户上创建一个账户,运行以下命令以生成PayMob配置文件

$ php artisan vendor:publish    

然后在 config/paymob.php 文件中填写凭据。确保在仪表板上创建一个iframe并获取支付请求的集成ID。

在集成详情中填写处理回调和响应回调路由,使用 PayMobController 中的 processedCallbackinvoice 方法的路由

在PayMob服务器上执行交易的步骤

  1. API身份验证请求
  2. 订单注册请求
  3. 支付密钥生成请求
  4. 准备客户端代码以执行支付请求(Web客户端和移动应用程序)
  5. 商户通知端点
  6. 交易响应端点

有关更多信息,请参阅PayMob在线指南

1. API身份验证请求(服务器端)

在此步骤中,您需要向PayMob的身份验证API发出POST请求以获取身份验证令牌

使用PayMob外观进行请求。

$auth = PayMob::authPaymob();
// Run this method to get a sample response of auth request.
PayMob::sample('authPaymob');

此方法从 config/paymob.php 文件中获取凭据,因此请先填写 usernamepassword 以执行此身份验证请求。

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.
);
// 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客户端和移动应用程序)(客户端)

现在您已获得支付密钥,您需要准备您的结账体验(即客户端代码)。

网站/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 方法为移动客户端进行支付。

然后,我们有 processedCallback 方法来捕获来自PayMob服务器的 POST 回调响应,以及 invoice 方法来捕获 GET 回调响应并显示您的发票页面。

将所有 #code ... 替换为您的逻辑。

别忘了为这些方法创建路由,并将 processedCallbackinvoice 路由保存在 PayMob 控制台的集成详情中。

PayMob Postman集合

有一个用于 PayMob 请求的 Postman 收集

其他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.
);

待办事项

  1. 发票页面。
  2. 示例交易周期。
  3. 获取所有订单/交易页面。
  4. 从后端进行退款。
  5. 带有 JS 验证的 Iframe。
  6. 3D secure 的顶级重定向请求。

许可证

Laravel PayMob 是一个在 MIT 许可证条款下分发的免费软件。