因為要陪老婆追劇魷魚遊戲,所以還有幾個測試還沒寫完,但大致上這個 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 發佈,有興趣可前往閱讀及討論。