GET /partner/
Header { "timestamp": 12345679121 "authen-hash": "3vudiH0Kyo8c7Qa4ihIIvL/yO8fN+ondP6aEhFJlZTA=" "name": "KiantoBank" "origin": "domain name" } Param { "id": 97043666000010 }
"authen-hash": SHA256(timestamp+secretkey+body).digest(hex)
body sẽ là {} nếu request không có field
"timestamp": Thời gian gửi, nếu thời gian hiện tại - thời gian gửi > 30s, request bị từ chối
"name": tên ngân hàng đối tác
"id": số tài khoản cần tra
"origin": dùng để check cors, browser sẽ tự add origin vào
Return
Success { "status": true, "message": "Here's a customer", "id": 123445678, "name": "Nobody" } Failed { "status": false, "message": "Error message", }
POST /partner/transfer
Header { "timestamp": 12345679121 "authen-hash": "3vudiH0Kyo8c7Qa4ihIIvL/yO8fN+ondP6aEhFJlZTA=" "sig": "" "name": "tên bank nguồn" } Body: JSON { "from_id": "tài khoản nguồn" "to_id": 97043666000010 "amount": 10000 "message": "nội dung chuyển tiền, có thể rỗng nhưng phải có field" }
"sig": signature sign với secret key encode base64 "amount": số tiền cần nộp
Return
Success { "status": true, "message": "Transfer money successfully", "balance": 5000000, "signature": "signature go here" } Failed { "status": false, "message": "Error message", }Thuật toán sign PGP
const openpgp = require('openpgp'); async function detachedSign(secret) { const { keys: [privateKey] } = await openpgp.key.readArmored(prkey); await privateKey.decrypt(passphrase); const { signature: detachedSignature } = await openpgp.sign({ message: openpgp.cleartext.fromText(secret), // CleartextMessage or Message object privateKeys: [privateKey], // for signing detached: true }); return detachedSignature; }
secret: "himom"
passphrase: passphrase khi tạo key
prkey: privatekey dùng để sign
Example request
var timestamp = moment().unix(); var secretKey= 'himom'; const body = { from_id: 123456789, to_id: 97043666000010, amount: 1000000, message: 'this is a fake test', } var detachedSignature = await pgp.detachedSign('himom'); var config={headers: { //origin: "www.nguyen.com", name: "nanibank", timestamp: timestamp, "authen-hash": Crypto.createHash('sha256').update(timestamp + secretKey + JSON.stringify(body)).digest('hex'), sig: new Buffer.from(detachedSignature).toString('base64'), } } axios.post('http://35.247.178.19:3000/partner/transfer',body, config).then(function (res) { console.log(res.data); }).catch(function (error) { console.log(error); });