Day 2 - API 文件导览、 Postman 测试取得 Nonce

在进行串接前,首先需要有定义串接的规格,例如:串接的协定 (HTTP、或走 FTP 档案交换等等)、需要传送的栏位等等资料。国内比较少像国外服务通常有 Web 版的开放文件网页可以查询,反而常见交付的文件有 PDF 文件、Google Doc、Word... 还有看过用 Excel 写的...@@。

不论是那种文件类型,只要写的够清楚,就很棒。而丰支付提供的为 PDF 版的文件手册。

由於要开始介绍里头的重点及串接方法,如果没有完整版可以阅读,只靠截取片段图片,比较难跳跃式阅读找重点比对,因此把文件放到 GitHub,可以在这里阅读丰支付API文件

图2-1
图 2-1: 使用 Google Chrome 阅读 PDF 文件

关於阅读此份文档的工具,在此推荐直接使用 Google Chrome 打开即可。在左侧会有边栏的页面预览,很方便跳跃式的选择页面阅读。

API 文件条目

这份文件一共 55 页,我们快速看一下文件条目,先了解一下一共有几支 API 构成这整个刷卡流程,大概花个 10 分钟快速浏览,找到第 10 页,有提供 API 接口的资讯。

图1-2
*图 2-2: 文件条目,第四章节。

在第 10 页我们得知,一共有两支 API,在第 11 页则有测试卡号的资讯及注意事项。

各项 API 服务

https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order

取得 Nonce

https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Nonce

测试资讯

信用卡 测试用资料
测试卡号 4999-3700-0002-3145
有效期限(MM/YY) 12/30
後三码(CVV2) 880

图2-3
*图 2-3: 文件条目,第七章节。

文件里的第七章节,是 Order 这支 API 提供的四种功能。

图2-4
*图 2-4: 文件条目,第四章节。

Nonce 是一串验证 Request 来源有效性的杂凑值,依文件描述,它的效期为 60 秒。由於我们的服务器主机的 IP 位址是固定的,因此取得该 IP 位址的 Nonce 值,并使用 Nonce 值作为向 Order API 发送请求时的其中一个栏位,可以验证 IP 位址的有效性。

Postman 测试

先不管刷卡流程间的商业逻辑,光从以上资料可得知,没有 Nonce 是不行的,因此先从取得 Nonce 值的 API 作为切入点。

这个时候,还没有写任何程序码,我们可以先用像是 Postman 这类的工具快速测试一下 API 接受的是什麽样的请求,确定可以成功取得 Nonce 之後,再继续下一步。

图2-5
*图 2-5: 使用 Postman 测试 Nonce API。

一开始选择预设的 Content-Typeapplication/x-www-form-urlencoded 是不行的,改为 application/json 即可接通取得 Nonce 值。

第一个,也是唯一一个

Postman 在测试一般的 API 很好用,可以在测试时把每一条 API 文件化後分享给团队。不过在金融类型的 API 需要的栏位会有效期,且需要加密的签章栏位,无法那麽简单地使用 Postman 测试 Order API,不过我们经由这个简单测试得知: Content-Type 为 application/json,发送的资料栏位字串为 JSON 格式,可以成功拿到 Nonce,下一步就直接进入 Coding 了。

拿到 Nonce 後,接着呢?

你会发现整段串接流程会花最多时间在第 17 页「产生安全签章 Sign」的方法,需要算出 HashId 及产生 JSON 讯息内文。接下来的文章,会开始对这方面开始着墨。


本文更新於笔者的 TerryL 部落格,Day 2 - API 文件导览、 Postman 测试取得 Nonce,有兴趣可前往阅读及讨论。


<<:  Day 01 前言

>>:  DAY16 - [JS] 扩充功能 - 倒数计时,暂停、开始、结束

[DAY 25]建立bot抽签功能

这次开发一个之後活动可能会用到的功能叫抽签 只要输入/draw就随机抽一位公会在线上的成员 希望有了...

Day 3 - 类神经网路(一)

谈到机器学习, 一定会谈到神经元(英语:neuron) 神经元(neuron) 又名神经原或神经细胞...

Day09: 【TypeScript 学起来】物件型别 Object Types : Arrays / Function

Q: 如何反驳「工程师离开电脑之後就是个废物」的这个说法? A: 不不不,很多工程师在电脑前面也是...

Day4 用MR体验现实世界中办不到的事情或是事先体验将要做的事情

上两期说到VR和AR,这期来介绍介於他们两个之间的MR。 MR(混合实境):MR是一种介於VR(虚拟...

[NestJS 带你飞!] DAY17 - Injection Scopes

Nest 在大多数情况下是采用 单例模式 (Singleton pattern) 来维护各个实例,也...