Day 11 - 丰收款非官方 PHP SDK 发布

因为要陪老婆追剧鱿鱼游戏,所以还有几个测试还没写完,但大致上这个 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

Shinpac/QPay class

主要的 Controller,有五个方法:

方法 功能
createOrderByCreditCard 建立使用信用卡付款的订单, createOrder 的别名方法 
createOrderByATM 建立使用 ATM 虚拟帐号付款的订单,createOrder 的别名方法
createOrder 建立订单,参数 1 为 C 则是信用卡,A 为虚虚拟帐号。
queryOrders 查询批次订单
queryOrderByToken 使用 PayToken 查询单笔订单

其它的档案说明:

Shinpac/QPay/Algorithm trait

各种演算法、加密、解密方法都放在这个特性。

Shinpac/QPay/Assertion trait

各种断言方法,和 API 相关的会丢出 QPayException,开发者可以自己决定要不要用 try-catch 去补捉。这边会丢错代表即使用到收款平台的 API 也会回错误讯息,所以在这边除错即可。

Shinpac/QPay/Fields class

定义 API 的输入栏位,长度、限制等等,提供给 Assertion 进行检查。

Shinpac/QPay/Foundation trait

基本方法在此,为 QPay 的逻辑分离。

Shinpac/QPay/Http class

cURL 的包装,基本上小小功能不需要装肥滋滋的 Guzzle,自己处理就好。

Shinpac/QPay/Logger class

很受欢迎的 Log 记录套件 - Monolog 的包装,如果有使用 QPay->setLogger($logger) 注入 Monolog 的物件,则过程会写入 log 方便除错。

使用方法

图 11-1
图 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
图 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 发布,有兴趣可前往阅读及讨论。


<<:  Day 11:架设 Grafana (0)

>>:  Day10 NodeJS-Pipe

D22 Django-bootstrap 网站美化工程 - fontawesomefree icon

为了Google的icon还有未来应该会需要加入一些icon所以安装个好用的python包 cons...

Day 21. Zabbix 自动化通知介绍

首先在介绍自动化通知之前,需要介绍是如何被触发的。 触发器的设定也是跟着套用样板时候被设定。 具体可...

[Day2]-基本的输出入

格式化输出 使用%字元,基本的格式为: Print(“ %输出格式 ” % (变数1,变数2……)...

Day2安装vue我选择的是vue3!!

我的编译器使用vscode在终端机下 vue create XXXX(档案名称)即可看到这个画面 (...

DAY20 本日尚未签到、时刻表按钮实现

#本日尚未签到的按钮 if event.postback.data[0] == "本&qu...