hopsey / blue-media-connector
此包的最新版本(0.9)没有可用的许可信息。
BlueMedia API PHP 封装器
0.9
2017-03-09 10:06 UTC
Requires
- php: ^5.6 || ^7.0
- marc-mabe/php-enum: ^2.2
- rquadling/lalit: ^1.6
- zendframework/zend-eventmanager: ^3.0
- zendframework/zend-filter: ^2.7
- zendframework/zend-servicemanager: ^3.1
- zendframework/zend-uri: ^2.5
- zendframework/zend-validator: ^2.8
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. 额外配置
- 哈希算法
默认为 SHA256。可以通过添加一个实现 BlueMediaConnector\ValueObject\Hash\Algo\AlgoInterface
接口的类来自定义。
// PHP7 $bmService->getHashFactory()->setAlgo(new class implements AlgoInterface { public function hash($string) { return md5($string); } });
- 消息传输
默认为 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>