Standard Integration
Standard or Hosted integration allows merchants to redirect customers to RedDragonPay’s hosted iframe-based payment page. This method simplifies compliance and ensures a secure payment environment.
Checkout API
Create an order form with mentioned below parameters. Once form has been created and submitted then user will be redirected to our payment page. To maximize conversion, we recommend that you redirect customers to the payment gateway in same browser window.
- Amount format is in the least parts without decimals like USD 1.00 will be written as 100
baseUrl = https://sandbox.reddragonpay.com
{Endpoint URL}/pgui/jsp/paymentrequest
Parameter | Data Type | Mandatory |
---|---|---|
APP_ID | Numeric | Yes |
ORDER_ID | Alphanumeric | Yes |
TXNTYPE | Alphabet | Yes |
CUST_NAME | Alphabet | CM |
CUST_FIRST_NAME | Alphabet | Yes |
CUST_LAST_NAME | Alphabet | Yes |
CUST_STREET_ADDRESS1 | Alphanumeric | CM |
CUST_CITY | Alphabet | Yes |
CUST_STATE | Alphabet | Yes |
CUST_COUNTRY | Alphabet | Yes |
CUST_ZIP | Numeric | Yes |
CUST_PHONE | Numeric | Yes |
CUST_EMAIL | Alphanumeric | Yes |
PRODUCT_DESC | Alphanumeric | No |
AMOUNT | Numeric | Yes |
CURRENCY_CODE | Numeric | Yes |
PAYMENT_TYPE | Alphabet | Yes |
CARD_NUMBER | Numeric | Yes |
CARD_EXP_DT | Numeric | Yes |
CVV | Numeric | Yes |
RETURN_URL | URL | Yes |
HASH | Alphanumeric | Yes |
BROWSER_USER_AGENT | Alphanumeric | CM |
BROWSER_LANGUAGE | Alphanumeric | CM |
BROWSER_JAVA_ENABLED | Alpha | CM |
BROWSER_COLOR_DEPTH | Numeric | CM |
BROWSER_SCREEN_HEIGHT | Numeric | CM |
BROWSER_SCREEN_WIDTH | Numeric | CM |
BROWSER_TZ | Numeric | CM |
BROWSER_ACCEPT_HEADER | Alphanumeric | CM |
- CM = Conditional Mandatory
- HASH generation mechanism is shared in section below Appendix.
- ORDER_ID must be the one Merchant used while initiating the transaction
- CURRENCY_CODE must be the one Merchant used while initiating the transaction
- TXNTYPE must be SALE
- AMOUNT must not be in decimal i.e. USD 1.20 should always be mentioned as 120.
- All requests expect amounts to be provided in a currency’s smallest unit (Minor Units). For example, to charge 10.00 USD, provide an amount value of 1000 (that is, 1000 cents).
- Match the response hash that is present in the response against the merchant application calculated hash value using the response params. In case the merchant hash does not match that transaction must not be considered a successful transaction.
PLEASE DO NOT RELY ON ANY OTHER RESPONSE THAN RESPONSE_CODE + STATUS. ALL OTHER MESSAGES MAY CHANGE. ONLY RESPONSE_CODE = 000 + STATUS = ‘Captured’ = SUCCESSFUL TRANSACTION. REST ANY OF THE COMBINATIONS LIKE RESPONSE_CODE =000 + STATUS = Enrolled/PENDING DOES NOT MEAN ITS SUCCESS.
ITS MANDATORY TO IMPLEMENT STATUS ENQUIRY BECAUSE IN CASES WHEN THERE IS NO RESPONSE THROUGH CALLBACK OR RETURN URL DUE TO ANY EXCEPTIONS OR NETWORK ERROR STATUS API CAN HELP GET THE FINAL STATUS OF THE TRANSACTION.
Field Description
S No. | Parameter Name | Data Type |
---|---|---|
1 | CUST_NAME | Customer name |
2 | TXNTYPE | Type of transaction processed |
3 | AMOUNT | Total Sale Amount |
4 | CURRENCY_CODE | 3-digit code of the currency |
5 | ORDER_ID | Merchant reference number |
6 | APP_ID | APP_ID provided to merchant |
7 | TXN_ID | Transaction Id generated by us to identify the current step |
8 | PAYMENT_TYPE | Type of payment mode used by customer |
9 | MOP_TYPE | Method of payment |
10 | CARD_MASK | Masked card number for card txns |
11 | PG_REF_NUM | Id generated by us. Use for further communication, for tracking the full order |
12 | RESPONSE_CODE | Code for transaction status |
13 | RESPONSE_MESSAGE | Response message for transaction status |
14 | HASH | Unique value generated by SHA 256 hashing algorithm |
15 | ECI | Bank issued ECI flag |
16 | AUTH_CODE | Authorization code |
17 | RRN | Bank reference number |
18 | AUTH_CODE | Authorization code |
19 | AVR | Address verification flag |
20 | ACQ_ID | Bank reference number |
21 | STATUS | Transaction status |
22 | CUST_EMAIL | Echo back field |
23 | CUST_ID | Echo back field |
24 | CUST_PHONE | Echo back field |
25 | PG_TXN_MESSAGE | Detailed message for transaction |
26 | RETURN_URL | Echo back field |
27 | RESPONSE_DATE | Response date |
28 | RESPONSE_TIME | Response time |
29 | PRODUCT_DESC | Echo back field |
30 | CARD_ISSUER_BANK | Card issuer bank |
31 | CARD_ISSUER_COUNTRY | Card issuer country |
32 | TOTAL_AMOUNT | Total amount debited to customer in case of surcharge model |
Embed Iframe
- Create an order similar to checkout API mentioned above with following changes:
<link rel="stylesheet" href="{baseUrl}/pgui/checkoutlibrary/checkout.min.css">
<script src="{baseUrl}/pgui/checkoutlibrary/checkout.min.js"></script>
onsubmit="return checkoutSubmitHandler(this);" target="checkout-iframe"
Sample html
- A sample html is provided below for the same. Kindly add/change a couple of details as follows:
- URL
- APP_ID
- Mandatory fields
- Generate a valid hash accordingly
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="viewport" content="width=device-width,initial-scale=1"><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>NT Demo Merchant Checkout Page</title><link rel="stylesheet" href="{baseUrl}/pgui/checkoutlibrary/checkout.min.css"><script src="{baseUrl}/pgui/checkoutlibrary/checkout.min.js"></script><script>function autoPop(){document.getElementById("ORDER_ID").value="TEST"+String((new Date).getTime());var t=new Date,e=String(t.getFullYear()).concat("-").concat(String(t.getMonth()+1)).concat("-").concat(String(t.getDate()));document.getElementById("txnDate").value=e}</script><style type="text/css">body{width:100%;margin:0 auto;background-color:#e4eff5}.new{width:500px;margin:20px auto 0 auto;padding:0;font:normal 12px arial;color:#555;background:#fff;border:1px solid #d0d0d0;border-radius:5px;-webkit-box-shadow:-1px 3px 8px -1px rgba(0,0,0,.75);-moz-box-shadow:-1px 3px 8px -1px rgba(0,0,0,.75);box-shadow:-1px 3px 8px -1px rgba(0,0,0,.75)}.signupbox{margin:20px auto 0 auto;padding:0;font:normal 12px arial;color:#555;background:#fff;border:1px solid #d0d0d0;border-radius:5px;-webkit-box-shadow:-1px 3px 8px -1px rgba(0,0,0,.75);-moz-box-shadow:-1px 3px 8px -1px rgba(0,0,0,.75);box-shadow:-1px 3px 8px -1px rgba(0,0,0,.75)}.signup-headingbg{background:#194e84;background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:5px 5px;height:35px;border-bottom:1px solid #dadada;font:bold 16px Tahoma;color:#fff;vertical-align:middle}.signuptextfield{display:block;width:98%;height:15px;padding:6px 7px;margin-left:10px;font-size:12px;font-family:'Titillium Web',sans-serif;line-height:1.428571429;color:#555;margin-bottom:5px;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.signuptextfield:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.labelfont{font:bold 11px Arial;color:#607a8c;text-decoration:none}.signupbutton{background-color:#5cb85c;border:1px solid #4cae4c;width:40%;height:35px;font:bold 14px Tahoma;text-align:center;color:#fff;cursor:pointer;border-radius:5px}.signupbutton:hover{background-color:#449d44;border:1px solid #398439;width:40%;height:35px;font:bold 14px Tahoma;text-align:center;color:#fff;cursor:pointer;border-radius:5px}.borderleftradius{border-top-left-radius:5px}.borderrightradius{border-top-right-radius:5px}.gradientbg{background-image:-ms-linear-gradient(top,#fefeff 0,#bfd3e1 100%);background-image:-moz-linear-gradient(top,#fefeff 0,#bfd3e1 100%);background-image:-o-linear-gradient(top,#fefeff 0,#bfd3e1 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fefeff),color-stop(1,#bfd3e1));background-image:-webkit-linear-gradient(top,#fefeff 0,#bfd3e1 100%);background-image:linear-gradient(to bottom,#fefeff 0,#bfd3e1 100%)}.pg-iframe{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:fixed;top:0;left:0;background-color:rgba(255,255,255,.8)}.pg-iframe iframe{width:100%;max-width:420px}</style></head><body onload="autoPop()"><div class="new"><form action="{baseUrl}/pgui/jsp/paymentrequest" onsubmit="return checkoutSubmitHandler(this)" target="checkout-iframe" method="post"><table width="500" border="0" align="center" cellpadding="0" cellspacing="0" class="gradientbg"><tr><td colspan="3" align="center" valign="middle"></tr><tr><td colspan="3" align="center" valign="middle" class="signup-headingbg borderleftradius borderrightradius">Demo Checkout Page</td></tr><tr><td align="right" valign="middle"> </td><td align="center" valign="middle"> </td><td align="center" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">APP ID:</td><td width="65%" align="left" valign="middle"><input type="text" name="APP_ID" class="signuptextfield" value="1234567890123456" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">ORDER ID:</td><td width="65%" align="left" valign="middle"><input type="text" id="ORDER_ID" name="ORDER_ID" class="signuptextfield" value="TEST00000000001" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">AMOUNT:</td><td width="65%" align="left" valign="middle"><input type="text" name="AMOUNT" class="signuptextfield" value="1000" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">TXNTYPE:</td><td width="65%" align="left" valign="middle"><input type="text" name="TXNTYPE" class="signuptextfield" value="SALE" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER ADDRESS:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_STREET_ADDRESS1" class="signuptextfield" value="Dummy Road" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER FIRST NAME:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_FIRST_NAME" class="signuptextfield" value="Dummy" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER LAST NAME:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_LAST_NAME" class="signuptextfield" value="Name" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER CITY:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_CITY" class="signuptextfield" value="Dubai" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER State:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_STATE" class="signuptextfield" value="UAE" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER COUNTRY:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_COUNTRY" class="signuptextfield" value="AE" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER ZIP:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_ZIP" value="122016" class="signuptextfield" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER PHONE:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_PHONE" value="0987654321" class="signuptextfield" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CUSTOMER EMAIL ID:</td><td width="65%" align="left" valign="middle"><input type="text" name="CUST_EMAIL" class="signuptextfield" value="test@yopmail.com" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">CURRENCY CODE:</td><td width="65%" align="left" valign="middle"><input type="text" name="CURRENCY_CODE" class="signuptextfield" value="840" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">RETURN URL:</td><td width="65%" align="left" valign="middle"><input type="text" name="RETURN_URL" class="signuptextfield" value="{baseUrl}/pgui/jsp/response.jsp" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td width="28%" align="right" valign="middle" class="labelfont">HASH:</td><td width="65%" align="left" valign="middle"><input type="text" name="HASH" class="signuptextfield" value="3323C83D4EDD3EA9CB9F503A16BDB3047DC2AAB29F7BDB0304DDB67AABD2AD4A3323C83D4EDD3EA9CB9F503A16BDB3047DC2AAB29F7BDB0304DDB67AABD2AD4A" autocomplete="off"></td><td width="7%" align="left" valign="middle"> </td></tr><tr><td colspan="3" align="center" valign="middle"> </td></tr><tr><td colspan="3" align="center" valign="middle"><input type="submit" name="button" id="button" class="signupbutton" value="Pay Now"></td></tr><tr><td colspan="3" align="center" valign="middle"> </td></tr></table></form></div></body></html>