michalrokita/blue-media-sdk

PHP 库,用于与 Blue Media API 一起使用

dev-master 2020-04-23 10:41 UTC

This package is auto-updated.

Last update: 2024-09-23 20:08:42 UTC


README

Build Status PHP Version

在最近的项目中,客户要求我在我们的 PHP 平台上实现 BlueMedia 支付。由于该公司只提供移动平台 SDK,我决定自己编写一个简单的 SDK,该 SDK 将覆盖 BlueMedia API 的文档。

安装(Composer)

  composer require michalrokita/blue-media-sdk:dev-master

文档

1. 配置 BMService

  $serviceUrl = 'https://valid-url.com';
  $serviceId = 'test';
  $sharedKey = 'test';
  
  $bmService = BMFactory::build($url, $serviceId, $sharedKey);

2. 接收 ITN/IPN/ISTN 通知

ITN 通知包含 serviceID、交易参数和哈希。getNotification 方法验证通知的哈希,如果正确,则返回 交易参数,作为数组。为了整个操作的顺利进行,Blue Media 需要一个包含相应 XML 的响应(见第 2.1 点)。

  $notification = $bmService->receiver()->getNotification();

2.1 ITN/IPN/ISTN 通知确认接收

在代码中根据通知数据执行相应的操作后,我们必须通知 Blue Media 我们已收到消息。为此,需要调用以下代码

  $bmService->receiver()->confirmReceivingNotification();

此方法将根据之前接收到的通知生成相应的 XML 代码,然后通过 echo 命令返回带有相应头部的代码。因此,不要自行设置头部。

3. 生成无购物车支付会话链接

首先,需要初始化一个新的 Transaction 类实例,该实例存储有关交易的数据。创建实例时,只需提供根据 Blue Media 规范创建会话所需的参数。可以通过内置的 setter 将可选参数添加到实例中。

由于 Blue Media 接收的金额是转换为字符串的 float,因此在 Transaction 构造函数中需要传递 float。我们不会对这个数字进行任何操作,也不需要精确度,因此我们可以使用 float。

  $transaction = new Transaction('orderID', 100.00);

注意命名空间: michalrokita\BlueMediaSDK\Transactions --> use michalrokita\BlueMediaSDK\Transactions\Transaction;

然后,要生成链接,需要调用以下代码

  $paymentLink = $bmService->payment()->generatePaymentLink($transaction);

4. 处理用户从 Blue Media 的重定向

为了获取订单数据并在后台自动验证哈希,请调用以下代码。如果哈希授权出错,该方法将抛出异常。

  $serviceId = $bmService->callback()->getServiceId();
  $orderId = $bmService->callback()->getOrderId();
  $amount = $bmService->callback()->getAmount();