michalrokita / blue-media-sdk
PHP 库,用于与 Blue Media API 一起使用
Requires
- php: >=7.1
- ext-json: *
- ext-libxml: *
- ext-simplexml: *
- digitickets/lalit: 3.1.0
- guzzlehttp/guzzle: ~6.0
Requires (Dev)
- phpunit/phpunit: ^9
This package is auto-updated.
Last update: 2024-09-23 20:08:42 UTC
README
在最近的项目中,客户要求我在我们的 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();