The procedures to open a merchant account
The procedures to access to our payment gateway
1.Sign the payment agreement with sales
2.Log in with administrative zone to change login password and md5key and add websites after the account is opened.
3.Contact our technique support staff to finish the access.
4.The website is ready to trade after the interface testing is done.
API documentation
Payment urls in online environment
Page jump urls( credit card payment , yandex paymentand qiwi payment are available )
Production environment:http://pay.rxhpay.com/cross_pay
Production environment 2 (yandex payment and qiwi payment only): http://rucnmall.com/payment/cross_pay
Embedded urls (Only credit card payment
is available so far)
Production environment:http://pay.rxhpay.com/inline_pay
Payment urls in
testing environment
Page jump urls( credit card payment , yandex paymentand qiwi payment are available )
Testing environment:http://payment-test.rxhpay.com:8010/payment/cross_pay
Embedded urls (Only credit card payment is available so far)
Testing environment: http://payment-test.rxhpay.com:8010/payment/inline_pay
Interface platform |
Version number |
qiwi |
yandex |
Page jump urls forcredit card payments |
embedded urls forcredit card payments |
Note |
opencart |
opencart2.1 |
× |
√ |
√ |
√ |
The call paths for load->view() in Version 2.1 and version 2.2 are different. |
opencart2.2 |
× |
√ |
√ |
√ |
||
zencart |
zencart general |
× |
√ |
√ |
√ |
|
magento |
magento 1.x |
× |
× |
× |
√ |
|
magento 2.x |
× |
× |
× |
× |
|
|
Zhongheng |
shopyy |
× |
√ |
√ |
√ |
|
imcart |
× |
√ |
√ |
√ |
|
|
Virtual online disk |
Virtual online disk |
× |
× |
× |
√ |
|
prestashop |
prestashop |
× |
× |
√ |
× |
|
ecshop |
ecshop |
× |
× |
× |
× |
|
.net |
.net |
× |
× |
× |
× |
|
Payment parameters
Parameters |
Definition |
Type(length) |
Explanation |
Null |
|||
Transaction data |
|||||||
MerNo |
Merchant number |
Number |
Add and check in admin zone |
N |
|||
BillNo |
Bill number |
String(50) |
The only order number |
N |
|||
Amount |
Total amount |
Decimal(10,2) |
Round to the nearest hundredth |
N |
|||
Freight |
Freight |
Decimal(10,2) |
Round to the nearest hundredth |
N |
|||
Fee |
fee |
Decimal(10,2) |
Round to the nearest hundredth |
N |
|||
Currency |
Currency |
String(3) |
ISO 42173(In capital letters) |
N |
|||
Custrom Id |
Custrom Id |
String(50) |
|
Y |
|||
GoodList -sub tags- no more than 30 subitems |
|||||||
GoodId |
Product ID |
String(50) |
|
N |
|||
GoodName |
Name of product |
String(50) |
|
N |
|||
Price |
Price of product |
Decimal(10,2) |
|
N |
|||
Qty |
Quantity of product |
Number(6) |
|
N |
|||
Cardholders information |
|||||||
BillFirstName |
FirstName |
String(100) |
|
N |
|||
BillLastName |
LastName |
String(100) |
|
N |
|||
BillAddress |
Address |
String(200) |
|
N |
|||
BillCity |
City |
String(100) |
|
N |
|||
BillState |
State |
String(100) |
|
N |
|||
BillCountry |
Country |
String(100) |
|
N |
|||
BillZip |
Zip code |
String(50) |
|
N |
|||
BillEmail |
|
String(100) |
|
N |
|||
BillPhone |
Phone number |
String(100) |
|
N |
|||
Consignee information |
|||||||
ShipFirstName |
FirstName |
String(100) |
|
N |
|||
ShipLastName |
LastName |
String(100) |
|
N |
|||
ShipAddress |
Address |
String(200) |
|
N |
|||
ShipCity |
City |
String(100) |
|
N |
|||
ShipState |
State |
String(100) |
|
N |
|||
ShipCountry |
Country |
String(100) |
|
N |
|||
ShipZip |
Zip code |
String(50) |
|
N |
|||
ShipEmail |
|
String(100) |
|
N |
|||
ShipPhone |
Phone number |
String(100) |
|
N |
|||
system parameter |
|||||||
Lang |
Page language |
String(10) |
N |
||||
PayMode |
Payment method |
String(32) |
|
N |
|||
PayType |
Types of payment |
String(32) |
|
N |
|||
ReturnURL |
Return URL |
String(100) |
synchronous response |
N |
|||
NotifyURL |
Notify URL |
String(100) |
asynchronous response |
N |
|||
Validation parameters |
|||||||
Remark |
Transaction remark |
String(500) |
|
Y |
|||
Md5Info |
md5 verification code |
String(32) |
In capital letters |
N |
|||
UserAgent |
|
String(150) |
HTTP_USER_AGENT |
N |
|||
Ip |
CustomerIP address |
|
|
Y |
|||
Embedded parameter |
|||||||
CardNo |
Card number |
Number(25) |
Different types of credit cards have different number of digits in their numbers |
N |
|||
IssuingBank |
Issuing bank |
String(100) |
|
Y |
|||
SecurityNum |
Security code |
Number(4) |
Different types of credit cards have different number of digits in their numbers |
N |
|||
ExpireYear |
Valid year |
Number(4) |
|
N |
|||
ExpireMonth |
Valid month |
Number(2) |
|
N |
|||
Note: IP parameter is required in embedded interface. |
|||||||
Payment message
HTML form
<form action="payment url" method="POST">
<input type="hidden" name="tradeInfo" value="xml">
<input type="submit" value="submit">
</form>
Parameter of tradeInfo
The value of tradeInfo is XML message witch is made up of payment parameter.
Transcoding: First encoded by url and then by BASE64.
MD5 encryption rule
Md5Info = MerNo + BillNo + Freight + Amount + Fee + Currency + ReturnURL + Email + Md5Key
Example of XML message
<?xml version="1.0" encoding="utf-8"?>
<Order>
<MerNo>1115</MerNo>
<BillNo>100000099</BillNo>
<Amount>0.02</Amount>
<Fee>1.01</Fee>
<Freight>4.01</Freight>
<Currency>USD</Currency>
<GoodList>
<Goods>
<GoodId >product id</ GoodId >
<GoodName>name of product</GoodName>
<Qty>quantity</Qty>
<Price>price</Price>
</Goods>
<Goods>
<GoodId>1</ GoodId >
<GoodName>Nine West Women's Lucero Pump</GoodName>
<Qty>1</Qty>
<Price>0.01</Price>
</Goods>
</GoodList>
<BillFirstName>test</ BillFirstName >
<BillLastName>test</BillLastName>
<BillPhone>123456</BillPhone>
<BillEmail>287416016@qq.com</BillEmail>
<BillAddress>test</BillAddress>
<BillCity>test</BillCity>
<BillState>test</BillState>
<BillCountry>UY</BillCountry>
<BillZip>123456</BillZip>
<ShipFirstName>test</SFirstName>
<ShipLastName>test</SLastName>
<ShipAddress>testtestUYtesttesttest</ShipAddress>
<ShipCity>test</ShipCity>
<ShipState>test</ShipState>
<ShipCountry>UY</ShipCountry>
<ShipZip>123456</ShipZip>
<ShipPhone>123456</ShipPhone>
<ShipEmail>287416016@qq.com</ShipEmail>
<Lang>en</Lang>
<PayMode >Credit</ PayMode >
<PayType >Visa</ PayType >
<ReturnURL>http://**/</ReturnURL>
<NotifyURL >http://***</ NotifyURL >
<Remark>SDF</Remark>
<Md5Info >C9E4E9DE019404BCFD6E02AA2236FDB7</ Md5Info >
<UserAgent>Mozilla/4.0</UserAgent>
</Order>
The explanation of system parameter
Our company provides payment methods as follows :
1. Credit cards- supported card types:
Visa
Master
JCB
AE
DinersClub
Discover
2. Yandex money-supported types:
PC
AC
GP
SB
AB
PB
3.Qiwi wallet-supported types
qw
mobile
Note : Customers don’t have to fill in the types of credit cards, as they can be detected intelligently.
Qiwi payment: according to the rules of Qiwi, customers’ telephone numbers are directly used as qiwi payment account when making payments, therefore, it’s suggested that the telephone number be confirmed before the payment.
Return payment information
The explanation of return parameter
parameter |
Definition |
Explanation |
billNo |
Bill number |
|
tradeNo |
System order number |
The only returned system order number |
currency |
Payment currency |
ISO 4217 |
amount |
Payment amount |
Round to the nearest hundredth |
succeed |
Payment result |
0:success, 1:failure, 2or98:in the process of paying or timeout |
customerId |
CustomerId |
|
result |
Payment result |
|
md5Info |
Signature |
|
remark |
Remark |
|
MD5 encryption rule
md5Info= billNo + currency+ amount+ succeed+ MD5key
In addition, we will send data to merchants’ NotifyURL by POST method in back-end and merchants must return string“succeed”to show that they have received the payment results.If our platform doesn’t obtain string“succeed”,then our platform will do it again every three hours and will notify merchants by email if after 5 times failed attempts.
POST method:
<form>
<input name="billNo" value="xxx" />
<input name="tradeNo" value="xx" />
<input name="currency" value="xxx" />
<input name="amount" value="xxx" />
<input name="succeed" value="xxx" />
<input name="customerId" value="xxx" />
<input name="result" value="xxx" />
<input name="md5Info" value="xxx" />
<input name="remark" value="xxx" />
</form>
Embedded interface: Directly return back to payment results by csv method
CSV method
Error: tradeNo=;billNo=;succeed=error;result=error;md5Info=;remark=;currency=;amount=
Success: tradeNo=;billNo=;succeed=0;result=;md5Info=;remark=;currency=;amount=
Failure:tradeNo=;billNo=;succeed=1;result=;md5Info=;remark=;currency=;amount=
......
Enumerated list of payment errors
Error code |
Explanation |
1000 |
Content format of message doesn’t meet the rules |
1001 |
Parameter format of message doesn’t meet the rules |
1002 |
Product information doesn’t meet the rules |
1003 |
Error in merchant information |
1004 |
Limit on merchant websites |
1005 |
Prevent refresh |
1006 |
Error in the format of card number |
1007 |
Error in the format of valid month |
1008 |
Error in the format of valid month year |
1009 |
Error in the format of safety code |
1020 |
This payment method is not supported for the moment |
1021 |
This payment type is not supported for the moment |
1022 |
This kind of currency is not supported for now |
1023 |
This payment method is suspended for now. |
2000 |
Limit on brands |
2001 |
Declined due to blacklisted credit card |
2002 |
Declined due to risk control |
2003 |
Exceed the risk control limit,please contact merchant |
2004 |
Exceed the maximum limit,please contact merchant |
3000 |
High-risk order |
3001 |
Connection failure |
3002 |
Failure in inserting returned data |
4000 |
The order is failed to be saved |
4001 |
The payment is in process ,please do not submit repeat payment. |
5000 |
Transaction Failure |
5001 |
Invalid amount of money |
5002 |
Invalid card number |
5003 |
Expired credit card |
5004 |
Error in cvv |
5005 |
Attempts more than restricted number of times |
5006 |
Insufficient balance |
5007 |
Blacklisted credit card |
5008 |
High-risk credit card |
5009 |
Timeout |
6000 |
Internal error |
Download address for payment plugins.