JavaScript required
We’re sorry, but Coda doesn’t work properly without JavaScript enabled.
Skip to content
Gallery
Đồ án cuối kì
Đồ án giữa kì
Docs API
Private API
More
Share
Explore
Docs API
End point
https://s2q-ibanking.herokuapp.com/public/
Method
GET /:accountNumber
Des: Nhận thông tin của tài khoản nếu tìm thấy
Request
Headers
timestamp: sử dụng (Date.now() / 1000) hoặc (moment.unix())
security_key: // your security
hash: chuỗi hash từ (timestamp + accountNumber + security_key) dùng thuật toán sha256 và định dạng hex
Có thể sử dụng phương thức createHash từ thư viên crypto có sẵn trong Node.js nếu bạn cũng dùng Node.js
Response
Thông tin về tài khoản nếu tồn tại tài khoản đó trong cơ sở dữ liệu của ngân hàng.
POST /transfer
Des: Nộp tiền vào tài khoản
request
BODY
data: {
source_account: 'số tài khoản nguồn',
destination_account: 'số tài khoản đích',
source_bank: 'tên ngân hàng gửi',
description: 'lời nhắn',
feePayBySender: 'true or false',
fee: ,
amount: 'số tiền chuyển',
},
signature: // chữ kí RSA theo thuật toán sha256 và định dạng hex, kí vào phần data.
HEADERS
{
timestamp:
Date.now
()/1000 or moment.unix(),
security_key:,
hash: tương tự ở trên
}
Mã nguồn ví dụ
const moment = require('moment');
const crypto = require('crypto');
const axios = require('axios');
const Bank = require('../models/schema/bank');
/**
* request info
* header = {
* timestamp
* security_key
* hash
* }
* GET /public/:account_number
*
*/
// ở đây là private key RSA của mấy bạn
const private_key = `-----BEGIN RSA PRIVATE KEY-----\nMIICWwIBAAKBgQCdVTZf1j7wafF7lbvOozMj6uydy7BCY75cSIlGnJbKvRPCEbci\nvxE8PH+pJJ5/k/DGFjY7XSRqzqyCzm0LnvV+57/u/7hXBlpcm+ft2felIIXc/hFS\nID0EACtBnlVtXnJ+38Xlh96sE0ABjGmDXUXKyQ7BEhqumd4iG2Yuhh3s+QIDAQAB\nAoGAB2OnKB0h25y+MLW5mlzj2/3+mvKkFpokqKTnfZ+BHYh/0w+N8F3U62VUAZes\nsgU6u7LzXRpkyXdndsVHLdKLaRWTTHILkmfFHMts10jMX6/2aKvi2x+4lRP1RMBI\nsaTLOqgVFBI8bW+A8dHwce+CorO10x3xq/y0JFjqaE1S+lkCQQDJctCt5ALzKyUH\n75k6v0Eqmr2c0HsSJeSxA8oPq7377WnlV1fRxIExCFNwF1y4S7HH3LI/pX1Mef2k\n/MXsl7IbAkEAx/Ahs3h4ZGY6sZvzrLjuqWSqasYpgzgoab1yxUTjU3n7ldEudFsR\ncGh5eR4YrOnx4rYQgTem3+10DWMnFVeuewJAfZPbTmszA49DuFy+MocDAqIPzW+R\nKNECbO6lyXsQJbnsJ5F5J0TOHFjKWrfVjvVwz9xeKZrqLwBlA7KnV0OBPQJAKCtf\nqf4nOgyr+CkcAPS6xn+6GW+swXdT70Knv2iCv6+/Uy9OxQPS8iGbXjEkxgDOnzzy\n/fMfbNf5PANSw9/05wJAecNvZPfNiCKene4HiWQgziONksof2aB5g2TRSwYpz83R\nUu2hb3bfD9/N7DT3qab+n+s4u7x+4kdz8GrZNuMCZw==\n-----END RSA PRIVATE KEY-----`;
const baseURL = 'https://s2q-ibanking.herokuapp.com';
const getInfo = async (account_number) => {
let timestamp = moment().unix();
let security_key = "test1"; // security_key cua you
let _data = JSON.stringify(account_number);
try {
let response = await axios({
method: 'get',
url: `public/${account_number}`,
baseURL: baseURL,
headers: {
timestamp,
security_key,
hash: crypto.createHash('sha256').update(timestamp + _data + security_key).digest('hex')
}
});
console.log(response.data);
} catch (error) {
console.log(error);
}
}
getInfo('1601399422');
// POST /public/transfer
const sendMoney = async (account_number, amount) => {
let timestamp = moment().unix();
let security_key = "test1";
let data = {
source_account: '12345',
destination_account: account_number,
source_bank: 'test1',
description: 'B abc',
feePayBySender: true,
fee: 3300,
amount
};
let _data = JSON.stringify(data);
try {
// create signature
let privateKey = private_key.replace(/\\n/g, '\n');
let signer = crypto.createSign('sha256');
signer.update(_data);
let signature = signer.sign(privateKey, 'hex');
// send request
let result = await axios({
method: 'post',
url: 'public/transfer',
baseURL: baseURL,
headers: {
timestamp,
security_key,
hash: crypto.createHash('sha256').update(timestamp + _data + security_key).digest('hex')
},
data: {
data,
signature,
}
});
console.log(result.data);
} catch (error) {
console.log(error.response.status);
console.log(error.response.message);
}
}
sendMoney('1596891106', 10000);
End point
Method
GET /:accountNumber
Request
Response
POST /transfer
request
Mã nguồn ví dụ
Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
Ctrl
P
) instead.