Day 4 - 安全签章: 讯息内文杂凑

图 4-1
图 4-1: 各栏位资料范例

安全签章的要件,我们已经拿到 Nonce 及 HashId 了,接下来还需要内文杂凑。我们来看看 API 文件对於取得内文杂凑的描述。

图 4-2
图 4-2: 文件第 19 页。

文件这一段的重点为,空值的参数(空白、空阵列)以及多节点参数(指的是值非为字串、数字,其值为还有下一层的阵列或物件)都必须移除,接着对栏位名称进行排序。

讯息内文

真正要传给丰支付 API 的订单资料栏位,称为讯息内文。

原始资料结构

图 4-3
图 4-3: 范例 - 建立订单的资料结构。

讯息内文原始的资料如上图,经过处理後如下图。

杂凑处理

图 4-4
图 4-4: 范例 - 排序及去除空栏位及多节点栏位。

接着把过滤後的资料转成网址型态的字串,但不要有 RFC1738 或 RFC3986 编码。

图 4-5
图 4-5: 范例 - PHP 函式参考。

PHP 的开发者可以使用 http_build_query 函式将阵列转换为网址型态的字串,再使用 urldecode 还原为未编码字串。

图 4-6
图 4-6: 范例 - 内容杂凑後字串。

如此一来,就得到了讯息内文的杂凑了。

流程总结

总结今天的文章,讯息内文杂凑流程可以简化为下图:

图 4-7
图 4-7: 讯息内文杂凑流程。

在得到讯息内文杂凑的字串後,搭配前两天拿到的 Nonce 及 HashId,要来计算出安全签章 Sign 了。明天的文章,一样会有详细的图文说明如何使用这三段字串资料去算出安全签章 Sign,我们明天见罗 ^^


本文更新於笔者的 TerryL 部落格,Day 4 - 安全签章: 讯息内文杂凑,有兴趣可前往阅读及讨论。


<<:  Day 6 Dart语言-变数与常数

>>:  Day 03: 有意义的命名、好的注解、垂直 & 水平编排

[Day. 29] Codeigniter 底底底底底霸个

现在来测试一下我们写出来的网页~ Bug1 发现注册之後只会看到"success"...

[Day26]约束规则、更改结构

在Oracle资料库中有两种方式可以定义约束规则(作用相同): 栏位层次约束(行内规范):将规定写在...

Day 13 - Kotlin的集合(2)

Day 11 - Kotlin的函式(2) 昨天我们讲了list集合,以及如何取得数值,今天我们要继...

Day1-介绍与开始

嗨大家好~我是凯西!接下来是我开学的三十天实力增进计画的纪录 规划上会刷leetcode加强我的py...

Day23 Gin with i18n

What is i18n? i18n为Internationalization的缩许,取概要和结尾文...