{ "info": { "_postman_id": "93119d90-8399-4944-a09a-446aec68ecde", "name": "DOKU API Collection Copy 7", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "_exporter_id": "14577350" }, "item": [ { "name": "DOKU Direct", "item": [ { "name": "Credit Card", "item": [ { "name": "CC - Generate Payment Page", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/credit-card/v1/payment-page' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "protocolProfileBehavior": { "disabledSystemHeaders": {} }, "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{ \n \"order\": {\n \t\"invoice_number\":\"INV-{{$timestamp}}\",\n \t\"line_items\": [\n\t\t\t{\n \t\t\"name\": \"DOKU T-Shirt Merah\",\n \t\t\"price\": 30000,\n \t\t\"quantity\": 2\n \t\t},\n\t\t\t{\n \t\t\"name\": \"DOKU T-Shirt Biru\",\n \t\t\"price\": 30000,\n \t\t\"quantity\": 1\n \t\t}\n \t\t],\n \t\"amount\": 90000,\n \t\"callback_url\": \"https://doku.com\",\n \t\"auto_redirect\": false,\n \t\"session_id\": \"0000231223\"\n },\n \"customer\": {\n \t\"id\":\"W7rbKhPYh76VSHYwHRaGDIbBhgTebgAoWtX\",\n \t\"name\":\"Anton Budiman\",\n \t\"email\":\"anton@doku.com\",\n \t\"phone\":\"+6281287458232\",\n\t\t\"address\":\"Jakarta, Menara Mulia Lt 8\",\n\t\t\"country\":\"ID\"\n\t},\n \"override_configuration\": {\n \"themes\": {\n \"language\": \"ID\",\n \"background_color\": \"\",\n \"font_color\": \"\",\n \"button_background_color\": \"\",\n \"button_font_color\": \"\"\n }\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/credit-card/v1/payment-page", "host": [ "{{url}}" ], "path": [ "credit-card", "v1", "payment-page" ] }, "description": "| Header Parameter | Type | Description |\n| --- | --- | --- |\n| Client-Id | `string` | The Client ID you retrieved from Jokul Back Office
`MANDATORY` |\n| Request-Id | `string` | Random string that must unique per request for idempotency
`MANDATORY` `ALPHA NUMERIC` `40 chars` |\n| Request-Timestamp | `string` | Request time in ISO8601 format with UTC + 0
`MANDATORY` |\n| Signature | `string` | Security parameter to ensure the request's authenticity. Learn more how to generate Signature [here](https://jokul.doku.com/docs/docs/technical-references/generate-signature)
`MANDATORY`|" }, "response": [] }, { "name": "CC - Online Refund", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/cancellation/credit-card/refund' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "protocolProfileBehavior": { "disabledSystemHeaders": {} }, "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{ \n \"order\": {\n \t\"invoice_number\":\"INV-{{$timestamp}}\",\n \t\"line_items\": [\n\t\t\t{\n \t\t\"name\": \"DOKU T-Shirt Merah\",\n \t\t\"price\": 30000,\n \t\t\"quantity\": 2\n \t\t},\n\t\t\t{\n \t\t\"name\": \"DOKU T-Shirt Biru\",\n \t\t\"price\": 30000,\n \t\t\"quantity\": 1\n \t\t}\n \t\t],\n \t\"amount\": 90000,\n \t\"callback_url\": \"https://doku.com\",\n \t\"auto_redirect\": false,\n \t\"session_id\": \"0000231223\"\n },\n \"customer\": {\n \t\"id\":\"W7rbKhPYh76VSHYwHRaGDIbBhgTebgAoWtX\",\n \t\"name\":\"Anton Budiman\",\n \t\"email\":\"anton@doku.com\",\n \t\"phone\":\"+6281287458232\",\n\t\t\"address\":\"Jakarta, Menara Mulia Lt 8\",\n\t\t\"country\":\"ID\"\n\t},\n \"override_configuration\": {\n \"themes\": {\n \"language\": \"ID\",\n \"background_color\": \"\",\n \"font_color\": \"\",\n \"button_background_color\": \"\",\n \"button_font_color\": \"\"\n }\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/credit-card/v1/cancellation/credit-card/refund", "host": [ "{{url}}" ], "path": [ "credit-card", "v1", "cancellation", "credit-card", "refund" ] }, "description": "| Header Parameter | Type | Description |\n| --- | --- | --- |\n| Client-Id | `string` | The Client ID you retrieved from Jokul Back Office
`MANDATORY` |\n| Request-Id | `string` | Random string that must unique per request for idempotency
`MANDATORY` `ALPHA NUMERIC` `40 chars` |\n| Request-Timestamp | `string` | Request time in ISO8601 format with UTC + 0
`MANDATORY` |\n| Signature | `string` | Security parameter to ensure the request's authenticity. Learn more how to generate Signature [here](https://jokul.doku.com/docs/docs/technical-references/generate-signature)
`MANDATORY`|" }, "response": [] } ] }, { "name": "Virtual Account", "item": [ { "name": "NON SNAP", "item": [ { "name": "Mandiri VA", "item": [ { "name": "Mandiri VA - Generate Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/mandiri-virtual-account/v2/merchant-payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 200000\n },\n \"virtual_account_info\": {\n \"virtual_account_number\": \"8902208137011011\",\n \"expired_time\": 60,\n \"reusable_status\": true,\n \"info1\": \"Online Shoping 1\",\n \"info2\": \"Online Shoping 2\",\n \"info3\": \"Online Shoping 3\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/mandiri-virtual-account/v2/merchant-payment-code", "host": [ "{{url}}" ], "path": [ "mandiri-virtual-account", "v2", "merchant-payment-code" ] } }, "response": [] }, { "name": "Mandiri VA - Update Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/mandiri-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.request.body));" ], "type": "text/javascript" } } ], "request": { "method": "PATCH", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-20201224-00002\",\n \"amount\": 40000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"virtual_account_number\" : \"8889940000000152\",\n \"info1\": \"Online Shoping 1\",\n \"info2\": \"Online Shoping 2\",\n \"info3\": \"Online Shoping 3\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/mandiri-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "mandiri-virtual-account", "v2", "payment-code" ] } }, "response": [] } ] }, { "name": "BCA VA", "item": [ { "name": "BCA VA - Generate Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/bca-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "protocolProfileBehavior": { "disabledSystemHeaders": {} }, "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 20000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"reusable_status\": true,\n \"info1\": \"Online Shoping 1\",\n \"info2\": \"Online Shoping 2\",\n \"info3\": \"Online Shoping 3\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bca-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "bca-virtual-account", "v2", "payment-code" ] } }, "response": [] }, { "name": "BCA VA - Update Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/bca-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.request.body));" ], "type": "text/javascript" } } ], "request": { "method": "PATCH", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-20201223-00001\",\n \"amount\": 40000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"virtual_account_number\" : \"8123400000005601\",\n \"info1\": \"Online Shoping 1\",\n \"info2\": \"Online Shoping 2\",\n \"info3\": \"Online Shoping 3\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bca-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "bca-virtual-account", "v2", "payment-code" ] } }, "response": [] } ] }, { "name": "Bank Syariah Indonesia VA", "item": [ { "name": "BSI VA - Generate Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/bsm-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 20000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"reusable_status\": false,\n \"info1\": \"Online Shoping Store\",\n \"info2\": \"Contact support@oss.id\",\n \"info3\": \"Thank for shopping in oss.id\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bsm-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "bsm-virtual-account", "v2", "payment-code" ] } }, "response": [] }, { "name": "BSI VA - Update Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/bsm-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.request.body));" ], "type": "text/javascript" } } ], "request": { "method": "PATCH", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-20201223-00001\",\n \"amount\": 40000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"virtual_account_number\" : \"6059000000000160\",\n \"info1\": \"Online Shoping 1\",\n \"info2\": \"Online Shoping 2\",\n \"info3\": \"Online Shoping 3\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bsm-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "bsm-virtual-account", "v2", "payment-code" ] } }, "response": [] } ], "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "" ] } }, { "listen": "test", "script": { "type": "text/javascript", "exec": [ "" ] } } ] }, { "name": "DOKU VA", "item": [ { "name": "DOKU VA - Generate Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/doku-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 20000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"reusable_status\": false,\n \"info1\": \"Online Shoping Store\",\n \"info2\": \"Contact support@oss.id\",\n \"info3\": \"Thank for shopping in oss.id\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/doku-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "doku-virtual-account", "v2", "payment-code" ] } }, "response": [] }, { "name": "DOKU VA - Update Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/doku-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.request.body));" ], "type": "text/javascript" } } ], "request": { "method": "PATCH", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-20201223-00001\",\n \"amount\": 40000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"virtual_account_number\" : \"8000100000000247\",\n \"info1\": \"Online Shoping 1\",\n \"info2\": \"Online Shoping 2\",\n \"info3\": \"Online Shoping 3\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/doku-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "doku-virtual-account", "v2", "payment-code" ] } }, "response": [] } ] }, { "name": "Permata VA", "item": [ { "name": "Permata VA - Generate Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/permata-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "protocolProfileBehavior": { "disabledSystemHeaders": {} }, "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 20000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"reusable_status\": true,\n \"ref_info\" : [\n {\n \"ref_name\": \"kota\",\n \"ref_value\": \"bekasi\"\n },\n {\n \"ref_name\": \"provinsi\",\n \"ref_value\": \"jawa barat\"\n }\n ]\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/permata-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "permata-virtual-account", "v2", "payment-code" ] } }, "response": [] }, { "name": "Permata VA - Update Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/permata-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.request.body));" ], "type": "text/javascript" } } ], "request": { "method": "PATCH", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-1634201275\",\n \"amount\": 40000\n },\n \"virtual_account_info\": {\n \"expired_time\": 120,\n \"virtual_account_number\" : \"8124600000000011\",\n \"ref_info\" : [\n {\n \"ref_name\": \"kota\",\n \"ref_value\": \"bekasi\"\n },\n {\n \"ref_name\": \"provinsi\",\n \"ref_value\": \"jawa barat\"\n }\n ]\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/permata-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "permata-virtual-account", "v2", "payment-code" ] } }, "response": [] } ] }, { "name": "CIMB VA", "item": [ { "name": "CIMB VA - Generate Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/cimb-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "protocolProfileBehavior": { "disabledSystemHeaders": {} }, "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 20000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"reusable_status\": true,\n \"ref_info\" : [\n {\n \"ref_name\": \"kota\",\n \"ref_value\": \"bekasi\"\n },\n {\n \"ref_name\": \"provinsi\",\n \"ref_value\": \"jawa barat\"\n }\n ]\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/cimb-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "cimb-virtual-account", "v2", "payment-code" ] } }, "response": [] }, { "name": "CIMB VA - Update Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/cimb-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.request.body));" ], "type": "text/javascript" } } ], "request": { "method": "PATCH", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-1634201275\",\n \"amount\": 40000\n },\n \"virtual_account_info\": {\n \"expired_time\": 120,\n \"virtual_account_number\" : \"8124600000000011\",\n \"ref_info\" : [\n {\n \"ref_name\": \"kota\",\n \"ref_value\": \"bekasi\"\n },\n {\n \"ref_name\": \"provinsi\",\n \"ref_value\": \"jawa barat\"\n }\n ]\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/cimb-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "cimb-virtual-account", "v2", "payment-code" ] } }, "response": [] } ] }, { "name": "BNI VA", "item": [ { "name": "BNI VA - Generate Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/bni-virtual-account/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "protocolProfileBehavior": { "disabledSystemHeaders": {} }, "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 20000\n },\n \"virtual_account_info\": {\n \"expired_time\": 60,\n \"biling_type\" : \"FIXED\",\n \"info\" : \"Product detail here\",\n \"merchant_unique_reference\":\"UNIQUE_00002\"\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bni-virtual-account/v2/payment-code", "host": [ "{{url}}" ], "path": [ "bni-virtual-account", "v2", "payment-code" ] } }, "response": [] } ] } ] }, { "name": "SNAP", "item": [ { "name": "BNC SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"bnc_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA008", "type": "text" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"channel\" : \"VIRTUAL_ACCOUNT_BNC\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/virtual-accounts/bi-snap-va/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "virtual-accounts", "bi-snap-va", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "BNI SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"bni_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA004", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"channel\": \"VIRTUAL_ACCOUNT_BNI\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/virtual-accounts/bi-snap-va/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "virtual-accounts", "bi-snap-va", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "BRI SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"bri_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA003", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/bri/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "bri", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "BSI SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"bsi_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA010", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/bsi/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "bsi", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "BTN SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"btn_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA009", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/btn/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "btn", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "DANAMON SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"danamon_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA005", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/danamon/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "danamon", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "MANDIRI SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"mandiri_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA009", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/mandiri/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "mandiri", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "MAYBANK SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"maybank_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA009", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/maybank/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "maybank", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "PERMATA SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"permata_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA007", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/permata/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "permata", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "SINARMAS SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"sinarmas_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA012", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/sinarmas/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "sinarmas", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] }, { "name": "CIMB SNAP VA", "item": [ { "name": "Step 1 - Init KJUR", "event": [ { "listen": "test", "script": { "exec": [ "pm.globals.set(\"jsrsasign-js\", responseBody);", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [], "url": { "raw": "http://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js", "protocol": "http", "host": [ "kjur", "github", "io" ], "path": [ "jsrsasign", "jsrsasign-latest-all-min.js" ] } }, "response": [] }, { "name": "Step 2 - Get Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const privateKey = pm.collectionVariables.get(\"private_key\");", "signRequest(privateKey, clientId);", "", "", "function signRequest(privateKey, clientId) {", " const date = new Date().toISOString();", " const dateIso = moment(date).format('YYYY-MM-DDTHH:mm:ssZ') ", " ", " const data = `${clientId}|${dateIso}`", " console.log('stringtosign: ' + data);", " ", " var signatureLib = new KJUR.crypto.Signature({\"alg\": \"SHA256withRSA\"});", " signatureLib.init(privateKey);", " signatureLib.updateString(data);", " var signatureHash = hex2b64(signatureLib.sign());", "", " pm.collectionVariables.set(\"x_signature\", signatureHash);", " pm.collectionVariables.set(\"x_timestamp\", dateIso);", " pm.collectionVariables.set(\"x_client_key\", clientId);", "", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "let success = true;", "", "try {", " tests[\"Response has accessToken.\"] = responseBody.has(\"accessToken\");", " const responseData = JSON.parse(responseBody);", "", " const accessToken = responseData.accessToken;", " tests[\"Response has not null accessToken.\"] = typeof accessToken !== 'undefined';", " pm.globals.set(\"snap_access_token_merchant\", accessToken);", "}", "catch(error) {", " success = false;", " console.log(\"Error: \" + JSON.stringify(error));", "}", "", "tests[\"Test successfully done.\"] = success;", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-CLIENT-KEY", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"grantType\": \"client_credentials\"\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/authorization/v1/access-token/b2b", "host": [ "{{url}}" ], "path": [ "authorization", "v1", "access-token", "b2b" ] } }, "response": [] }, { "name": "Step 3 - Create VA (DGPC)", "event": [ { "listen": "prerequest", "script": { "exec": [ "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(pm.globals.get(\"jsrsasign-js\")); //import javascript jsrsasign", "", "const date = new Date().toISOString();", "const timestamp = moment(date).format('YYYY-MM-DDTHH:mm:ssZ');", "const uniqueId = moment(date).format(\"yyyyMMDDHHmmssSSS\");", "const externalId = \"RID_\" + uniqueId;", "const invoiceNumber = \"INV_\" + uniqueId; ", "", "const clientId = pm.collectionVariables.get(\"client_id\");", "const secretKey = pm.collectionVariables.get(\"secret_key\");", "", "pm.collectionVariables.set(\"x_external_id\", externalId);", "pm.collectionVariables.set(\"x_timestamp\", timestamp);", "pm.collectionVariables.set(\"x_client_key\", clientId);", "", "pm.collectionVariables.set(\"invoice_number\", invoiceNumber);", "pm.collectionVariables.set(\"expired_date\", moment().add(1, 'hour').format());", "", "", "const bin = pm.collectionVariables.get(\"cimb_dgpc_bin\");", "const acquirerBinLength = 6; // please adjust the length based on acquirer BIN Rules", "generatePartnerServiceId(bin, acquirerBinLength);", "", "function generatePartnerServiceId(bin, acquirerBinLength) {", " let partnerServiceId = bin.trim();", " if (bin.length < 8) {", " partnerServiceId = partnerServiceId.substring(0, acquirerBinLength).padStart(8, ' ');", " } else {", " partnerServiceId = partnerServiceId.substring(0, 8);", " }", " pm.collectionVariables.set(\"partner_service_id\", partnerServiceId);", "}", "", "", "signRequest(pm.request);", "", "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;", "}", "", "function signRequest(request) {", "", " const method = pm.request.method;", " const path = pm.request.url.getPath();", " let body = pm.request.body.raw;", " body = body", " .replace(\"{{partner_service_id}}\", pm.collectionVariables.get(\"partner_service_id\"))", " .replace(\"{{invoice_number}}\", pm.collectionVariables.get(\"invoice_number\"))", " .replace(\"{{expired_date}}\", pm.collectionVariables.get(\"expired_date\"));", " const accessToken = pm.globals.get(\"snap_access_token_merchant\");", " ", " var jsonObject = JSON.parse(body);", " var minifyJsonObject = JSON.stringify(jsonObject, null, 0)", " console.log('minifyJsonObject: ' + minifyJsonObject);", " const bodySha256 = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(minifyJsonObject)).toLowerCase();", "", " const data = `${method}:${path}:${accessToken}:${bodySha256}:${timestamp}`", " console.log('stringtosign: ' + data);", "", " var signatureHash = createSignature(data, secretKey); ", " pm.collectionVariables.set(\"x_signature\", signatureHash);", "}" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "X-PARTNER-ID", "value": "{{x_client_key}}", "type": "text" }, { "key": "X-EXTERNAL-ID", "value": "{{x_external_id}}", "type": "text" }, { "key": "X-TIMESTAMP", "value": "{{x_timestamp}}", "type": "text" }, { "key": "X-SIGNATURE", "value": "{{x_signature}}", "type": "text" }, { "key": "Authorization", "value": "Bearer {{snap_access_token_merchant}}", "type": "text" }, { "key": "CHANNEL-ID", "value": "VA011", "type": "text", "description": "http://confluence.doku.com/display/GAT/SNAP+CHANNEL-ID+List" } ], "body": { "mode": "raw", "raw": "{\r\n \"partnerServiceId\": \"{{partner_service_id}}\",\r\n \"trxId\": \"{{invoice_number}}\",\r\n \"virtualAccountTrxType\": \"1\",\r\n \"totalAmount\": {\r\n \"value\": \"12500.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"expiredDate\": \"{{expired_date}}\",\r\n \"virtualAccountName\": \"Testing VA\",\r\n \"virtualAccountEmail\": \"testing@doku.com\",\r\n \"virtualAccountPhone\": \"6281200001111\",\r\n \"billDetails\": [\r\n {\r\n \"billCode\": \"01\",\r\n \"billNo\": \"123456789012345678\",\r\n \"billName\": \"Bill A for Jan\",\r\n \"billShortName\": \"Bill A\",\r\n \"billDescription\": {\r\n \"english\": \"Maintenance\",\r\n \"indonesia\": \"Pemeliharaan\"\r\n },\r\n \"billSubCompany\": \"00001\",\r\n \"billAmount\": {\r\n \"value\": \"20000.00\",\r\n \"currency\": \"IDR\"\r\n },\r\n \"additionalInfo\": {}\r\n }\r\n ],\r\n \"freeTexts\": [\r\n {\r\n \"english\": \"Free text\",\r\n \"indonesia\": \"Tulisan bebas\"\r\n }\r\n ],\r\n \"additionalInfo\": {\r\n \"virtualAccountConfig\": {\r\n \"reusableStatus\": true\r\n },\r\n \"deviceId\": \"12345679237\",\r\n \"channel\": \"mobilephone\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bi-snap-va/cimb/v1/transfer-va/create-va", "host": [ "{{url}}" ], "path": [ "bi-snap-va", "cimb", "v1", "transfer-va", "create-va" ] }, "description": "List of **virtualAccountTrxType**:\n\n- 1 = C = Closed Payment\n \n- 2 = O = Open Payment\n \n- 3 = I = Partial\n \n- 4 = M = Minimum - Only can be paid once with minimum amount\n \n- 5 = L = Maximum\n \n- 6 = N = Open Minimum - Can be paid multiple with minimum amount\n \n- 7 = X = Open Maximum - Can be paid multiple with cumulative maximum amount\n \n- 8 = V = Bill Variable\n \n- 9 = W = Multi Bill Variable" }, "response": [] } ] } ] } ] }, { "name": "O2O", "item": [ { "name": "Alfa Group", "item": [ { "name": "Alfa - Generate Payment Code", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/alfa-online-to-offline/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 150000\n },\n \"online_to_offline_info\": {\n \"expired_time\": 60,\n \"reusable_status\": false,\n \"info\": \"Online Shoping Store\"\n },\n \"customer\": {\n \"name\": \"Taufik Ismail\",\n \"email\": \"taufik@doku.com\"\n },\n \"alfa_info\": {\n \"receipt\": {\n \"footer_message\": \"Call Center 021 555-0525\"\n }\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/alfa-online-to-offline/v2/payment-code", "host": [ "{{url}}" ], "path": [ "alfa-online-to-offline", "v2", "payment-code" ] } }, "response": [] }, { "name": "Indomaret - Generate Payment Code Copy", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/indomaret-online-to-offline/v2/payment-code' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 150000\n },\n \"online_to_offline_info\": {\n \"expired_time\": 60,\n \"reusable_status\": false,\n \"info\": \"Online Shoping Store\"\n },\n \"customer\": {\n \"name\": \"Taufik Ismail\",\n \"email\": \"taufik@doku.com\"\n },\n \"alfa_info\": {\n \"receipt\": {\n \"footer_message\": \"Call Center 021 555-0525\"\n }\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/indomaret-online-to-offline/v2/payment-code", "host": [ "{{url}}" ], "path": [ "indomaret-online-to-offline", "v2", "payment-code" ] } }, "response": [] } ] } ] }, { "name": "E-Money", "item": [ { "name": "OVO", "item": [ { "name": "OVO - Payment", "event": [ { "listen": "prerequest", "script": { "exec": [ "function check_sum(jsonBody) {\r", "var body = JSON.parse(jsonBody);\r", "var key = pm.variables.get(\"secret_key\"); // Change with your Secret Key\r", "\r", "signatureComponents = \r", "body.order.amount\r", "+ body.ovo_payment.approval_code\r", "+ body.ovo_payment.batch_number\r", "+ body.client.id\r", "+ body.order.invoice_number\r", "+ body.ovo_info.ovo_id\r", "+ body.ovo_payment.reference_number\r", "+ body.ovo_payment.trace_number\r", "+ key\r", "\r", "var signature = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(signatureComponents));\r", "console.log('Komponen signature: ' + signatureComponents)\r", "console.log('Signature: ' + signature)\r", "return signature;\r", "}\r", "postman.setEnvironmentVariable('check_sum', check_sum(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "protocolProfileBehavior": { "disabledSystemHeaders": {} }, "request": { "method": "POST", "header": [ { "key": "Content-Type", "value": "text/plain", "type": "text", "disabled": true }, { "key": "Authorization", "value": "Basic YWRtaW46cGFzc3dvcmQ=", "type": "text" } ], "body": { "mode": "raw", "raw": "{\r\n \"client\": {\r\n \"id\": \"{{client_id}}\"\r\n },\r\n \"order\": {\r\n \"invoice_number\":\"INV-20210303-00123\",\r\n \"amount\": 15000\r\n },\r\n \"ovo_info\": {\r\n \"ovo_id\":\"081211111111\"\r\n },\r\n \"security\":{\r\n \"check_sum\":\"{{check_sum}}\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/ovo-emoney/v1/payment", "host": [ "{{url}}" ], "path": [ "ovo-emoney", "v1", "payment" ] } }, "response": [] }, { "name": "OVO - Void", "event": [ { "listen": "prerequest", "script": { "exec": [ "function check_sum(jsonBody) {\r", "var body = JSON.parse(jsonBody)\r", "var key = pm.variables.get(\"secret_key\");\r", "var client_id = pm.variables.get(\"client_id\");\r", "\r", "signatureComponents = \r", "body.order.amount\r", "+ body.ovo_payment.approval_code\r", "+ body.ovo_payment.batch_number\r", "+ client_id\r", "+ body.order.invoice_number\r", "+ body.ovo_info.ovo_id\r", "+ body.ovo_payment.reference_number\r", "+ body.ovo_payment.trace_number\r", "+ key\r", "\r", "var signature = CryptoJS.enc.Hex.stringify(CryptoJS.SHA256(signatureComponents));\r", "console.log('Komponen signature: ' + signatureComponents)\r", "console.log('Signature: ' + signature)\r", "return signature;\r", "}\r", "postman.setEnvironmentVariable('check_sum', check_sum(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "protocolProfileBehavior": { "disabledSystemHeaders": {} }, "request": { "method": "POST", "header": [ { "key": "Content-Type", "type": "text", "value": "text/plain", "disabled": true }, { "key": "Authorization", "type": "text", "value": "Basic YWRtaW46cGFzc3dvcmQ=" } ], "body": { "mode": "raw", "raw": "{\r\n \"client\": {\r\n \"id\": \"{{client_id}}\"\r\n },\r\n \"order\": {\r\n \"invoice_number\": \"INV-20210303-001234-test11\",\r\n \"amount\": 15000\r\n },\r\n \"ovo_info\": {\r\n \"ovo_id\": \"081211111111\"\r\n },\r\n \"ovo_payment\": {\r\n \"batch_number\": 500,\r\n \"trace_number\": 4451979,\r\n \"reference_number\": 12,\r\n \"approval_code\": \"2404983\"\r\n },\r\n \"security\": {\r\n \"check_sum\": \"{{check_sum}}\"\r\n }\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/ovo-emoney/v1/cancel", "host": [ "{{url}}" ], "path": [ "ovo-emoney", "v1", "cancel" ] } }, "response": [] } ] }, { "name": "Shopee Pay", "item": [ { "name": "Shopee Pay - Create Order", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/shopeepay-emoney/v2/order' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"amount\": 150000\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/shopeepay-emoney/v2/order", "host": [ "{{url}}" ], "path": [ "shopeepay-emoney", "v2", "order" ] } }, "response": [] } ] } ] }, { "name": "Direct Debit", "item": [ { "name": "BRI Direct Debit", "item": [ { "name": "Register Card - Create Token", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/token' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"acquirer\": { \n \"id\":\"BRI\"\n },\n \"customer\": {\n \"id\": \"CUST-{{$timestamp}}\",\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\",\n \"phone\": \"62811223344\",\n \"id_card\": \"36032123123123\",\n \"country\": \"ID\",\n \"address\": \"Menara Mulia Lantai 8\",\n \"date_of_birth\": \"02-02-1996\"\n },\n \"debit_card\": {\n \"account_email\": \"wtda@mail.com\",\n \"account_mobile_phone\": \"6281394130621\",\n \"card_expiry\": \"0525\",\n \"card_last_four\": \"8224\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/token", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "token" ] } }, "response": [] }, { "name": "Register Card - Validate OTP", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/token/validate' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"debit_card\": {\n \"token_id\": \"TOK_KEQYWDR7GSUMB5IOK6OJFVTBNCKAFW6O::062110:17:15.704\",\n \"otp\": \"999999\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/token/validate", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "token", "validate" ] } }, "response": [] }, { "name": "Register Card - Resend OTP", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/token-otp' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"channel\": {\n \"id\":\"DIRECT_DEBIT\"\n },\n \"acquirer\": {\n \"id\":\"BRI\"\n },\n \"debit_card\": {\n \"token_id\":\"TOK_MKZTIFPRLLDPIBH5BJNZWFUV4WE2ZO56::062116:56:56.355\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/token-otp", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "token-otp" ] } }, "response": [] }, { "name": "Get Card List", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/tokens' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"customer\": {\n \"id\": \"CUST-123123123\",\n \"name\": \"Anton Budiman\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/tokens", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "tokens" ] } }, "response": [] }, { "name": "Payment - Create Payment", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/payment' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"channel\": {\n \"id\": \"DIRECT_DEBIT\"\n },\n \"acquirer\": {\n \"id\": \"BRI\"\n },\n \"customer\": {\n \"id\": \"CUST-123123123\",\n \"name\": \"Anton Budiman\"\n },\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"line_items\": [\n {\n \"name\": \"DOKU T-Shirt Black\",\n \"price\": 100000,\n \"quantity\" : 1\n },\n {\n \"name\": \"DOKU T-Shirt Red\",\n \"price\": 150000,\n \"quantity\" : 2\n }\n ],\n \"amount\": 400000\n },\n \"payment\": {\n \"token_id\": \"TOK_OMCSBRGQT3P7KPCYQ26BSFH4JBLSIKLK::062108:41:41.496\",\n \"otp_expiration_timestamp\": 360010\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/payment", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "payment" ] } }, "response": [] }, { "name": "Payment - Validate OTP", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/payment/validate' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"channel\":{\n \"id\":\"DIRECT_DEBIT\"\n },\n \"acquirer\":{\n \"id\":\"BRI\"\n },\n \"payment\":{\n \"token\":\"bzSvaFgw9g07C6VFWlkEhEQVDMEqUwE9YfjY5EM1lCI=\",\n \"otp\":\"999999\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/payment/validate", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "payment", "validate" ] } }, "response": [] }, { "name": "Payment - Resend OTP", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/payment-otp' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"channel\": {\n \"id\":\"DIRECT_DEBIT\"\n },\n \"acquirer\": {\n \"id\":\"BRI\"\n },\n \"payment\": {\n \"token\":\"uJytoKwQQ6iSgpo6wPvTuLsZQrjToz/+9X6pITHSA0o=\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/payment-otp", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "payment-otp" ] } }, "response": [] }, { "name": "Payment - Create Recurring Payment", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/payment-recurring' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } }, { "listen": "test", "script": { "exec": [ "pm.test(\"Status code is 201\", function(){", " pm.response.to.have.status(201);", "});" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"channel\": {\n \"id\": \"DIRECT_DEBIT\"\n },\n \"acquirer\": {\n \"id\": \"BRI\"\n },\n \"customer\": {\n \"id\": \"CUST-123123123\",\n \"name\": \"Anton Budiman\"\n },\n \"order\": {\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"line_items\": [\n {\n \"name\": \"DOKU T-Shirt Black\",\n \"price\": 100000,\n \"quantity\" : 1\n },\n {\n \"name\": \"DOKU T-Shirt Red\",\n \"price\": 150000,\n \"quantity\" : 2\n }\n ],\n \"amount\": 400000\n },\n \"payment\": {\n \"token_id\": \"TOK_WMBD4E7ETDYVUEHNK4NEZFQP2WVQFCTQ::062115:41:36.718\",\n \"otp_expiration_timestamp\": 360010\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/payment-recurring", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "payment-recurring" ] } }, "response": [] }, { "name": "Delete Card", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/direct-debit/v1/token-delete' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"customer\": {\n \"id\": \"CUST-123123\",\n \"name\": \"Anton Budiman\"\n },\n \"debit_card\": {\n \"token_id\": \"TOK_WMBD4E7ETDYVUEHNK4NEZFQP2WVQFCTQ::062115:41:36.718\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/direct-debit/v1/token-delete", "host": [ "{{url}}" ], "path": [ "direct-debit", "v1", "token-delete" ] } }, "response": [] } ] } ] }, { "name": "Paylater", "item": [ { "name": "Generate Order", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/akulaku-peer-to-peer/v2/generate-order' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\":{\n \"invoice_number\":\"invoice-000001014\",\n \"line_items\":[\n {\n \"name\":\"The Way I Used to Be by Amber Smith\",\n \"price\":\"30000\",\n \"quantity\":\"2\",\n \"sku\":\"1002\",\n \"category\":\"Book\"\n },\n {\n \"name\":\"JAVA Programming\",\n \"price\":\"5000\",\n \"quantity\":\"10\",\n \"sku\":\"1001\",\n \"category\":\"Book\"\n }\n ],\n \"amount\":\"110000\",\n \"callback_url\":\"https://merchant.com/return-url\"\n },\n \"payment\":{\n \"merchant_unique_reference\":\"TEST-ABC-000104\"\n },\n \"customer\":{\n \"id\":\"fyona\",\n \"name\":\"fyona panjaitan\",\n \"phone\":\"6281874744447\",\n \"address\":\"taman setiabudi\",\n \"postcode\":\"120129\",\n \"state\":\"Jakarta\",\n \"city\":\"Jakarta Selatan\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/akulaku-peer-to-peer/v2/generate-order", "host": [ "{{url}}" ], "path": [ "akulaku-peer-to-peer", "v2", "generate-order" ] } }, "response": [] }, { "name": "Cancellation", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/akulaku-peer-to-peer/v2/cancel' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\":{\n \"invoice_number\":\"CH-88277770234\"\n },\n \"payment\":{\n \"merchant_unique_reference\":\"ABC-0090\",\n \"identifier\":[\n {\n \"name\":\"AKULAKU_UNIQUE_REFERENCE\",\n \"value\":\"MCH-1103200003ABC-0090\"\n },\n {\n \"name\":\"ORDER_ID\",\n \"value\":\"1000034679\"\n }\n ]\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/akulaku-peer-to-peer/v2/cancel", "host": [ "{{url}}" ], "path": [ "akulaku-peer-to-peer", "v2", "cancel" ] } }, "response": [] }, { "name": "Refund", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/akulaku-peer-to-peer/v2/refund' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\":{\n \"invoice_number\":\"invoice-000001011245\"\n },\n \"payment\":{\n \"merchant_unique_reference\":\"REFUND-ABC-000104567\",\n \"identifier\":[\n {\n \"name\": \"ORDER_ID\",\n \"value\": \"1000043216\"\n },\n {\n \"name\": \"AKULAKU_UNIQUE_REFERENCE\",\n \"value\": \"MCH-0016-7451979181409REFUND-ABC-000104567\"\n }\n ]\n },\n \"refund\":{\n \"merchant_unique_reference\":\"XYZ-00645678\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/akulaku-peer-to-peer/v2/refund", "host": [ "{{url}}" ], "path": [ "akulaku-peer-to-peer", "v2", "refund" ] } }, "response": [] } ] }, { "name": "Direct Transfer", "item": [ { "name": "Generate Payment Amount", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "var req_id = uuid.v4();", "pm.variables.set(\"request_id\", req_id);", "var dateFormat = new Date().toISOString().slice(0, 19)+\"Z\";", "pm.variables.set(\"request_timestamp\", dateFormat);", "var targetPath = \"/bca-direct-transfer/v1/order\";", "", "function generatePayCodeSignature(jsonBody, key, client, req, tgl, target) {", "var body = (jsonBody.raw);", "var bodySha256 = CryptoJS.enc.Base64.stringify(CryptoJS.SHA256(body));", "var signatureComponents = ", "\"Client-Id:\"+client+\"\\n\"", "+\"Request-Id:\"+req+\"\\n\"", "+\"Request-Timestamp:\"+tgl+\"\\n\"", "+\"Request-Target:\"+target+\"\\n\"", "+\"Digest:\"+ bodySha256;", "var signature = CryptoJS.enc.Base64.stringify(CryptoJS.HmacSHA256(signatureComponents,key));", "console.log('body : \\n' + body);", "console.log('Digest : '+ bodySha256);", "console.log('UTC : ' +tgl);", "console.log('Komponen signature : \\n' + signatureComponents);", "console.log('Signature : ' + signature);", "return (signature);", "}", "", "var Header = require('postman-collection').Header", "pm.request.headers.add({key : 'Signature', value :\"HMACSHA256=\"+generatePayCodeSignature(pm.request.body, pm.variables.get('secret_key'), pm.variables.get('client_id'), pm.variables.get('request_id'), dateFormat, targetPath)});", "pm.request.headers.add({key : 'Request-Id', value : pm.variables.get('request_id')});", "pm.request.headers.add({key : 'Client-Id', value : pm.variables.get('client_id')});", "pm.request.headers.add({key : 'Request-Timestamp', value : pm.variables.get('request_timestamp')});", "pm.request.headers.add({key : 'Request-Target', value : targetPath});" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"amount\": 10000,\n \"invoice_number\": \"INV-234237\",\n \"item_name\": \"Vario 160 Sticker\",\n \"customer_address\": \"Jakarta Selatan\"\n },\n \"customer\": {\n \"email\": \"heriyatmo@doku.com\",\n \"name\": \"yatmo\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/bca-direct-transfer/v1/order", "host": [ "{{url}}" ], "path": [ "bca-direct-transfer", "v1", "order" ] } }, "response": [] } ] } ], "description": "DOKU Direct is a collection of REST APIs for customizing your payment flow" }, { "name": "DOKU Checkout", "item": [ { "name": "DOKU Checkout - Initiate Payment", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/checkout/v1/payment' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n \"order\": {\n \"amount\": 10500,\n \"invoice_number\": \"INV-{{$timestamp}}\",\n \"currency\": \"IDR\",\n \"session_id\": \"SU5WFDferd561dfasfasdfae123c\",\n \"callback_url\": \"https://doku.com/\",\n \"line_items\": [\n {\n \"name\": \"DOKU T-Shirt\",\n \"price\": 10500,\n \"quantity\" : 1\n }\n ]\n },\n \"payment\": {\n \"payment_due_date\": 60\n },\n \"customer\": {\n \"name\": \"Anton Budiman\",\n \"email\": \"anton@doku.com\",\n \"phone\": \"+6285694566147\",\n \"address\": \"Plaza Asia Office Park Unit 3\",\n \"country\": \"ID\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/checkout/v1/payment", "host": [ "{{url}}" ], "path": [ "checkout", "v1", "payment" ] } }, "response": [] } ], "description": "DOKU Checkout is a Hosted Payment Page that helps you do single integration for all payment channels available." }, { "name": "Misc", "item": [ { "name": "Check Status API", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature() {", " var invoiceNumber = 'INV-1640746942'; // Replace this with the Invoice Number or Request-Id as the query params", "", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:' + '/orders/v1/status/' + invoiceNumber", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature());" ], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [ { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" } ], "url": { "raw": "{{url}}/orders/v1/status/INV-1640746942", "host": [ "{{url}}" ], "path": [ "orders", "v1", "status", "INV-1640746942" ] } }, "response": [] } ] }, { "name": "DOKU Sub Account", "item": [ { "name": "Create Sub Account", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/sac-merchant/v1/accounts' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "name": "Content-Type", "value": "application/json", "type": "text" }, { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{\n\t\"account\": {\n\t\t\"email\": \"alifiani+stan001@doku.com\",\n\t\t\"type\": \"bank\",\n\t\t\"name\": \"Alifiani Standard 001\"\n\t}\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/sac-merchant/v1/accounts", "host": [ "{{url}}" ], "path": [ "sac-merchant", "v1", "accounts" ] } }, "response": [] }, { "name": "Payouts", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/sac-merchant/v1/payouts' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "name": "Content-Type", "value": "application/json", "type": "text" }, { "key": "Client-Id", "value": "{{client_id}}", "type": "text" }, { "key": "Request-Id", "value": "{{request_id}}", "type": "text" }, { "key": "Signature", "value": "{{signature}}", "type": "text" }, { "key": "Request-Timestamp", "value": "{{request_timestamp}}", "type": "text" } ], "body": { "mode": "raw", "raw": "{ \n \"account\": \n { \n \"id\":\"SAC-5933-1641483083409\" \n }, \n \"payout\": \n { \n \"amount\": 12000, \n \"invoice_number\":\"Invoice/001/SANDBOX\" \n }, \n \"beneficiary\": \n { \n \"bank_code\":\"BNINIDJA\", \n \"bank_account_number\": \"0577624308\", \n \"bank_account_name\":\"Sdri Artika Julianti\" \n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/sac-merchant/v1/payouts", "host": [ "{{url}}" ], "path": [ "sac-merchant", "v1", "payouts" ] } }, "response": [] }, { "name": "Transfers", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var digestSHA256 = CryptoJS.SHA256(CryptoJS.enc.Utf8.parse(jsonBody));", " var digestBase64 = CryptoJS.enc.Base64.stringify(digestSHA256);", " console.log('Digest Component: ' + jsonBody)", " console.log('Digest sha256: ' + digestSHA256)", " console.log('Digest: ' + digestBase64)", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/sac-merchant/v1/transfers' + '\\n'+", " 'Digest:' + digestBase64;", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "Content-Type", "name": "Content-Type", "type": "text", "value": "application/json" }, { "key": "Client-Id", "type": "text", "value": "{{client_id}}" }, { "key": "Request-Id", "type": "text", "value": "{{request_id}}" }, { "key": "Signature", "type": "text", "value": "{{signature}}" }, { "key": "Request-Timestamp", "type": "text", "value": "{{request_timestamp}}" } ], "body": { "mode": "raw", "raw": "{ \n \"transfer\":\n {\n \"origin\" : \"SAC-8698-1628220445878\",\n \"destination\" : \"SAC-1670-1628490169910\",\n \"amount\" : 100000,\n \"invoice_number\" : \"TEST-SANDBOX-1\"\n }\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "{{url}}/sac-merchant/v1/transfers", "host": [ "{{url}}" ], "path": [ "sac-merchant", "v1", "transfers" ] } }, "response": [] }, { "name": "Balance", "event": [ { "listen": "prerequest", "script": { "exec": [ "var uuid = require('uuid');", "pm.variables.set(\"request_id\", uuid.v4());", "pm.variables.set(\"request_timestamp\", new Date().toISOString().slice(0, 19)+\"Z\");", "", "function generateSignature(jsonBody) {", " var account_id = 'SAC-7549-1645676098163' // Replace this with the Account Id as the query params", " var signatureComponents = 'Client-Id:' + pm.variables.get('client_id') +'\\n'+", " 'Request-Id:' + pm.variables.get('request_id') +'\\n'+", " 'Request-Timestamp:' + pm.variables.get('request_timestamp') + '\\n'+", " 'Request-Target:/sac-merchant/v1/balances/' + account_id", " var signatureHmacSha256 = CryptoJS.HmacSHA256(signatureComponents,pm.variables.get('secret_key'));", " var signatureBase64 = CryptoJS.enc.Base64.stringify(signatureHmacSha256);", " console.log('Signature Components: ' + signatureComponents)", " console.log('Signature HMACSHA256: ' + signatureHmacSha256)", " console.log('Signature: ' + signatureBase64)", " return 'HMACSHA256='+signatureBase64;", "}", "", "pm.variables.set('signature', generateSignature(pm.variables.replaceIn(pm.request.body.raw)));", "" ], "type": "text/javascript" } } ], "request": { "method": "GET", "header": [ { "key": "Content-Type", "name": "Content-Type", "type": "text", "value": "application/json" }, { "key": "Client-Id", "type": "text", "value": "{{client_id}}" }, { "key": "Request-Id", "type": "text", "value": "{{request_id}}" }, { "key": "Signature", "type": "text", "value": "{{signature}}" }, { "key": "Request-Timestamp", "type": "text", "value": "{{request_timestamp}}" } ], "url": { "raw": "{{url}}/sac-merchant/v1/balances/SAC-7549-1645676098163", "host": [ "{{url}}" ], "path": [ "sac-merchant", "v1", "balances", "SAC-7549-1645676098163" ] } }, "response": [] } ] } ], "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "" ] } }, { "listen": "test", "script": { "type": "text/javascript", "exec": [ "" ] } } ], "variable": [ { "key": "url", "value": "https://api-sandbox.doku.com" }, { "key": "prod_url", "value": "https://api.doku.com" }, { "key": "client_id", "value": "MCH-0003-8279340109246" }, { "key": "secret_key", "value": "SK-7D9Lk82lxvJ2tPn18d4t", "type": "string" }, { "key": "request_id", "value": "93626957-8ebe-4e0e-9778-3a1a623ea18b" }, { "key": "private_key", "value": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCx1sG5T84ty8oA\nW4IgQIOsR2hmWoI4xSn6TDrr/WsF5Z53vm35Hbj4lqvsRGEvqSzIExapGKe64TP3\ndLeMvCfpcixHsm05Dzdxfv2Wd9XWSE3XsexNH8HGpSE56aNsmU1se4l96zkujJOs\niBfwwo4wDQcDp57o9T4tJOXdk827DA2zsQXBBTcaDZ6iqsixYUvJXa76SFUtyXC+\nSm9rk7n6bomSCoSuEs6FiKQ6rNSQSU4UQD4PpNPv+g6Aeem0MIBD+2kAOncXSzbv\neMxd4BLooypOJaMI/bZxfqkiLXUo3ll0kopjmvzN6KAxJgTEOok64EMjREhm9l9J\nloBdXpUXAgMBAAECggEAYzoXl2VO/kCB8lccsRAuJ/cj6lA/7pscQ/s6uSgKCh1H\noTqQs/oAljvDq62vqF81jGESOMF3/Q7g5wapz43Am0HIMSz+QmMaJWqc5dLxboGj\nZWFyHspEXakPc/fH5rVW/NulKKwRmMZ5M0AwU3bKzUbHjiN9yC/mRFwdIdfxZ5Zx\nBfKL8X9d2OmzGnR/76PFJrjFKnPVKLSQZyBvMJgk/INrJ5F2t7Twcmf9EnHScDWI\nBtCd4EmIuejLMB4kC7lCcWNCOL9DBNL2ka9YeLZ34tjE4Itvowtz1hgdNcAkoFAt\nwMRxUf9vVqkukqt/0c37UAsrwjXFIAfRkSKatV0WGQKBgQDWxuDPKwsCeY6VAY0f\naa/kKbSBgau2Sgsgx0yNvtCx2/gK1eKuHScXbCer8sXYVPO9nwNkynMEO5pec4vV\nfhmleDrKH18kYXafNeTuXV4gotnm51OWOaQZkwIBnUV8BxnMlL9gicIn4bFNrtaW\nP+MmHafacjScJr3li+DTAApWawKBgQDT+Ou6Mck7c2guAv2RDl9CH6o267Sr2fcU\n29uKSHchp0qmrMcFfA27NMqC4zsYIw41wnIOrGXwh0jg1UHHqjswGoyO3ED4VCec\n7AiHOd97As3y48Mvm5liYx5LeRRJML5zvBH14W490NUHXOsSNWpJ49EnoxkLbcS9\nh9R30LfvBQKBgAuHdX3pc5fYapz5DlhHVhfLXVMuYMdSRjKmQCfDvHQvuKrsPFTY\nX8bUGXUTfSdVuBfPt2DrtSze/jRfw3vcXwgQ4icDdBoB2VpGjFl3TZw24beRZ11D\nDtoImCz6AkbcIrhmq7dE7dUyOlBPOFmsaEcdhGsngkd3lO4DijgJYoStAoGBALZ5\nhWvO6f1sttVNK72Qkr5Yhe4rcGe0BjiFn3NmOG/XFLNw7w8woJ10r5SHSlrX6qaq\n0gcBr+ukej9aNftM9xDM+g0NXDyqLUOwCRNn5ZN+cY5TNbapCxygWPb9r1HmTT1S\nPF/fhUhfmtNw0MfnBa3AGVA23htxjjjeUjAmlACFAoGBAKxnvtLNDatmsuvxkKo4\nzUvrDVc4lRCZBXZvY6HXnaK9BLeyJ16Hb8yz9Ig222gKr4PAJCW5DOJKbHqHuGhZ\nAAjXo3wdH4AmODAh/kkysZlyQ2pY52r0C7xjsIeEGJbrwIBLWL3tEd3Hsjwnj6gd\nMdU1l0PsqOEv0kYbuKHVaGmm\n-----END PRIVATE KEY-----", "type": "string" }, { "key": "btn_dgpc_bin", "value": "959626", "type": "string" }, { "key": "bri_dgpc_bin", "value": "", "type": "string" }, { "key": "bni_dgpc_bin", "value": "", "type": "string" }, { "key": "bnc_dgpc_bin", "value": "", "type": "string" }, { "key": "mandiri_dgpc_bin", "value": "", "type": "string" }, { "key": "permata_dgpc_bin", "value": "", "type": "string" }, { "key": "maybank_dgpc_bin", "value": "", "type": "string" }, { "key": "bsi_dgpc_bin", "value": "", "type": "string" }, { "key": "sinarmas_dgpc_bin", "value": "", "type": "string" }, { "key": "danamon_dgpc_bin", "value": "", "type": "string" }, { "key": "cimb_dgpc_bin", "value": "", "type": "string" }, { "key": "x_signature", "value": "" }, { "key": "x_timestamp", "value": "" }, { "key": "x_client_key", "value": "" }, { "key": "x_external_id", "value": "" }, { "key": "invoice_number", "value": "" }, { "key": "expired_date", "value": "" }, { "key": "partner_service_id", "value": "" } ] }