iT邦幫忙

2021 iThome 鐵人賽

DAY 3
1
永豐金融APIs

釋放你的潛能用技能交易吧!系列 第 3

[Day03] 第三章- 初探金流API文件-2 (hashid透過nodejs實作)

  • 分享至 

  • xImage
  •  

前言

好啦~昨天測試了nonce的方法
今天來談談剩下需要的api參數
並且來透過容易上手的nodejs框架express
包裝成api形式讓大家感受
一步步完成呼叫永豐api流程

實作

目前還尚缺hashid,sign,IV,加密後的mseeeage
今天先把hashID包裝成api吧!! (由永豐提供的四組hash每兩組要透過xor運算在連起來形成)

雖然hashID很簡單實作
並且永豐也有提供加解密平台來
可以直接輸入四組自己的hash拿到hashID
不過我們既然都要包裝api了
那就自己幹一個api吧

首先安裝nodejs (官方連結如下)
https://nodejs.org/en/
可選擇LTS 版本比較穩定
我這邊環境是使用v15.11.0

接者打開一個資料夾
透過command line輸入

npm init -y

先把package.json建立好

安裝express

npm i -S express

接者我們就可以把今天code上上去拉
前端傳送四組hash
這時我們必須要把字串轉成16進字的buffer
Buffer.from是nodejs裡面提供的function
再來透過 ^ 運算值我們就可以做xor
最後再透過toString('hex')轉回字串
包裝成hashid的restful api
回傳的string記得用toLocaleUpperCase把它都變成大寫字符喔!

程式碼如下

var express = require('express')

var app = express()

app.use(express.json()) // for parsing application/json
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded


function xor(hex1, hex2) {
  const buf1 = Buffer.from(hex1, 'hex');
  const buf2 = Buffer.from(hex2, 'hex');
  const bufResult = buf1.map((b, i) => b ^ buf2[i]);
  return bufResult.toString('hex');
}

app.post('/hashid', function (req, res, next) {
	const a = xor(req.body.A1,req.body.A2)
	const b = xor(req.body.B1,req.body.B2)
	const result =  a + b
  res.send(result.toLocaleUpperCase())
})

app.listen(8888)

這時候我們可以用postman測試是否有成功

這樣看不出來我們算的是否正確
透過永豐提供的計算機驗算吧!

這邊可以看到我們算的AESKey是正確的

今天先到這邊結束吧!
看看是否明天可以把剩下參數的api補完
我們就直接進行主要交易的服務撰寫吧!


上一篇
[Day02] 第二章- 初探金流API文件-1
下一篇
[Day04] 第四章- 初探金流API文件-3 (sign透過nodejs實作)
系列文
釋放你的潛能用技能交易吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言