图 8-1: 文件第 31 页
今天要开始建立我们的第一笔测试订单。在文件第 31 页的测试说明提供了测试用的信用卡卡号及相关资讯,这里就不再重覆。文件中的小标题 - 商户传递参数,则是我们在前几天不断提到的讯息内文,Day 4 的讯息内杂凑、Day 7 的 Message 内文加密,用的就是商户传递参数中的栏位资料。
图 8-2: 栏位说明
文件中对於资料栏位的型态一栏,采用的是 COBOL 程序语言的资料型别标示,X
代表字串型态,9
代表数字型态,文件虽然没特别注明,但从栏位名称和描述还是可以猜到。
需要特别注意的有以下几点:
Amount
栏位的说明,因补上小数两位,金额数字的表示要多加两个 0
。PayType
的值为 A 则为虚拟帐号付款,文件中 ATMParam 段落的 ExpireDate
为必填。PayType
的值为 C 则为信用卡付款,文件中 CardParam 段落的 AutoBilling
为必填。
图 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: 测试建立订单
建单失败的话,会直接回一串错误讯息。建单成功的话,会回一串 JSON 字串,如下图。
图 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) - 拆解与命名
JQuery-锚点动画 什麽是锚点 & 锚点的作用是什麽 他是超连结的一种,可以帮助我们更快...
1.应用层级的状态应该集中到单个 store 对象中。 2.提交 mutation 是更改状态的唯一...
我Day 2有关於Unity介面的介绍,一般来说,学习顺序是Unity -> Unreal,因...
ARM Cortex Overview ARM Architecture 从第七代开始,分为三种配置...
最近都在全台跑面试 都没时间继续写.. 刚好面试某金控 面试官出了个回家作业给我 就花了一个下午把它...