藍新金流 NewebPay Node.js module
npm i node-newebpay
mocha test/newebpay.test.js
將交易資料透過商店 Key 及 IV 進行 AES 加密。
const NewebPay = require('node-newebpay')
let key = '12345678901234567890123456789012'
let iv = '1234567890123456'
let trade_info = {
MerchantID: 3430112,
RespondType: 'JSON',
TimeStamp: 1485232229,
Version: 1.4,
MerchantOrderNo: 'S_1485232229',
Amt: 40,
ItemDesc: 'UnitTest'
}
let trade_info_aes = NewebPay(key, iv).TradeInfo(trade_info).encrypt()
console.log(trade_info_aes) // ff91c8aa01379e4de621a44e5f11f72e4d25bdb1a18242db6cef9ef07d80b0165e476fd1d9acaa53170272c82d122961e1a0700a7427cfa1cf90db7f6d6593bbc93102a4d4b9b66d9974c13c31a7ab4bba1d4e0790f0cbbbd7ad64c6d3c8012a601ceaa808bff70f94a8efa5a4f984b9d41304ffd879612177c622f75f4214fa
將交易資料透過商店 Key 及 IV 進行 AES 解密。
const NewebPay = require('node-newebpay')
let key = '12345678901234567890123456789012'
let iv = '1234567890123456'
let trade_info_aes = 'ff91c8aa01379e4de621a44e5f11f72e4d25bdb1a18242db6cef9ef07d80b0165e476fd1d9acaa53170272c82d122961e1a0700a7427cfa1cf90db7f6d6593bbc93102a4d4b9b66d9974c13c31a7ab4bba1d4e0790f0cbbbd7ad64c6d3c8012a601ceaa808bff70f94a8efa5a4f984b9d41304ffd879612177c622f75f4214fa'
let trade_info = NewebPay(key, iv).TradeInfo(trade_info_aes).decrypt()
console.log(trade_info) // MerchantID=3430112&RespondType=JSON&TimeStamp=1485232229&Version=1.4&MerchantOrderNo=S_1485232229&Amt=40&ItemDesc=UnitTest
將已 AES 加密的交易資料, 透過商店 Key 及 IV 進行 SHA256 編碼產生檢查碼。
const NewebPay = require('node-newebpay')
let key = '12345678901234567890123456789012'
let iv = '1234567890123456'
let aes = 'ff91c8aa01379e4de621a44e5f11f72e4d25bdb1a18242db6cef9ef07d80b0165e476fd1d9acaa53170272c82d122961e1a0700a7427cfa1cf90db7f6d6593bbc93102a4d4b9b66d9974c13c31a7ab4bba1d4e0790f0cbbbd7ad64c6d3c8012a601ceaa808bff70f94a8efa5a4f984b9d41304ffd879612177c622f75f4214fa'
let trade_sha = NewebPay(key, iv).TradeInfo(aes).TradeSha()
console.log(trade_sha) // EA0A6CC37F40C1EA5692E7CBB8AE097653DF3E91365E6A9CD7E91312413C7BB8
將交易資料透過 SHA256 編碼產生檢查碼。
這個 function 可接受一個 type 參數來改變交易參數的排列,預設產生的 CheckValue 根據交易狀態查詢 API (https://core.newebpay.com/API/QueryTradeInfo) 所設計的,但是藍新金流付款的 API (https://core.spgateway.com/MPG/mpg_gateway) 在版本 1.2 之前是使用 CheckValue 來作為檢查碼,所以增加 type 來作為 backward compatibility ,目前藍新金流付款 API 版本 1.6 則不再使用 CheckValue 作為檢查碼的用途。
因為查詢中獎發票 API(https://inv.ezpay.com.tw/Api_winning/request)所使用的 CheckValue 又有不同的排列方式,所以增加 type 來支援這個 API。
const NewebPay = require('node-newebpay')
let key = 'abcdefg'
let iv = '1234567'
let trade_info = {
MerchantOrderNo: '840f022',
MerchantID: '1422967',
Amt: 100
}
let code = NewebPay(key, iv).TradeInfo(trade_info).CheckValue('QueryTradeInfo')
console.log(code) // 379BF1DB8948EE79D8ED77A1EBCB2F57B0FD45D0376B6DA9CF85F539CEF1C127
將交易資料透過商店 Key 及 IV 進行 AES 加密。
其實同 TradeInfo(trade_info).encrypt()
只是幕後授權 API 用 PostData
作為欄位的名稱。
const NewebPay = require('node-newebpay')
let key = '12345678901234567890123456789012'
let iv = '1234567890123456'
let payload = 'abcdefghijklmnop'
let data = NewebPay(key, iv).TradeInfo(payload).PostData()
console.log(data) // b91d3ece42c203729b38ae004e96efb9b64c41eeb074cad7ebafa3973181d233
將交易資料透過 SHA256 編碼產生檢查碼。
其實同 TradeInfo(trade_info).CheckValue()
只是幕後授權 API 用 CheckCode
作為欄位的名稱,同時欄位排列不同。
因為電子發票字軌管理 API(https://inv.ezpay.com.tw/Api_number_management/searchNumber)所使用的 CheckCode 又有不同的排列方式,所以增加 type 來支援這個 API。
因為查詢中獎發票 API(https://inv.ezpay.com.tw/Api_winning/request)所使用的 CheckCode 又有不同的排列方式,所以增加 type 來支援這個 API。
const NewebPay = require('node-newebpay')
let key = 'abcdefg'
let iv = '1234567'
let trade_info = {
MerchantOrderNo: '840f022',
MerchantID: '1422967',
Amt: 100,
TradeNo: '14061313541640927'
}
let code = NewebPay(key, iv).TradeInfo(trade_info).CheckCode()
console.log(code) // 62C687AF6409E46E79769FAF54F54FE7E75AAE50BAF0767752A5C337670B8EDB