mtgofa/laravel-paymob

Laravel PayMob 在线支付网关包

3.0 2024-02-08 12:51 UTC

This package is auto-updated.

Last update: 2024-09-08 14:16:04 UTC


README

一个 Laravel 在线支付网关。

目录

  1. 安装

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

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

  4. PayMob Postman 集合

  5. 其他 PayMob 方法

  6. 待办事项

  7. 许可证

安装

通过 composer 安装

composer require mtgofa/laravel-paymob

Laravel<=5.* 在 config/app.php 文件中

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

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

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

$ php artisan vendor:publish --provider="MTGofa\PayMob\PayMobServiceProvider"

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

在集成详细信息中填写已处理回调和响应回调路由,与 PayMobController 中的 processedCallbackinvoice 方法对应的路由

在 PayMob 服务器上进行交易步骤

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

有关更多信息,请参阅 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 文件中获取凭据,因此首先填写 usernamepassword 以进行此认证请求。

2. 订单注册请求(服务器端)

在此步骤中,您将在 Paymob Accept 上注册一个订单,以便您可以使用交易来支付它。

$paymobOrder = PayMob::makeOrderPaymob(
    $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(
    $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方法进行支付。

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

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

别忘了为这些方法设置路由,并将processedCallbackinvoice路由保存在PayMob仪表板中的集成详情中。

PayMob Postman 集合

这里有一个Postman集合,用于PayMob请求。

其他 PayMob 方法

有一些GET方法可以用来从PayMob获取数据。

1. 获取所有订单

PayMob::getOrders(
    $page // optional for pagination, by default set to 1
);

2. 获取特定订单

PayMob::getOrder(
    $order->paymob_order_id // PayMob order id from step 2.
);

3. 获取所有交易

PayMob::getTransactions(
    $page // optional for pagination, by default set to 1
);

4. 获取特定交易

PayMob::getTransaction(
    $transactionId // PayMob transaction id from step 4.
);

5. 对授权交易进行捕获

如果您的交易类型是auth(不是standalone),那么您必须通过capture方法进行支付捕获。

PayMob::capture(
    $transactionId, // the returned id from step 4.
    $totalCost * 100 // total price/cost in cents/piasters.
);

待办事项

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

许可证

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