要产生sign必须要先有Nonce、HASH ID、讯息内文,
Nonce、HASH ID都已经做完了,讯息内文我就先用规格书给的OrderCreate范例好了
这边看到 要计算sign,依规则:
1.移除有空值的参数
2.移除多节点参数,如:CardParam
3.依据参数名称将参数由A~Z排序
4.将各栏位转成 PropertyName=Value 的格式, 并以"&"串接成字串
5.以SHA256计算出sign,需转大写
好多规定
以下是规格书给的内文范例,就拿它来实际跑一次流程,比较容易理解规则
{
"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
把规则搞懂之後,就来用程序实作吧!
>>: 2.4.7 Design System - Dropdown
前言 在学习程序语言的过程中,应该都有听过物件导向程序设计(Object-oriented prog...
这次只有针对 RV31I 指令做解码, 原本希望能让这次加入的 INSTRUCTION_DECODE...
大部分文章介绍的禁用返回键方法都只适用於Activity: public boolean onKey...
昨天介绍完硬碟管理,来实作吧~ TIPS: Array在unRaid指的是资料池,并非POOL(在u...
哈罗~ 昨天实作了DNS列举技术的常用指令nslookup, 今天再继续实作其他列举的工具... D...