我朋友認為可以文章可以再補齊一點教學
還有postman的使用方法
今天目標是
postman現在使用好像會強制註冊
這邊教學會把使用到的功能說明一下
它有團隊的設定及環境設定如果進階用法以後有用到也會補上喔!! :)
postman使用的
點開上方輸入您的主機位置跟port號以及api的path
像我這邊是
localhost:8888/messeage
通常post會帶資料
可以在這邊輸入text或是選擇raw->json格式傳送
或者是有token帶入後端可以從header帶入
接者就可以按傳送摟
可以觀察你的api response 以及status(通常成功會設定200)
通常postman顯示的reponse可以選擇pretty版本(html排版)
或是raw data可以調整
可依照喜歡的排版方式選擇喔
今天第一個步驟會用到前面的sha256套件
把nonce 透過sha256再取最後16個字元
取字元的方法可以使用substring
const IV = sha256(nonce).substr(-16,16).toLocaleUpperCase()
code比較簡單來直接驗證一下看看吧!
IV製作完成就可以做加密message吧!!
永豐的作法會把message json當作文本
加上hashid當作key
演算法使用aes-256-cbc(簡單說明透過此演算法可以保證文本唯一性,並透過IV值控制隨機性增加安全性!!)
IV當作初始畫向量(Initialization vector)
詳細的說明字麻煩各位爬文拉XD
這邊簡單說明一下
好啦 廢話說完開始摟
今天要加密的原始message就是這個
{"ShopNo":"NA0001_001","OrderNo":"201807111119291750","Amount":50000,"CurrencyID":"TWD","PayType":"C","ATMParam":{},"CardParam":{"AutoBilling":"N","ExpMinutes":30},"PrdtName":"信用卡訂單","ReturnURL":"http://10.11.22.113:8803/QPay.ApiClient-Sandbox/Store/Return","BackendURL":"https://sandbox.sinopac.com/funBIZ.ApiClient/AutoPush/PushSuccess"}
提供永豐加密的nonce
雖然nonce應該是每次交易要get api的一次性value
但這邊為了驗算使用固定的const value
正式開發會轉成fetch api 在做加密喔!!
NjM2NjY5MDQ3OTQwMzIuMTphZmJjODBhOTM5NzQ1NjMyNDFhZTczMjVjYzg0Mjg5ZjQxYTk2MWI2ZjNkYTA0NDdmOTRhZjU3ZTIzOWJlNDgz
這邊是永豐提供的四組hash
已經變成hashid的樣子
4DA70F5E2D800D50B43ED3B537480C64
nodejs 請先把module載入
const {
scrypt,
randomFill,
createCipheriv
} = require('crypto');
完整的messeage code
app.post('/messeage', async function (req, res, next) {
const IV = sha256(nonce).substr(-16,16).toLocaleUpperCase()
const cipher = createCipheriv('aes-256-cbc',hashid, IV);
let encrypted = cipher.update(msg, 'utf8', 'hex');
encrypted += cipher.final('hex');
const result = encrypted.toLocaleUpperCase()
console.log(encrypted);
res.send(result)
})
透過前面的IV值方法
接者我們選擇nodejs提供的原生套件來做加密吧
詳細說明可以參考
這邊只要設定aes-256-cbc演算法
把前面hashid跟初始向量IV帶入
接者別忘了選擇utf8 hex十六進位模式輸出喔!
到今天為止
把所有參數都做完了並包裝成api的形式
雖然很多值都是為了驗證以固定形式出現
但是為了記錄及驗證算法無誤先這樣的方式出現
以後開發服務會以動態方式
fetch nonce來做真正的串接喔!!
好啦 希望明天就可以開始探討我們服務的架設拉!!
如果有可以討論的環節也可以留言喔!
或是希望我補充的~~
如果我在未來寫code有可以改善或是增加的功能也可以提看看
如果我有餘力會把它完成的!!