Day 8 - 使用 Order API 建立测试订单

图 8-1
图 8-1: 文件第 31 页

今天要开始建立我们的第一笔测试订单。在文件第 31 页的测试说明提供了测试用的信用卡卡号及相关资讯,这里就不再重覆。文件中的小标题 - 商户传递参数,则是我们在前几天不断提到的讯息内文,Day 4 的讯息内杂凑、Day 7 的 Message 内文加密,用的就是商户传递参数中的栏位资料。

商户传递参数

图 8-2
图 8-2: 栏位说明

文件中对於资料栏位的型态一栏,采用的是 COBOL 程序语言的资料型别标示,X 代表字串型态,9 代表数字型态,文件虽然没特别注明,但从栏位名称和描述还是可以猜到。

需要特别注意的有以下几点:

  • Amount 栏位的说明,因补上小数两位,金额数字的表示要多加两个 0
  • 括号中的数字为栏位长度,在实作的过程中都必须检查,尤其是字串栏位,超过限制的要截断,以免格式错误而送单失败。
  • PayType 的值为 A 则为虚拟帐号付款,文件中 ATMParam 段落的 ExpireDate 为必填。
  • PayType 的值为 C 则为信用卡付款,文件中 CardParam 段落的 AutoBilling 为必填。

流程实作

图 8-3
图 8-3: 测试程序

第 28~50 行 是模拟的测试资料。
第 52 行 透过 SDK 的 getHashId 方法算出 HashId。
第 53 行第 2~24 行的 getNonce 方法向 Nonce API 取得效期 60 秒的 Nonce。基本上每次发动请求,都会向 Nonce API 拿一次。
第 54 行 透过 SDK 的 getIV 方法算出 IV 值。
第 55 行 透过 SDK 的 getSign 方法算出 Sign 值。
第 56 行 透过 SDK 的 aesEncrypt 方法算出加密後的讯息本文。

第 58~68 行 是我们要传给 Order API 的资料阵列,透过第 72 行的 json_encode 转成 JSON 本文。

测试结果

图 8-4
图 8-4: 测试建立订单

建单失败的话,会直接回一串错误讯息。建单成功的话,会回一串 JSON 字串,如下图。

图 8-5
图 8-5: API 回应字串

Order API 的回传字串看来,Message 栏位也是加密过的 16 进位字串。

流程总结

透过今天的文章可以知道,其实比较复杂的栏位处理都在前几天的文章中介绍了,透过 TTD (test-driven development) 的开发方式,边写文章编测试来写文章,到今天 PHP SDK 也已经写好了,即将放到 GitHub 分享给大家使用。

在明天的文章中,将进行解密 Message 栏位的流程介绍。


本文更新於笔者的 TerryL 部落格,Day 8 - 使用 Order API 建立测试订单,有兴趣可前往阅读及讨论。


<<:  那些被忽略但很好用的 Web API / ImageCapture

>>:  Day 7 - Function 时空旅行 (2) - 拆解与命名

铁人赛 Day26 -- 一定要知道的JQuery (二) -- 锚点动画

JQuery-锚点动画 什麽是锚点 & 锚点的作用是什麽 他是超连结的一种,可以帮助我们更快...

33.Vuex项目结构

1.应用层级的状态应该集中到单个 store 对象中。 2.提交 mutation 是更改状态的唯一...

Day 21. Unity 介面与Unreal Engine介面比较

我Day 2有关於Unity介面的介绍,一般来说,学习顺序是Unity -> Unreal,因...

Day.9 进入 ARM 世界: ARM Cortex-M 暂存器介绍

ARM Cortex Overview ARM Architecture 从第七代开始,分为三种配置...

C# 回家作业(1)

最近都在全台跑面试 都没时间继续写.. 刚好面试某金控 面试官出了个回家作业给我 就花了一个下午把它...