hopsey/blue-media-connector

此包的最新版本(0.9)没有可用的许可信息。

BlueMedia API PHP 封装器

0.9 2017-03-09 10:06 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:47:33 UTC


README

BlueMedia API 的简单接口

支持的库

  • 启动交易 POST
  • 解析 ITN 消息。

如果更多的人对使用这个库感兴趣,我可以创建一些文档、单元测试、以及其他 API 功能的支持。目前它足以满足基本需求:)

此库基于 zendframework (v3) 构建

###I. 安装

composer require hopsey/blue-media-connector 

###II. API ####1. 初始化交易

use BlueMediaConnector\Transaction\RedirectMode;

$bmService = BlueMediaConnector\Factory::build("http://url.bm.pl/url", 123456, "verySecretString");
$bmService->makeTransaction(
    new RedirectMode(), // typ wywolania: RedirectMode - przekierowanie, jest jeszcze wywołanie w tle, niezaimplemenotwane
    1.50,       // float - kwota
    "Wplata",   // opis
    1,          // gatewayId
    "PLN",      // currency
    "example@email.com"   // customer email
);

调用将生成一个 preTransaction 事件,你可以订阅它。事件处理使用 zendframework/zend-eventmanager 模块。

订阅事件的示例

use BlueMediaConnector\Event\PreTransactionEvent;

$bmService->getEventManager()->attach(PreTransactionEvent::EVENT_PRE_TRANSACTION, function (PreTransactionEvent $event) {
    /** @var BlueMediaConnector\Message\InitTransactionMessage */
    $message = $event->getParam('message');
    $message->amount; // 1.50
    $message->currency; // PLN
    
    // ... do stuff here. np zapis do bazy, etc.
});

你也可以通过实现 Zend\EventManager\ListenerAggregateInterface 接口的对象来订阅事件

####2. ITN - 瞬时交易通知

状态变化通过连接到事件监听器的监听器来处理。首先定义监听器,然后通过调用 BmService::receiveItnResult($xmlContent) 方法来触发事件。方法将解析并准备响应,并检查发送的哈希值是否匹配。如果不匹配,将抛出 BlueMediaConnector\Message\InvalidHashException 异常。最后,将触发事件。

use BlueMediaConnector\Event\MessageReceivedEvent;

$transactionContent = base64_decode($_GET['transactions']);

$bmService->getEventManager()->attach(MessageReceivedEvent::EVENT_MESSAGE_RECEIVED, function (MessageReceivedEvent $event) {
    /** @var BlueMediaConnector\Message\ItnMessage */
    $message = $event->getParam('message');
    $messageArray = $message->toArray();
    $messageArray['transactions'][0]['status'] // pending, success, failure ...
    // ...
});

$bmService->receiveItnResult($transactionContent);

####3. 额外配置

  1. 哈希算法

默认为 SHA256。可以通过添加一个实现 BlueMediaConnector\ValueObject\Hash\Algo\AlgoInterface 接口的类来自定义。

// PHP7
$bmService->getHashFactory()->setAlgo(new class implements AlgoInterface {
    public function hash($string)
    {
        return md5($string);
    }
});
  1. 消息传输

默认为 XML。可以实现任何格式。

// PHP7
use BlueMediaConnector\Transport\TransportInterface;

$bmService->setTransport(new class implements TransportInterface {
    public function parse($content)
    {
        return json_decode($content);
    }
})

版权:Tomasz Chmielewski <tom(malpa)hop.ventures>