Encryption - Payment API Credit Card
Tentang Encryption - Payment API Credit Card
Encryption - Payment API Credit Card adalah data transaksi pembayaran Kartu Kredit yang wajib melalui proses enkripsi terlebih dahulu dari sisi Merchant.
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 yang digunakan dalam metode enkripsi ini merupakan API Payment yang sama dengan fitur Kartu Kredit Full Payment & Installment, Recurring dan Preauth & Capture.
Perbedaan terdapat pada parameter Data Kartu (cardNo,cardExpYymm,cardCvv dan cardHolderNm) saat Merchant perlu memberikan parameter tersebut melalui proses enkripsi terlebih dahulu ketika melakukan request payment kepada 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>