iT邦幫忙

2021 iThome 鐵人賽

DAY 11
0

因為要陪老婆追劇魷魚遊戲,所以還有幾個測試還沒寫完,但大致上這個 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 10 - API 文件導覽總結 - 重點整理
下一篇
Day 12 - PHP SDK: 建立信用卡、虛擬帳號訂單
系列文
永豐金 API - 豐支付 PHP SDK 設計及 WooCommerce 電商串接實戰30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言