Balance Inquiry
Pre-request Script Example
var CryptoJS = require("crypto-js");
var moment = require("moment");
var navigator = {}; //fake a navigator object for the lib
var window = {}; //fake a window object for the lib
eval(postman.getGlobalVariable("jsrsasign-js")); //import javascript jsrsasign
const secretKey = pm.environment.get('SECRET_KEY');
const path = "/snap/v1.1/balance-inquiry"
signRequest(pm.request, path)
pm.globals.set("trx_id", _.random(1,99999999));
function signRequest(request, path) {
const date = new Date().toISOString();
const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ')
pm.globals.set('X-TIMESTAMP', dateIso);
console.log('date: ' + dateIso);
const method = request.method;
console.log('method: ' + method);
console.log('path: ' + path);
const body = request.body.raw;
var jsonObject = JSON.parse(body);
var minifyJsonObject = JSON.stringify(jsonObject, null, 0)
console.log('minifyJsonObject: ' + minifyJsonObject);
const bodyToHash = CryptoJS.SHA256(minifyJsonObject);
// const bodySha256 = CryptoJS.enc.Base64.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();
const bodySha256 = bodyToHash.toString(CryptoJS.enc.Hex);
const accessToken = pm.globals.get('ACCESS_TOKEN');
console.log('access token :' + accessToken);
console.log('bodySha256: ' + bodySha256);
const data = `${method}:${path}:${accessToken}:${bodySha256}:${dateIso}`
console.log('stringtosign: ' + data);
const signatureHash = createSignature(data, secretKey)
console.log('signature :' + signatureHash);
pm.globals.set("X-SIGNATURE", signatureHash);
}
function createSignature(rawData, secretKey){
let signatureUtf8 = CryptoJS.enc.Utf8.parse(rawData);
var secretUtf8 = CryptoJS.enc.Utf8.parse(secretKey);
console.log("secretKey: " + secretKey);
var signatureBytes = CryptoJS.HmacSHA512(signatureUtf8,secretUtf8);
var requestSignatureBase64String = CryptoJS.enc.Base64.stringify(signatureBytes);
return requestSignatureBase64String;
}
Balance Inquiry
post
Header parameters
X-EXTERNAL-IDstringRequiredExample:
Numeric String. Reference number that should be unique in the same day (Request Id)
41807553358950093184162180797837
X-PARTNER-IDstringRequiredExample:
Client Id for merchant that generated by DOKU
BRN-0240-1657686175289
X-SIGNATUREstringRequiredExample:
Symmetric Signature with Get Token (Default)HMAC_SHA512 (clientSecret, stringToSign) dengan formula stringToSign = HTTPMethod +”:“+ EndpointUrl +":"+ AccessToken +":“+ Lowercase(HexEncode(SHA-256(minify(RequestBody))))+ ":“ + TimeStamp
ieNOENDdN4MnectGytx5UvmOfASZ2oGWMCJ8gVqkw3tB98ofgY9cbxSeY4IYoYeoKs+0QP4h8BTBhemlfeXp1w==
X-TIMESTAMPstringRequiredExample:
Client's current local time with format YYYY-MM-DDTHH:mm:ssZD
2020-12-21T14:56:11+07:00
CHANNEL-IDstringRequiredExample:
refers to a unique identifier for the channel or method used to initiate a payment transaction
H2H
Body
partnerReferenceNostring · max: 64Optional
Transaction identifier on service consumer system, generated by partner.
accountNostring · max: 16RequiredExample:
A41879
Responses
200
Transfer bank processed
application/json
400
Bad Request
application/json
post
POST /snap/v1.1/balance-inquiry HTTP/1.1
Host: api-sandbox.doku.com
X-EXTERNAL-ID: text
X-PARTNER-ID: text
X-SIGNATURE: text
X-TIMESTAMP: text
CHANNEL-ID: text
Content-Type: application/json
Accept: */*
Content-Length: 50
{
"partnerReferenceNo": "text",
"accountNo": "A41879"
}
{
"responseCode": 2001100,
"responseMessage": "Successful",
"accountNo": "A41879",
"name": "Simulator Indo Agent",
"accountInfos": {
"holdAmount": {
"value": "0.00",
"currency": "IDR"
},
"avaliableBalance": {
"value": "823781442.13",
"currency": "IDR"
}
},
"additionalInfo": {
"creditAlertLimit": {
"value": "65000.00",
"currency": "IDR"
}
}
}
Last updated
Was this helpful?