[Day 16] - 初探永丰银行线上收款API - 丰收款 - Sign值计算(1)

https://ithelp.ithome.com.tw/upload/images/20210930/20128973FOhUbQQ3jl.png

要产生sign必须要先有Nonce、HASH ID、讯息内文,
Nonce、HASH ID都已经做完了,讯息内文我就先用规格书给的OrderCreate范例好了

这边看到 要计算sign,依规则:

1.移除有空值的参数
2.移除多节点参数,如:CardParam
3.依据参数名称将参数由A~Z排序
4.将各栏位转成 PropertyName=Value 的格式, 并以"&"串接成字串
5.以SHA256计算出sign,需转大写

好多规定/images/emoticon/emoticon06.gif

以下是规格书给的内文范例,就拿它来实际跑一次流程,比较容易理解规则

{
 "ShopNo": "BA0026_001",
 "OrderNo": "C201804300001",
 "Amount": 50000,
 "CurrencyID": "TWD",
 "PayType": "C",
 "CardParam": { "AutoBilling": "Y" },
 "PrdtName": "信用卡订单",
 "ReturnURL": "http://10.11.22.113:8803/QPay.ApiClient/Store/Return",
 "BackendURL": "http://10.11.22.113:8803/QPay.ApiClient/AutoPush/PushSuccess"
}

首先,要移除空值、多节点参数,并且排序:

{
 "Amount": 50000,
 "BackendURL": "http://10.11.22.113:8803/QPay.ApiClient/AutoPush/PushSuccess",
 "CurrencyID": "TWD",
 "OrderNo": "C201804300001",
 "PayType": "C",
 "PrdtName": "信用卡订单",
 "ReturnURL": "http://10.11.22.113:8803/QPay.ApiClient/Store/Return",
 "ShopNo": "BA0026_001",
}

接着,转成 PropertyName=Value 的格式,会是这样
Amount=50000&BackendURL=http://10.11.22.113:8803/QPay.ApiClient/AutoPush/PushSuccess&CurrencyID=TWD&OrderNo=C201804300001&PayType=C&PrdtName=信用卡订单&ReturnURL=http://10.11.22.113:8803/QPay.ApiClient/Store/Return&ShopNo=BA0026_001

然後把nonce、hash ID加在後面
Amount=50000&BackendURL=http://10.11.22.113:8803/QPay.ApiClient/AutoPush/PushSuccess&CurrencyID=TWD&OrderNo=C201804300001&PayType=C&PrdtName=信用卡订单&ReturnURL=http://10.11.22.113:8803/QPay.ApiClient/Store/Return&ShopNo=BA0026_001NjM2NjY5MDQ3OTQwMzIuMTphZmJjODBhOTM5NzQ1NjMyNDFhZTczMjVjYzg0Mjg5ZjQxYTk2MWI2ZjNkYTA0NDdmOTRhZjU3ZTIzOWJlNDgz4DA70F5E2D800D50B43ED3B537480C64

转成SHA256产生的值转大写就得到sign了
379E0EB5741139418868C95EE22BF298D656D096EF46EC76B65AD3A0A967314E

把规则搞懂之後,就来用程序实作吧!


<<:  [DAY 15] Route 53 part 2

>>:  2.4.7 Design System - Dropdown

【Day 22】Class 类别

前言 在学习程序语言的过程中,应该都有听过物件导向程序设计(Object-oriented prog...

RISC-V: 指令解码器

这次只有针对 RV31I 指令做解码, 原本希望能让这次加入的 INSTRUCTION_DECODE...

Android:在Fragment禁用返回键最简易的方法

大部分文章介绍的禁用返回键方法都只适用於Activity: public boolean onKey...

硬碟管理实作

昨天介绍完硬碟管理,来实作吧~ TIPS: Array在unRaid指的是资料池,并非POOL(在u...

【Day11】列举技术的实作 ─ 另外那篇

哈罗~ 昨天实作了DNS列举技术的常用指令nslookup, 今天再继续实作其他列举的工具... D...