因为要陪老婆追剧鱿鱼游戏,所以还有几个测试还没写完,但大致上这个 PHP SDK 的 API 已经开好了。
可使用 Composer 直接安装。
composer require terrylinooo/sinopac-php-sdk
或者到 Sinopac PHP SDK下载後,导入本 SDK 的自动载入器。
<?php
include 'autoload.php';
以上方法二择一。
在 src
目录下的档案架构如下。
.
├── Exception
│ └── QPayException.php
├── QPay
│ ├── Algorithm.php
│ ├── Assertion.php
│ ├── Fields.php
│ ├── Foundation.php
│ ├── Http.php
│ └── Logger.php
└── QPay.php
class
主要的 Controller,有五个方法:
方法 | 功能 |
---|---|
createOrderByCreditCard | 建立使用信用卡付款的订单, createOrder 的别名方法 |
createOrderByATM | 建立使用 ATM 虚拟帐号付款的订单,createOrder 的别名方法 |
createOrder | 建立订单,参数 1 为 C 则是信用卡,A 为虚虚拟帐号。 |
queryOrders | 查询批次订单 |
queryOrderByToken | 使用 PayToken 查询单笔订单 |
其它的档案说明:
trait
各种演算法、加密、解密方法都放在这个特性。
trait
各种断言方法,和 API 相关的会丢出 QPayException
,开发者可以自己决定要不要用 try-catch 去补捉。这边会丢错代表即使用到收款平台的 API 也会回错误讯息,所以在这边除错即可。
class
定义 API 的输入栏位,长度、限制等等,提供给 Assertion
进行检查。
trait
基本方法在此,为 QPay 的逻辑分离。
class
cURL 的包装,基本上小小功能不需要装肥滋滋的 Guzzle,自己处理就好。
class
很受欢迎的 Log 记录套件 - Monolog 的包装,如果有使用 QPay->setLogger($logger)
注入 Monolog 的物件,则过程会写入 log 方便除错。
图 11-1: SDK 使用方法
$qpay = new QPay([
'shop_no' => 'NA0249_001',
'hash' => [
'86D50DEF3EB7400E',
'01FD27C09E5549E5',
'9E004965F4244953',
'7FB3385F414E4F91',
],
]);
$results = $qpay->createOrderByATM($data);
在实例化 QPay
类别时,可以直接注入设定值。
设定栏位 | 说明 |
---|---|
shop_no | 商店代码。 |
hash | 永丰金技术客服给的四组 hash |
或者也可以先实例化 QPay
类别,稍候再设定。
$qpay = new QPay();
$qpay->setShopNo('NA0249_001');
$qpay->setFirstHashPair('86D50DEF3EB7400E', '01FD27C09E5549E5');
$qpay->setSecondHashPair('9E004965F4244953', '7FB3385F414E4F91');
$results = $qpay->createOrderByATM($data);
这样就建虚拟付款订单了... ^^"
中间的加、解密过程 SDK 自动处理好罗。
$data
为传送的资料栏位,会於 Day 12 的文章详细说明喔。
图 11-2: SDK 使用方法测试
建单後的回覆也是解密後的结果,前十天讲的东西,基本上如果是用这支 SDK,可以不用看了... 直接看接下来我在 README 写的文件就好。
GitHub repository:
https://github.com/terrylinooo/sinopac-php-sdk
目前虽然上线了但还在 dev 的阶段,在还没 release 第一版之前先不要使用喔。接下来会花 2-3 天说明一些 API 文件细节的部分和 PHP SDK 设计的关系。详细的说明在下一阶段会尽快补齐。
本文更新於笔者的 TerryL 部落格,Day 11 - 丰收款非官方 PHP SDK 发布,有兴趣可前往阅读及讨论。
为了Google的icon还有未来应该会需要加入一些icon所以安装个好用的python包 cons...
首先在介绍自动化通知之前,需要介绍是如何被触发的。 触发器的设定也是跟着套用样板时候被设定。 具体可...
格式化输出 使用%字元,基本的格式为: Print(“ %输出格式 ” % (变数1,变数2……)...
我的编译器使用vscode在终端机下 vue create XXXX(档案名称)即可看到这个画面 (...
#本日尚未签到的按钮 if event.postback.data[0] == "本&qu...