Encryption - Payment API Credit Card
About Encryption - Payment API Credit Card
Encryption - Payment API Credit Card is the Credit Card payment transaction data that must going through encryption process firsthand from the Merchant side.
API Endpoint | /nicepay/direct/v2/payment |
|---|---|
Request Method | Popup, Redirect, Submit, Etc(Not Server to Server API) Only support POST |
Description |
|
Merchant Token | SHA256(timeStamp+iMid+referenceNo+amt+merchantKey) |
Request Format | SHA256 (publicKey) |
API Payment - Credit Card which used on this encryption are similar with Credit Card features Full Payment & Installment, Recurring and Preauth & Capture.
The difference is on the Card Data parameter (cardNo,cardExpYymm,cardCvv and cardHolderNm) which Merchant must give those parameter through encryption process firsthand during proceeding the payment request to NICEPAY.
Request Parameter for Encryption - Payment API Credit Card
Parameter | Tipe | Ukuran | Deskripsi | Contoh / Catatan |
|---|---|---|---|---|
timeStamp Required | N | 14 | API Request Timestamp (YYYYMMDDHH24MISS) | 20221202141217 |
tXid Required | AN | 30 | Transaction ID | IONPAYTEST01202212021455054652 |
cardNo Required | N | 200 | Full card number using encrypted format & base64 url encode | n9AuywVp0Cgk7M9sJaJbWf43%2F6m FI6xzLnqZljsimVdNAEq56p6m6Ckhyrd cL14e5tCZlrwQzso6pVCpn%2FwgpPm WwK%2BR0ByoPuYh%2FFwnJy%2BO BWWLroefE7lPoXaWoSUzXw%2BQPw MaT7VQxZnDeIs19dQ%2FE28pcgfTeD 0xDqaBdtQ%3D |
cardExpYymm Required | A | 200 | Card Expiry (YYMM) using encrypted format & base64 url encode | q6Ye2qcjxrjUq%2B3KyCTErSf1nPu58%2FMaS4rP7qThLLEfx9FdFDYp3snj%2F QKRzATATQBdsM3tcY5itH29yGPGn9y MB1k19zTUGtiU9n9NflqUIW%2BCTtv 4Z0ykWFxZntBJ3YMGChmanGIADI9% 2FDUrl5pLNPvAL9Ags5xn3FfOY8RU%3 D |
cardCvv Required | N | 200 | Card CVV using encrypted format & base64 url encode | fPXQ8fdw1Y0tbFmDtaolUxQteh7I3RZ qYY6%2B0g%2BWOPyKTHm5cRTq%2 BD7CYEsvlIRsVcJbzm4LgTNbFWP5rva HkoPqIQmAZRf0CQl1UUQUYwFa%2B NGWObg3depYbXWDpifMtwoVE7Jd3 zFp4B0Ik23Ha46B0bDvRi1zQiz%2Bx7 NwZkE%3D |
cardHolderNm Required | AN | 200 | Card Holder Name using encrypted format & base64 url encode | jY6lRWSw%2Bo9815Dx8jacPVvIjX1wi0 QiovNbIEoGwEwmKzzD92n8vVDI3Rw XFlu2hQTFk0w6iBGlNAPROvl5uPR3% 2Fo4Gy0p3U8RJKIeUnH1qGjP7fO69N dvV6gTwo1Ehjs0cMsIbVNyUBlBQ72b TTkVkQzpAUGQhVQuwbwaw6hs%3D |
recurringToken Required for Recurring Payment Only | AN | 64 | Recurring Token | 9338d54573688ae18e175240b0257d e48d89c6ef1c9c7b5c094dc4beed9e4 35f |
preauthToken Required for Capture Process in Preauth Only | AN | 64 | Pre-Auth Token | 9338d54573688ae18e175240b0257d e48d89c6ef1c9c7b5c094dc4beed9e4 35f |
iMid Required | AN | 10 | Merchant ID | IONPAYTEST |
merchantToken Required | AN | 255 | Merchant Token | c91e6531f6c84869439bc5ebe5389bd71e7752c054fc9dbfe193d087a1b797ae |
callBackUrl Required | ANS | 255 | Payment Result URL | https://merchant.com/callBackUrl |
encrypted Required | N | 1 | Flagging for payment transaction use encryption or not | 1 = Using Encrypt Method 0 = Not Using |
publicKey Required | AN | 64 | publicKey Hashing of your public key (SHA256) | a5f3445e7dd166b8c6cfef685047098f1a03755aeedb97a06002d7a754081338 |
Response Parameter for Encryption - Payment API Credit Card
Parameter | Tipe | Ukuran | Deskripsi | Contoh / Catatan |
|---|---|---|---|---|
resultCd | N | 14 | code of responses | |
resultMsg | AN | 255 | Result message: Error Code | Responses message |
tXid | AN | 30 | Transaction ID | When success |
referenceNo | ANS | 40 | Merchant Order Number | When success |
payMethod | N | 2 | When success | |
amt | N | 12 | Payment Amount | When success |
currency | AN | 3 | Currency | When success |
goodsNm | A | 100 | Goods Name | When success |
billingNm | A | 100 | Buyer Name | When success |
transDt | N | 8 | Transaction Date (YYYYMMDD) | When success |
transTm | N | 6 | Transaction Time (HH24MISS) | When success |
description | AN | 100 | Transaction Description | When success |
authNo | N | 10 | Approval Number | When success, CC |
issuBankCd | A | 4 | When success, CC | |
acquBankCd | A | 4 | When success, CC | |
cardNo | ANS | 20 | Card Number with Masking | When success, CC |
cardExpYymm | N | 4 | Card Expiry (YYMM) | When success, CC |
instmntMon | N | 2 | Installment Month | When success, CC |
instmntType | N | 2 | When success, CC | |
recurringToken | AN | 64 | Recurring Payment Token | When Success CC Recurring |
preauthToken | AN | 64 | Pre-Auth Payment Token | When Success CC Pre-Auth |
ccTransType | N | 2 | When Success, CC 1: Normal 2: Recurring 3: Pre-Auth 4: Capture | |
Vat | N | 12 | Vat | When Success, CC |
Fee | N | 12 | Service Fee | When Success, CC |
noTaxAmt | N | 12 | Tax-free Amount | When Success, CC |
mitraCd | A | 4 | Mitra Code | When success ClickPay, E-Wallet, Payloan |
receiptCode | ANS | 20 | Authorization Number | When success ClickPay |
mRefNo | AN | 18 | Bank Reference Number | When success ClickPay |
cardBrand | N | 2 | Card brand name | 1 = Visa 2 = Mastercard 3 = JCB 4 = Amex 5 = Others |
Sample Parameter for Encryption - Payment API Credit Card
Request Parameter
curl --location 'https://dev.nicepay.co.id/nicepay/direct/v2/payment' \
--header 'X-FORWARDED-FOR: 1.2.3.4' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'timeStamp=20210103123456' \
--data-urlencode 'tXid=BMRITEST0102201607291027025291' \
--data-urlencode 'merchantToken=b4171e8228be7a75d19ad29b509e76d5fc70a4c000ef87bc55cf0cda72767e72' \
--data-urlencode 'cardNo=n9AuywVp0Cgk7M9sJaJbWf43/6mFI6xzLnqZljsimVdNAEq56p6m6CkhyrdcL14e5tCZlrwQzso6pVCpn/wgpPmWwK+R0ByoPuYh/FwnJy+OBWWLroefE7lPoXaWoSUzXw+QPwMaT7VQxZnDeIs19dQ/E28pcgfTeD0xDqaBdtQ=' \
--data-urlencode 'cardExpYymm=q6Ye2qcjxrjUq+3KyCTErSf1nPu58/MaS4rP7qThLLEfx9FdFDYp3snj/QKRzATATQBdsM3tcY5itH29yGPGn9yMB1k19zTUGtiU9n9NflqUIW+CTtv4Z0ykWFxZntBJ3YMGChmanGIADI9/DUrl5pLNPvAL9Ags5xn3FfOY8RU=' \
--data-urlencode 'cardCvv=fPXQ8fdw1Y0tbFmDtaolUxQteh7I3RZqYY6+0g+WOPyKTHm5cRTq+D7CYEsvlIRsVcJbzm4LgTNbFWP5rvaHkoPqIQmAZRf0CQl1UUQUYwFa+NGWObg3depYbXWDpifMtwoVE7Jd3zFp4B0Ik23Ha46B0bDvRi1zQiz+x7NwZkE=' \
--data-urlencode 'cardHolderNm=jY6lRWSw+o9815Dx8jacPVvIjX1wi0QiovNbIEoGwEwmKzzD92n8vVDI3RwXFlu2hQTFk0w6iBGlNAPROvl5uPR3/o4Gy0p3U8RJKIeUnH1qGjP7fO69NdvV6gTwo1Ehjs0cMsIbVNyUBlBQ72bTTkVkQzpAUGQhVQuwbwaw6hs=' \
--data-urlencode 'recurringToken=' \
--data-urlencode 'publicKey=0caa334154789c7b07eda32db6e450acce722dde2c3cb0582eba2fe855e67a4d' \
--data-urlencode 'encrypted=1' \
--data-urlencode 'preauthToken=' \
--data-urlencode 'clickPayNo=' \
--data-urlencode 'dataField3=' \
--data-urlencode 'clickPayToken=' \
--data-urlencode 'callBackUrl=https://dev.nicepay.co.id/IONPAY_CLIENT/paymentResult.jsp?order_id=BMRITEST0102201607291027025291'
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="BMRITEST0102201607291027025291">
<input type="hidden" name="referenceNo" value="ordNo20160729102702">
<input type="hidden" name="payMethod" value="01">
<input type="hidden" name="amt" value="1000">
<input type="hidden" name="transDt" value="20160729">
<input type="hidden" name="transTm" value="102702">
<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">
<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>