Recurring - Payment API Credit Card
About Recurring - Payment API Credit Card
Payment Recurring type is another Credit Card feature that can pay a particular bill from your Customer periodically with the same amount similar to the initial bill payment.
The API used in this payment stage is similar to the API for Full Payment & Installment and Pre-Auth & Capture payment types. However, there are differences in the sent parameter request.
NICEPAY will give a recurringToken as Payment API response parameter called recurring token making. Merchant can use recurringToken on the later Payment API request without using cardNo and cardExpYymm.
Recurring - Payment API Credit Card (First Payment)
To activate the Credit Card recurring type transaction, you mandatory pay the created transaction to receive the recurringToken beforehand.
API Endpoint | /nicepay/direct/v2/payment |
|---|---|
Request Method application/x-www-form-urlencoded | POST |
Description | Recurring |
Merchant Token | SHA256(timeStamp+iMid+referenceNo+amt+merchantKey) |
The used API specification is similar to the API Recurring Token Credit Card.
Request Parameter for Recurring - Payment API Credit Card (First Payment)
The following is a request payment on recurring to gain recurringToken which where You need to finish the Recurring - Registration API Credit Card beforehand.
You still need cardNo, cardExpYymm, cardCvv, cardHolderNm & cardHolderEmail from the Customer on the first payment on this recurring scheme.
Parameter | Type | Size | Description | Example / Notes |
|---|---|---|---|---|
timeStamp Required | N | 14 | Request Timestamp (YYYYMMDDHH24MISS) | 20230522080502 |
tXid Required | AN | 30 | Transaction ID | IONPAYTEST01202305220041509298 |
referenceNo Required | ANS | 40 | Merchant Order Number | MerchantReferenceNumber001 |
merchantToken Required | AN | 255 | Merchant Token | ff139e49606387091cd9baeadff3161aff6afd9406e1f481e0fdb8b46d1ae5ae |
cardNo Required | N | 20 | Credit Card Number | 51234500****0000 |
cardExpYymm Required | A | 4 | Card Expiry (YYMM) | 3901 |
cardCvv Required | N | 4 | Card CVV | 100 |
cardHolderNm Required | AN | 45 | Card Holder Name | John Doe Only alphabet allowed |
cardHolderEmail Required | ANS | 100 | Card Holder Email | |
callBackUrl Required | ANS | 255 | Payment Result URL | https://www.nicepay.co.id/IONPAY_CLIENT/paymentResult.jsp |
Response Parameter for Recurring - Payment API Credit Card (First Payment)
Below is the detailed response You get. Please perform save & store the recurringToken gain to execute the recurring feature process on the next transaction with the same Customer Credit Card.
Parameter | Type | Size | Description | Example / Notes |
|---|---|---|---|---|
timeStamp | N | 14 | Response Date (YYYYMMDDHH24MISS) | 20230520135959 |
resultCd | N | 4 | Result Code | 0000 |
resultMsg | AN | 255 | SUCCESS | |
tXid | AN | 30 | Transaction ID | IONPAYTEST01202305161007570327 |
referenceNo | ANS | 40 | Merchant Order Number | MerchantReferenceNumber001 |
payMethod | N | 2 | 01 When Success | |
amount | N | 12 | Payment Amount | 10000 When Success |
currency | AN | 3 | Currency | IDR When Success |
goodsNm | AN | 100 | Goods Name | Merchant Goods 1 When Success |
billingNm | AN | 100 | Buyer Name | John Doe When Success |
transDt | N | 8 | Transaction Date (YYYYMMDD) | 20230516 When Success |
transTm | N | 6 | Transaction Time (HH24MISS) | 135959 When Success |
description | AN | 100 | Transaction Description | This Is The Description Of The Payment When Success |
authNo | N | 10 | Approval Number | 123456 When Success |
issuBankCd | A | 4 | CENA (Refer Bank Code) When Success | |
acquBankCd | A | 4 | BNIA (Refer Bank Code) When Success | |
cardNo | AN | 20 | Card Number (Masked) | 51234500****0008 When Success |
cardExpYymm | N | 4 | Card Expiry (YYMM) | 3901 When Success |
instmntMon | N | 1 | Installment Month | 1 When Success |
instmntType | N | 2 | 1 When Success | |
ccTransType | AN | 2 | 2 When Success | |
vat | N | 12 | Value Added Tax (VAT) | 0 When Success |
fee | N | 12 | Service Fee | 0 When Success |
notaxAmt | N | 12 | Tax Free Amount | 0 When Success |
recurringToken | AN | 64 | Token That Using Recurring Payment | f19e3128784d0b33c189d5df21321c781b5bd107b185587fd8a54781aa845c84 |
acquBankNm | A | 255 | Acquiring Bank Name | CIMB |
issuBankNm | A | 255 | Issuing Bank Name | BCA |
Sample Parameter for Recurring - Payment API Credit Card (First Payment)
Request Parameter
let secondVersion = new SecondApiVersion(config);
let parameterPayment = {
amt: "1000",
referenceNo: "ordNo20250930150915",
tXid: "RECURRTEST01202509301555563979",
cardNo: "5123450000000008",
callBackUrl: "https://dev.nicepay.co.id/IONPAY_CLIENT/paymentResult.jsp?order_id=RECURRTEST01202509301555563979",
cardExpYymm: "3106",
cardCvv: "100",
recurringToken: "", // Leave empty for first payment
cardHolderNm: "Nicepay Test",
preauthToken: "",
cardHolderEmail: "[email protected]",
};
let response = secondVersion.requestPayment(parameterPayment);Response Parameter
<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 5.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<script type="text/javascript" src="/nicepay/js/bootstrap.js"></script>
<link rel="stylesheet" type="text/css" href="/nicepay/css/bootstrap.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/bootstrap_backup.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/form.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/bootstrap-responsive.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/basic.css" />
<link rel="shortcut icon" href="https://www.nicepay.co.id/favicon.ico" type="image/x-icon" />
<link rel="icon" href="https://www.nicepay.co.id/favicon.ico" type="image/x-icon" />
<script type="text/javascript" src="/nicepay/js/jquery.js"></script>
<script type="text/javascript" src="/nicepay/js/jquery.min.js"></script>
<script type="text/javascript" src="/nicepay/js/common.js"></script>
</head>
<body>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript">
function setAcsInfo(){
if ('01' != '05') {
document.tranMgr.action = $("#callbackUrl").val();
} else if ('01' == '05' && '' != null && '' == 'OVOE') {
document.tranMgr.action = $("#callbackUrl").val();
}
if (document.tranMgr.cardBrand.value == null || document.tranMgr.cardBrand.value == "")
document.tranMgr.cardBrand.setAttribute("disabled", true);
document.tranMgr.submit();
}
</script>
</head>
<style>
body {
min-width: 100%;
height: auto;
min-height: 500px;
overflow: none;
border: none;
}
.wrapper {
position: absolute;
top: 0;
left: 0;
background-color: transparent;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
z-index: 10;
}
.loader {
color: #79CDBD;
font-size: 10px;
width: 1em;
height: 1em;
border-radius: 50%;
position: relative;
text-indent: -9999em;
animation: mulShdSpin 1.3s infinite linear;
transform: translateZ(0);
}
@keyframes mulShdSpin {
0%,
100% {
box-shadow: 0 -3em 0 0.2em,
2em -2em 0 0em, 3em 0 0 -1em,
2em 2em 0 -1em, 0 3em 0 -1em,
-2em 2em 0 -1em, -3em 0 0 -1em,
-2em -2em 0 0;
}
12.5% {
box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em,
3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em,
-2em 2em 0 -1em, -3em 0 0 -1em,
-2em -2em 0 -1em;
}
25% {
box-shadow: 0 -3em 0 -0.5em,
2em -2em 0 0, 3em 0 0 0.2em,
2em 2em 0 0, 0 3em 0 -1em,
-2em 2em 0 -1em, -3em 0 0 -1em,
-2em -2em 0 -1em;
}
37.5% {
box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em,
-2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
}
50% {
box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em,
-2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
}
62.5% {
box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0,
-2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
}
75% {
box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em,
3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em,
-2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
}
87.5% {
box-shadow: 0em -3em 0 0, 2em -2em 0 -1em,
3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em,
-2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
}
}
</style>
<body onLoad="javascript:setAcsInfo();">
<div class="wrapper" id="loader">
<span class="loader"></span>
</div>
<form name="tranMgr" method="post" action="">
<input type="hidden" id="callbackUrl" value="https://dev.nicepay.co.id/IONPAY_CLIENT/paymentResult.jsp?order_id=RECURRTEST01202509301555563979">
<input type="hidden" name="resultCd" value="0000">
<input type="hidden" name="resultMsg" value="SUCCESS">
<input type="hidden" name="tXid" value="RECURRTEST01202509301555563979">
<input type="hidden" name="referenceNo" value="ordNo20250930150915">
<input type="hidden" name="payMethod" value="01">
<input type="hidden" name="amt" value="1000">
<input type="hidden" name="transDt" value="20250930">
<input type="hidden" name="transTm" value="155556">
<input type="hidden" name="description" value="">
<input type="hidden" name="authNo" value="563979">
<input type="hidden" name="issuBankCd" value="BTPN">
<input type="hidden" name="acquBankCd" value="BMRI">
<input type="hidden" name="cardNo" value="51234500****0008">
<input type="hidden" name="receiptCode" value="">
<input type="hidden" name="mitraCd" value="">
<input type="hidden" name="recurringToken" value="20b50427bc05cba305b0d580bf403e3c8487db29454459a920b6af358e435035">
<input type="hidden" name="preauthToken" value="">
<input type="hidden" name="currency" value="IDR">
<input type="hidden" name="goodsNm" value="Goods">
<input type="hidden" name="billingNm" value="Nicepay test RECURRTEST">
<input type="hidden" name="ccTransType" value="1">
<input type="hidden" name="mRefNo" value="">
<input type="hidden" name="instmntType" value="1">
<input type="hidden" name="instmntMon" value="1">
<input type="hidden" name="cardExpYymm" value="3106">
<input type="hidden" name="issuBankNm" value="BTPN">
<input type="hidden" name="acquBankNm" value="Mandiri">
<input type="hidden" name="timeStamp" value="20250930155726">
<input type="hidden" name="merchantToken" value="2a826d3285de0d09d7fa92cb788dfcb35a1656af15b81b97a0b42c5115510983">
<input type="hidden" name="cardBrand" value="">
</form>
</body>
</html>
</body>
</html>
Continual Recurring - Payment API Credit Card
After proceeding with the first payment and already receiving recurringToken on Recurring - Payment API Credit Card.
You can use that recurringToken to pay another bill using a similar Customer Credit Card credential to implement recurring (subscription) payment mechanism. However, to proceed this payment continual recurring, You still need to beforehand do the transaction registration on Recurring - Registration API Credit Card.
The following is the request and response detail used on the later payment using the same recurring token.
API Endpoint | /nicepay/direct/v2/payment |
|---|---|
Request Method application/x-www-form-urlencoded | POST |
Description | Recurring Continual Payment Credit Card |
Merchant Token | SHA256(timeStamp+iMid+referenceNo+amt+merchantKey) |
API specification used is similar to the API Recurring Token Credit Card.
Request Payment for Continual Recurring - Payment API Credit Card
You only need to use recurringToken on Payment API Recurring for this next request without using cardNo and cardExpYymm parameter.
Parameter | Type | Size | Description | Example / Notes |
|---|---|---|---|---|
timeStamp Required | N | 14 | Request Timestamp (YYYYMMDDHH24MISS) | 20230522080502 |
tXid Required | AN | 30 | Transaction ID | IONPAYTEST01202305220041509298 |
referenceNo Required | ANS | 40 | Merchant Order Number | MerchantReferenceNumber001 |
merchantToken Required | AN | 255 | Merchant Token | ff139e49606387091cd9baeadff3161aff6afd9406e1f481e0fdb8b46d1ae5ae |
recurringToken Required | AN | 64 | Token That Using Recurring Payment | When Success f19e3128784d0b33c189d5df21321c781b5bd107b185587fd8a54781aa845c84 |
cardCvv Required | N | 4 | Card CVV | 100 |
cardHolderNm Required | AN | 45 | Card Holder Name | John Doe Only alphabet allowed |
cardHolderEmail Required | ANS | 100 | Card Holder Email
| |
callBackUrl Required | ANS | 255 | Payment Result URL | https://www.nicepay.co.id/IONPAY_CLIENT/paymentResult.jsp |
Include cardCVV on every transaction depending on the MID type of CVV or Non-CVV.
Response Payment for Continual Recurring - Payment API Credit Card
Parameter | Type | Size | Description | Example / Notes |
|---|---|---|---|---|
timeStamp | N | 14 | Response Date (YYYYMMDDHH24MISS) | 20230520135959 |
resultCd | N | 4 | Result Code | 0000 |
resultMsg | AN | 255 | SUCCESS | |
tXid | AN | 30 | Transaction ID | IONPAYTEST01202305161007570327 |
referenceNo | ANS | 40 | Merchant Order Number | MerchantReferenceNumber001 |
payMethod | N | 2 | 01 When Success | |
amount | N | 12 | Payment Amount | 10000 When Success |
currency | AN | 3 | Currency | IDR When Success |
goodsNm | AN | 100 | Goods Name | Merchant Goods 1 When Success |
billingNm | AN | 100 | Buyer Name | John Doe When Success |
transDt | N | 8 | Transaction Date (YYYYMMDD) | 20230522 When Success |
transTm | N | 6 | Transaction Time (HH24MISS) | 224343 When Success |
description | AN | 100 | Transaction Description | This Is The Description Of The Payment When Success |
authNo | N | 10 | Approval Number | 123456 When Success |
issuBankCd | A | 4 | CENA (Refer Bank Code) When Success | |
acquBankCd | A | 4 | BNIA (Refer Bank Code) When Success | |
cardNo | AN | 20 | Card Number (Masked) | 51234500****0008 When Success |
cardExpYymm | N | 4 | Card Expiry (YYMM) | 3901 When Success |
instmntMon | N | 1 | Installment Month | 1 When Success |
instmntType | N | 2 | 1 When Success | |
ccTransType | AN | 2 | 2 When Success | |
vat | N | 12 | Value Added Tax (VAT) | 0 When Success |
fee | N | 12 | Service Fee | 0 When Success |
notaxAmt | N | 12 | Tax Free Amount | 0 When Success |
acquBankNm | A | 255 | Acquiring Bank Name | CIMB |
issuBankNm | A | 255 | Issuing Bank Name | BCA |
Sample Parameter for Continual Recurring - Payment API Credit Card
Request Parameter
let secondVersion = new SecondApiVersion(config);
let parameterPayment = {
amt: "1000",
referenceNo: "ordNo20250930170928",
tXid: "RECURRTEST01202509301729488790",
callBackUrl: "https://dev.nicepay.co.id/IONPAY_CLIENT/paymentResult.jsp?order_id=RECURRTEST01202509301555563979",
cardHolderNm: "Nicepay Test",
recurringToken: "20b50427bc05cba305b0d580bf403e3c8487db29454459a920b6af358e435035",
cardHolderEmail: "[email protected]",
};
let response = secondVersion.requestPayment(parameterPayment);Response Parameter
<!-- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 5.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> -->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<script type="text/javascript" src="/nicepay/js/bootstrap.js"></script>
<link rel="stylesheet" type="text/css" href="/nicepay/css/bootstrap.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/bootstrap_backup.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/bootstrap.min.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/form.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/bootstrap-responsive.css" />
<link rel="stylesheet" type="text/css" href="/nicepay/css/basic.css" />
<link rel="shortcut icon" href="https://www.nicepay.co.id/favicon.ico" type="image/x-icon" />
<link rel="icon" href="https://www.nicepay.co.id/favicon.ico" type="image/x-icon" />
<script type="text/javascript" src="/nicepay/js/jquery.js"></script>
<script type="text/javascript" src="/nicepay/js/jquery.min.js"></script>
<script type="text/javascript" src="/nicepay/js/common.js"></script>
</head>
<body>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script type="text/javascript">
function setAcsInfo(){
if ('01' != '05') {
document.tranMgr.action = $("#callbackUrl").val();
} else if ('01' == '05' && '' != null && '' == 'OVOE') {
document.tranMgr.action = $("#callbackUrl").val();
}
if (document.tranMgr.cardBrand.value == null || document.tranMgr.cardBrand.value == "")
document.tranMgr.cardBrand.setAttribute("disabled", true);
document.tranMgr.submit();
}
</script>
</head>
<style>
body {
min-width: 100%;
height: auto;
min-height: 500px;
overflow: none;
border: none;
}
.wrapper {
position: absolute;
top: 0;
left: 0;
background-color: transparent;
display: flex;
justify-content: center;
align-items: center;
height: 100%;
width: 100%;
z-index: 10;
}
.loader {
color: #79CDBD;
font-size: 10px;
width: 1em;
height: 1em;
border-radius: 50%;
position: relative;
text-indent: -9999em;
animation: mulShdSpin 1.3s infinite linear;
transform: translateZ(0);
}
@keyframes mulShdSpin {
0%,
100% {
box-shadow: 0 -3em 0 0.2em,
2em -2em 0 0em, 3em 0 0 -1em,
2em 2em 0 -1em, 0 3em 0 -1em,
-2em 2em 0 -1em, -3em 0 0 -1em,
-2em -2em 0 0;
}
12.5% {
box-shadow: 0 -3em 0 0, 2em -2em 0 0.2em,
3em 0 0 0, 2em 2em 0 -1em, 0 3em 0 -1em,
-2em 2em 0 -1em, -3em 0 0 -1em,
-2em -2em 0 -1em;
}
25% {
box-shadow: 0 -3em 0 -0.5em,
2em -2em 0 0, 3em 0 0 0.2em,
2em 2em 0 0, 0 3em 0 -1em,
-2em 2em 0 -1em, -3em 0 0 -1em,
-2em -2em 0 -1em;
}
37.5% {
box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
3em 0em 0 0, 2em 2em 0 0.2em, 0 3em 0 0em,
-2em 2em 0 -1em, -3em 0em 0 -1em, -2em -2em 0 -1em;
}
50% {
box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
3em 0 0 -1em, 2em 2em 0 0em, 0 3em 0 0.2em,
-2em 2em 0 0, -3em 0em 0 -1em, -2em -2em 0 -1em;
}
62.5% {
box-shadow: 0 -3em 0 -1em, 2em -2em 0 -1em,
3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 0,
-2em 2em 0 0.2em, -3em 0 0 0, -2em -2em 0 -1em;
}
75% {
box-shadow: 0em -3em 0 -1em, 2em -2em 0 -1em,
3em 0em 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em,
-2em 2em 0 0, -3em 0em 0 0.2em, -2em -2em 0 0;
}
87.5% {
box-shadow: 0em -3em 0 0, 2em -2em 0 -1em,
3em 0 0 -1em, 2em 2em 0 -1em, 0 3em 0 -1em,
-2em 2em 0 0, -3em 0em 0 0, -2em -2em 0 0.2em;
}
}
</style>
<body onLoad="javascript:setAcsInfo();">
<div class="wrapper" id="loader">
<span class="loader"></span>
</div>
<form name="tranMgr" method="post" action="">
<input type="hidden" id="callbackUrl" value="https://dev.nicepay.co.id/IONPAY_CLIENT/paymentResult.jsp?order_id=RECURRTEST01202509301729488790">
<input type="hidden" name="resultCd" value="0000">
<input type="hidden" name="resultMsg" value="SUCCESS">
<input type="hidden" name="tXid" value="RECURRTEST01202509301729488790">
<input type="hidden" name="referenceNo" value="ordNo20250930170928">
<input type="hidden" name="payMethod" value="01">
<input type="hidden" name="amt" value="1000">
<input type="hidden" name="transDt" value="20250930">
<input type="hidden" name="transTm" value="172948">
<input type="hidden" name="description" value="">
<input type="hidden" name="authNo" value="488790">
<input type="hidden" name="issuBankCd" value="BTPN">
<input type="hidden" name="acquBankCd" value="BMRI">
<input type="hidden" name="cardNo" value="51234500****0008">
<input type="hidden" name="receiptCode" value="">
<input type="hidden" name="mitraCd" value="">
<input type="hidden" name="recurringToken" value="">
<input type="hidden" name="preauthToken" value="">
<input type="hidden" name="currency" value="IDR">
<input type="hidden" name="goodsNm" value="Goods">
<input type="hidden" name="billingNm" value="Nicepay test RECURRTEST">
<input type="hidden" name="ccTransType" value="2">
<input type="hidden" name="mRefNo" value="">
<input type="hidden" name="instmntType" value="1">
<input type="hidden" name="instmntMon" value="1">
<input type="hidden" name="cardExpYymm" value="3106">
<input type="hidden" name="issuBankNm" value="BTPN">
<input type="hidden" name="acquBankNm" value="Mandiri">
<input type="hidden" name="timeStamp" value="20250930173145">
<input type="hidden" name="merchantToken" value="898c48420ac413ce6cd86bde6a29203b017e8476fc0f2f3f7f92d866adfdfc5a">
<input type="hidden" name="cardBrand" value="">
</form>
</body>
</html>
</body>
</html>
CallBack Handling for Full Payment & Installment - Payment API Credit Card
tXid will never similar with the request hold. Capture process will ensure that the capture amount value won't exceed the owned funds.
When Your callback already received callbackUrl, we recommended the Merchant to do the status verification using the Status Inquiry - API Credit Card.
CallBack Handling is very important to minimize the Fraud act, we highly recommend the Merchant to do the verification using callBack Handling .
{
"resultCd":"0000",
"resultMsg":"SUCCESS",
"tXid":"IONPAYTEST01202212141112221428",
"referenceNo":"",
"payMethod":"01",
"amt":"10000",
"transDt":"20221212",
"transTm":"121212",
"description":"Testing Credit Card Transaction",
"authNo":"080623",
"issuBankCd":"OTHR"
"acquBankCd":"BMRI",
"cardNo":"453211*****1111",
"goodsNm":"Test Transaction Nicepay"
"billingNm":"John Doe",
"currency":"IDR",
"timeStamp":"20221212121212",
"merchantToken":"2035d2295d9578fffb40137186f0203474142ae3e57992d4847826c5fcaffce6",
"cardExpYymm":"2712",
"instmntMon":"1",
"instmntType":"1",
"ccTransType":"1"
}