rm-api-sdk-erider
Version:
A NodeJS wrapper for some of the RESTful methods documented at doc.revenuemonster.my
39 lines • 1.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var crypto = require("crypto");
function sortObject(obj) {
var sortedObj = {};
Object.keys(obj).sort().forEach(function (key) {
if (Array.isArray(obj[key])) {
sortedObj[key] = obj[key];
}
else if (typeof obj[key] === 'object') {
sortedObj[key] = sortObject(obj[key]);
}
else {
sortedObj[key] = obj[key];
}
});
return sortedObj;
}
exports.sortObject = sortObject;
function generateSignature(arg, privateKey) {
var signature_data = '';
if (arg.data !== null && typeof arg.data === 'object') {
var signature_body = sortObject(arg.data);
var signature = Buffer.from(JSON.stringify(signature_body)).toString('base64');
signature_data = 'data=' + signature + '&';
}
var full_signature = signature_data
+ 'method=' + arg.method
+ '&nonceStr=' + arg.nonceStr
+ '&requestUrl=' + arg.requestUrl
+ '&signType=' + arg.signType
+ '×tamp=' + arg.timestamp;
return crypto
.createSign('SHA256')
.update(full_signature)
.sign(privateKey, 'base64');
}
exports.generateSignature = generateSignature;
//# sourceMappingURL=signature.js.map