SUnit Payment SDK Android Document(EN) - sunitsdk/SUnitDemo GitHub Wiki
[toc]
Environment | Address |
---|---|
Test | https://pay-gate-uat.shareitpay.in/aggregate-pay-gate/api/gateway |
Prod | https://pay-gate.shareitpay.in/aggregate-pay-gate/api/gateway |
The Merchant ID and Secret Key required for disbursement integration can be obtained on the "Config"- "Settings" page through the Merchant Management Platform. Through Merchant Management Platform, Merchant can obtain two sets of different Merchant ID and Secret Key for Testing and Production environments. The Secret Key of Testing environment can be generated directly, but the Secret Key of Production environment can only be generated after the contract is signed. Please keep the Secret Key properly. If you accidentally leak the key, please reset the key on the "Config" page in time.
Merchant needs to provide a callback URL to SHAREit Pay, which will be called by SHAREit Pay servers when notifying the disbursement result. The URL can be submitted by calling the corresponding parameter of the disbursement interface, or can be set through the Merchant Management Platform. The callback URL submitted by the disbursement interface has higher priority than the URL which set by the Merchant Management Platform. Merchant can configure the callback URL on the "Config"-"Settings" page through the Merchant Management Platform.
MD5 signature applies to all requests made through the API interface, and the Token is only applicable to the Android SDK call request.
MD5 signature
Put all the data sent or received as a collection M; Sort all of the non-empty parameter values in the collection M and according to the parameter name ASCII code from small to large (dictionary order); Using the URL key-value pair format (ie key1=value1&key2=value2...) to concatenate the collection M into the string A.
Please pay attention to the following rules: 1.Parameter names are sorted by ASCII code from small to large (dictionary order); 2.Parameter names are case sensitive; 3.When the verification call returns or SHAREit Pay actively notifies the signature, the transmitted sign parameter does not participate in the signature, and the generated signature is verified with the sign value; 4.SHAREit Pay interface may add fields, and the extension field needs to be supported when verifying the signature; 5.When the value of the parameter is null, it does not participate in the signature; But it participates in when it's an empty string (""). 6.For the data body in the SHAREit Pay response, check is allowed. For details, see the check example.
Put the key in the last stitch of stringA, then the stringSignTemp string is obtained; The MD5 operation is performed on the stringSignTemp, and then all characters of the obtained string are converted into uppercase to obtain the signValue
In the current sample program, SHAREit Pay provides a toolkit for signing (SignMD5Utils.java), which is called as follows. The merchant can call this method to generate a signature based on the actual request parameters.(Demo Download)
Assume the parameters transmitted are as follows:
params = {
"bizType": "payTransQuery",
"merchantId": "SP4189603",
"version": "2.1",
"orderId": "1535433516149"
}
Merchant secret key:rqDaYMfPklU4Ga5n If you use the package checking and encapsulation tool provided by SHAREit Pay, you can directly pass in the parameters and keys and call to generate a signature:
sign = signForMD5(params, "rqDaYMfPklU4Ga5n");
Complete parameter assembly。
If the development language does not provide the corresponding package and check and sign tool class, follow the steps below to complete the signing:
- Sort the parameters according to the format of key = value, and the ASCII dictionary order of the parameter names is as follows:
A = "bizType=payTransQuery&merchantId=SP4189603&orderId=1535433516149&version=2.1";
- Get the signature (where the method to get the md5 value of the string is: MD5 ()):
signTemp = A + "&key=AvCsZGBXewShPt8M"
sign = MD5(signTemp).toUpperCase() //Signed value is "1608D2F69FF80427B9FAA1F025E21603"
- Assembly request parameters
{
"bizType": "payTransQuery",
"merchantId": "SP4189603",
"version": "2.1",
"orderId": "1535433516149",
"sign": "1608D2F69FF80427B9FAA1F025E21603"
}
2.4 Sample verification example (Merchant accepts SHAREit Pay server response or callback notification)
Note:Merchants accepting ** SHAREit Pay server response verification check only need to check the parameters in the data body **, the callback notification can directly check the request parameters accepted by SHAREit Pay notification。 If the response to the order query is:
{
"data": {
"amount":"1.00",
"tradeNo": "TRADE20190814080829664128262",
"orderId": "test_orderId_001",
"sign": "8BF621FAD5839DB823CFCCFB364FC174",
"errorCode": "E001",
"currency": "INR",
"errorMsg": "time out",
"status": 2
},
"bizCode": "0000"
}
The parameters that need to be checked are as follows:
{
"amount":"1.00",
"tradeNo": "TRADE20190814080829664128262",
"orderId": "test_orderId_001",
"sign": "8BF621FAD5839DB823CFCCFB364FC174",
"errorCode": "E001",
"currency": "INR",
"errorMsg": "time out",
"status": 2
}
Merchant secret key: key = rqDaYMfPklU4Ga5n If you use the package checking and encapsulation tool provided by SHAREit Pay, you can directly pass in parameters and keys, and call to verify the signature:
sign = "8BF621FAD5839DB823CFCCFB364FC174";
successflag = verifyForMD5 (params, sign,"rqDaYMfPklU4Ga5n");
successflag = true (Passed), successflag = false (Failed)。
If the development language does not provide a response encapsulation and verification tool class, follow these steps to complete the signing:
- Sort the parameters according to the format of key = value, and the ASCII dictionary order of the parameter names is as follows:
A = "amount=1.00¤cy=INR&errorCode=E001&errorMsg=time out&orderId=test_orderId_001&status=2&tradeNo=TRADE20190814080829664128262";
- Get the signature (where the method to get the md5 value of the string is: MD5 ()):
signTemp= A + "&key=rqDaYMfPklU4Ga5n"
newSign = MD5(signTemp).toUpperCase()//Signed value is "0649DEF0CFE2721071DC6E5107E21F1B"
- Match signature Determine whether the response or request parameter sign is equal to newSign.
Before the merchant places an order in the SDK, fetch token is required for security reasons. The token should be obtained by the merchant's server to the SHAREit Pay server and returned for the merchant to place an order.
Parameter | Type | Required | Max Length | Description | Sample |
merchantId | String | Yes | 30 | Merchant ID (assigned by SHAREit Pay) | SP4189603 |
bizType | String | Yes | 30 | Business type of the request. It needs to be passed with value “token”here | token |
version | String | Yes | 5 | API version, currently always pass“1.0” | 1.0 |
secretKey | String | Yes | 64 | Merchant security key (assigned by SHAREit) | ca8ab4754d2ce6ef |
Parameter | Type | Required | Description | Sample |
bizCode | String | Yes | biz Code | 0000 |
message | String | Yes | message | success |
displayMsg | String | Yes | display message | success |
data | String | Yes | token |
Request parameters
{
"merchantId" : "SP4189603"
"bizType" : "token"
"version" : "1.0"
"secretKey" : "ca8ab4754d2ce6ef"
}
Response
{
"bizCode" : "0000",
"message" : "success",
"displayMsg" : "success",
"data" :
"Rdhx+bSZTVQhvUKZnRDFusldVL3FuDWO7sNc9uzjG+5A3jnyVf6oPn48FPqQHrQ8PGIW1gXTIWHPX7xwDi/M36fKdgf+KyHvLCRW1Cpg2y1qbz1qLIeFsoJgdxchxdgE"
}
When a merchant integrates SHAREit pay service, all API calls need to follow the following rules:
Transmission method | To ensure transaction security, HTTPS transmission is adopted. |
Submission method | Submitted by POST |
Data format | Submit and return data are in application/json format |
Character encoding | UTF-8 |
Signature algorithm | MD5 |
Signature requirements | The verification signature is required for both request and response. For details, please refer to【MD5 signature】 |
Judgment logic | First judges the return of the protocol field, then judges the return of the business, and finally judges the transaction status. |
In test environment, in order to facilitate debugging treatment procedure of different payment results for merchants in the integration phase, the SHAREit Pay Payment Cashier Desk provides a setup page for simulated payment results (as shown). When merchant is debugging by choosing any payment method, inputting random payment account and other necessary information for payment (the test environment does not verify the authenticity of the account), eventually all results will be displayed on the page.*
The page shown below provides three payment results: Paid successfully, Payment failed and Pending. Merchants can choose corresponding payment results according to the needs of business process debugging. For merchant App client, no matter what payment result is chosen, callback notification can be received. For merchant server, callback notification can be received only when reaching the final payment state such as paid successfully or payment failed.
- Java version:SHAREit_Payment_Demo(Java).zip
- PHP version:SHAREit_Payment_Demo(PHP).zip
- cURL version:SHAREit_Payment_Demo(cURL).zip
- Ruby version:SHAREit_Payment_Demo(Ruby).zip
- Nodejs version:SHAREit_Payment_Demo(Nodejs).zip
- Python version:SHAREit_Payment_Demo(Python).zip
- C# version:SHAREit_Pay_Service_Demo(C#).zip
Active production environment should meet the two conditions: 1. KYC certified; contract signed.
After technical integration is completed, it is recommended to test the function according to the following use cases.
Please confirm whether the countryCode and currency parameters are passed in correctly. Country & Region Codes
- If the countryCode and currency parameters don't match, the order status will fail.
- When accessing payment methods in multiple countries, you need to pay special attention to whether the countryCode and currency parameters are the same.
- If there is a commercial strategy, it is necessary to pay special attention that the amount parameter passed in should be the user's actual payment amount.
Please confirm whether the callbackUrl is configured correctly. There are two ways to configure callback URL: 1. through requested parameters; 2.through the Merchant Management Platform. Configure Methods
- Correctly configuring the callbackUrl can obtain order status timely.
Please confirm whether the order status given by SHAREit Pay is correctly understood and processed.
- You can update order status through asynchronous notification or result query.
- Incorrect understanding of order status may result in loss of funds.
- Order status descriptions as follows: -- status=0 Pending(not final status) Customer is paying: Which means you need to wait for the callback notification from SHAREit Pay, or get the latest results of the transaction by query. -- status=1 Success Customer has paid successfully: Please provide the customer with the purchased service, such as recharge, goods, membership, etc. -- status=2 Failure Customer payment failed: Please handle the order as payment failure, the status of this order will not change to success.
Please confirm whether the order information is stored on the server end to avoid user or order data loss.t
- It is recommended to store customers' payments data on the server end to ensure that it will not be lost in the following scenarios. -- Overwrite installation -- Customers quit or closes the APP -- Clear the APP cookie
Please ensure that the customer ID (custId) passed in is unique to avoid revealing the customer's personal information.
- We will recommend the successful payment method based on the custId.
- If the you cannot guarantee the uniqueness of custID, users will see other customers' payment informations.
If you need SHAREit Pay to assist in the technical integration, please contact your account manager and provide the following information:
- The APP installation package or H5 link URL which invovled SHAREit Pay checkout
- Inform the checkout entrance
- Provide test account
The merchant ID of production environment is the same as it of testing environments.
Login Merchant Platform and enter [Config] - [Settings] page to get the Merchant ID.
The Secret key of the production environment needs to be regenerated.
Login Merchant Platform and enter [Config] - [Settings] page to generate the secret key.
The callback URL of the production environment needs to be reset. There are two ways to configure callback URL:
- Enter “Config” – “Settings” page of Merchant Platform to config callback URL.
- You can configure the callback URL in requested parameters. More Details Notice: The callback URL configured by the interface has higher priority than the URL which configured by the Merchant Platform.
The service address of the production environment is different from the testing environment. Please pay attention to it.
Service | Service Address |
---|---|
Payment Service | https://pay-gate.shareitpay.in/aggregate-pay-gate/api/gateway |
SHAREit Pay Payment Service provides merchants with three forms of integration, including integration of Android SDK Payment, integration of standard API Payment and integration of SHAREit Pay app built-in cashier desk. Payment services support a variety of payment methods including electronic wallet, credit card, debit card, UPI, online banking and offline collection.
Business Process
1.1 Users select and buy commodities from merchants, and confirm purchase;
1.2 Through SDK or API, merchants initiate collection requests to SHAREit Pay, and obtain the SHAREit Pay Cashier Desk which can be opened in their own application, will be shown to users;
1.3 According to the guide of the cashier desk page, users select payment methods to complete the payment;
1.4 SHAREit Pay notifies merchants based on actual payment results:
- Cashier desk page jumps to the front desk callback address designated by merchant;
- When server is informed of the final payment state, it asynchronously pushes the payment result of the order to the callback URL designated by merchant;
1.5 Merchants also can call the order inquiry interface by their own to inquire order details;
1.6 If a merchant needs to initiate a refund on a successfully paid collection order, he or she can invoke the refund request interface to initiate the application; the result of the refund order can be known through the order inquiry interface or asynchronous result callback.
By integrating this SDK, merchants can open the checkout page directly in their Android applications.
-
Get the token necessary to call the SDK checkout
-
Call the SDK checkout page for users to pay
-
Receive a preliminary notice and process the order based on the payment result
SDK connection environment can be set via the function below.
Environment | Setting |
TestEnv | SHAREitSDK.SHAREitSDK("Test") |
ProdEnv | SHAREitSDK.SHAREitSDK("Prod") |
refer to 【Method Parameters】for parameter description.
MerchantParamBean.Builder builder = MerchantParamBean.Builder()
.setToken("123456") //Required
.setBizType("STANDARD") //Required
.setMerchantId("SP4189603") //Required
.setOrderId("1535433516149") //Required
.setTotalAmount("100") //Required
.setCurrency("INR") //Required
.setCountryCode("IN") //Required
.setUserId("123456789") //Required
.setSubject("iPhone 16G") //Required
.setDescription("") //Optional
.setReference("item157") //Optional
.setCallbackUrl("http://***.com/callback") //Optional
.setLanguage("en") //Optional
.setPaymentDetail("") //Optional
.setUserDetail("") //Optional
.setShowResult(MerchantParamBean.PAY_RESULT_TYPE_SDK) //Optional
.setExpireTime(1800); //Optional
MerchantParamBean merchantParam = builder.build();
SHAREitSDK.SHAREitSDK shareitSDK= new SHAREitSDK.SHAREitSDK ();
shareitSDK.startPayActivity(this, merchantParam, new SHAREitSDK.PayResultListener((int code, string orderId, string message, string reference) =>
{
string result = "code=" + code + " orderId=" + orderId + " message=" + message + " reference=" + reference;
Debug.Log(TAG + " startPayActivity result " + result);
if (payCode == 10000)
Debug.Log(TAG + " Payment success");
else if (payCode == 10001)
Debug.Log(TAG + " Payment pending");
else
Debug.Log(TAG + " Payment failed");
showDialog(result);
});
For latest use, please refer to SUnitUnityDemo (provided by SHAREit with SDK together).
After the payment is completed, SDK will callback App by executing function onResult(int code, String orderId, String message, String reference) of interface SPPayCallback. Please refer to【Asynchronous call-back descriptions on payment results】.
Request and Response data format: application/json
Parameter | Type | Required | Max Length | Description | Sample |
token | String | Yes | Merchant server gets from payment server. Refer to 【Request Token】 for detail. | 123456 | |
bizType | String | Yes | 20 | Corresponding to the authorized payment service, you can consult business. Such as: STANDARD, IN_CB. | STANDARD |
merchantId | String | Yes | 30 | Merchant id assigned by SHAREit | SP4189603 |
orderId | String | Yes | 64 | Merchant order id, only includes letters, numbers, underscores. Different for each payment order | 1535433516149 |
totalAmount | String | Yes | 10 | Payment amount. Two decimals within range [1, 100000000]. Note: Decimal part is not supported in Indonesia. | 100.05 |
currency | String | Yes | 3 | Currency code in capital alphabet. Refer to 【Country & Region Codes】 | INR |
countryCode | String | Yes | Country code in capital alphabet. Refer to 【Country & Region Codes】 | ||
userId | String | Yes | 50 | User ID defined by merchant | 123456789 |
subject | String | Yes | 256 | Subject of order, which will be shown on cashier system. Suggest to assign goods title. | iPhone 16G |
description | String | No | 256 | Additional description of order | |
reference | String | No | 512 | Can be customized by merchants, feedback this field in the callback. | Item157 |
callbackUrl | String | No | 256 | Back-end callback URL for trade result | http://***.com/callback |
language | String | No | Language setting for cashier system. Lower case with “en” as the default value. Refer to Refer to 【Language code】 for detail. | en, hi,fil | |
+ paymentDetail | String | No | 256 | Payment information, the content is a JSON format string. | { "paymentType": "00" } |
└ paymentType | String | No | 20 | Payment method code. Available when bizType = IN_CB. For more information, please contact the business staff. | "00" |
+ userDetail | String | No | 512 | User information, the content is a JSON format string, the specific content contains the following fields. | {"name":"CustName","email":"com@iup","phoneNumber":"50000000","districtCode":"965"} |
└ name | String | No | Payer name | ||
String | No | 32 | Payer email address | [email protected] | |
└ phoneNumber | String | No | 15 | Payer mobile no. It will be used as the default choice for any payment channel which requires mobile no field | 9101234123 |
└ districtCode | String | No | The international area code of the payer's mobile. | ||
└ citizenIdNo | String | No | 10 | When bizType is IN_CB, this field is the payer's identification number. In India: 10-digit Pan card number (ie Indian permanent tax account number) | EBZPV8569H |
└ deviceId | String | No | Payer device identify | ||
└ ip | String | No | Payer device IP address | 127.0.0.1 | |
showResult | String | No | 1 | Define whether to show SHAREit Pay result page. 0 = no; 1 = yes. Value ‘1’ by default. | 1 |
expireTime | long | No | Only available when bizType=STANDARD. Define the payment duration in seconds, which is only available in India. If the order has not been completed within the duration, it will be closed. Range up to 72 hours. The default duration is 30 minutes(1800 seconds). | 600 |
Parameter | Type | Description | Sample |
code | int | Status code(10000 means “Transaction Success”; 10001 means “Transaction in Process”; Other values indicate “Request Error or Transaction Failure”. Refer to 【Status Code】) | 1000 |
message | String | Success or failure description | Success |
orderId | String | Merchant order id | 1535433516149 |
extra | String | Parameters from merchant, same with extra in the order request |
Code with value 10001 means “Pay in Process”, which means that the final status of the order is unknown. Merchants can learn about the order results by waiting for an asynchronous callback from the SHAREit Pay server, or by actively invoking the result query service. When the order jumps to the "success" or "failure" final state, the asynchronous callback service will actively notify the merchant.
bizType | Service authority name |
STANDARD① | Standard payment |
IN_CB | India Cross-border payment |
Note: ① Applicable to local collections in India and collections in other countries.
paymentType① | Payment method name |
00 | UPI |
05 | Paytm |
03 | Net Banking |
Note: ① paymentType is only available when bizType = IN_CB.
Code | Description |
10000 | Transaction success |
10001 | Transaction process |
10002 | Transaction failed |
10003 | Unknown error |
10009 | User cancelled |
In addition to integrating the above SDK, merchants are advised to pay attention to the following services in order to provide more complete collection services to your users
1. Notification Callback Interface
All payment methods in India support refund while payment methods in other countries do not support at present.
Request and Response data format: application/json
Parameter | Type | Required | Max Length | Description | Sample |
merchantId | String | Yes | 30 | Merchant ID assigned by SHAREit Pay | SP4189603 |
bizType | String | Yes | 30 | Business type. Value “refundApply” needs be passed here | refundApply |
version | String | Yes | 5 | API version, currently always pass “2.1” | 2.1 |
refundId | String | Yes | 64 | Refund request id | 20181112112606266846 |
orderId | String | Yes | 64 | Original merchant order id | 1535433516149 |
amount | String | Yes | 64 | Refund amount, must equals to original payment amount. Currently partial refund is not supported. | 1000 |
currency | String | Yes | 3 | Currency code in capital alphabet. Refer to 【Country & Region Codes】(currently only India supports refund) | INR |
sign | String | Yes | 64 | MD5 algorithm by java, refer to 【MD5 signature】 | Signature |
callbackUrl | String | No | 256 | Refund result callback URL | https://***.com/revMsg |
comment | String | No | 256 | Refund comments | Sales return |
Request Parameters:
{
"merchantId" : "SP4189603",
"bizType" : "refundApply",
"version" : "2.1",
"refundId" : "20181112112606266846",
"orderId" : "1535433516149",
"amount" : "1000",
"currency": "INR",
"sign": "347453016A8C448A7E9449F8D7CE3A51",
"callbackUrl" : "https://***.com/revMsg",
"comment" : "Sales return"
}
Parameter | Type | Required | Max.length | Description | Sample |
bizCode | String | Yes | 10 | Response code | 0000 |
data | Object | Yes | Response body,refer to the below【data parameters】 | ||
message | String | No | 256 | Response description, interface error prompt | success |
data参数
Parameter | Type | Required | Max.length | Description | Sample |
refundId | String | Yes | 64 | Merchant refund request serial number | 20181112112606266846 |
tradeNo | String | Yes | 64 | The shareit-pay original Platform Order ID | REFTRADE20190415060401022956957 |
orderId | String | Yes | 64 | The original Merchant Order ID | 1535433516149 |
refundAmount | Number | Yes | 12 | Actual refund amount | 1000 |
currency | String | Yes | 64 | For Currency Code, capital letters,see【Country & Region Codes】(currently only India supports refund) | INR |
errorCode | String | No | 64 | Refund error code | |
errorMsg | String | No | 256 | Refund error result |
Response parameters:
{
"bizCode" : "0000", // Indicates the request is received successfully
"message" : "success",
"displayMsg" : "success",
"data": {
"refundId" : "20181112112606266846",
"tradeNo" : "REFTRADE20190415060401022956957",
"orderId" : "1535433516149",
"refundAmount" : 1000,
"currency": "INR",
"errorCode" : "",
"errorMsg" : ""
}
}
Note: 1.Subject to channel constraints, the refund status is only for querying whether the acceptance is successful, and it does not support querying the actual status of refund processing for the time being. However, various channels generally follow the following rules to process refunds: After the refund request is successfully accepted, the funds will be returned to the bank card or account used by the user within 5-21 days. 2.The merchant can answer the user according to the above caliber. If the user-side refund is not processed within the valid time, please contact SHAREit Pay for after-sales support.
After the payment is completed, SHAREit will send the relevant payment results to the merchant in the form of data streams. The merchant needs to receive and process them, and responds according to the document specifications.
1.1 The same notification may be sent to the merchant system several times. The merchant system must be able to handle duplicate notifications correctly.
1.2 When backend notification interaction occurs, if SHAREit Pay receives the merchant response does not conform to the specifications or exceeds the time limit, SHAREit Pay will determine the failure of the notification and re-send the notification until it succeeds (in the case of unsuccessful notification, SHAREit Pay will issue multiple notifications with a frequency of 10s/20s/30s/60s/120s-a total of 6 times), but SHAREit Pay cannot guarantee that these notifications will eventually be successful.
1.3 In case the order status is unknown or SHAREit Pay payment result notification has not been received, it is suggested that merchants active call the【Payment Result Query】of SHAREit Pay to confirm the order status.
Notice: 1.The merchant system needs to verify the content of the payment result notification by signature, and check whether the returned order amount is consistent with the merchant’s order amount, so as to prevent data leakage from causing "false notification" and causing financial losses. 2.When receive a notification for processing, we should first check the status of the corresponding business data to determine whether the notification has been processed, keep processing if it has not been processed, or return a successful result directly if it has been processed. Before checking and processing the status of business data, data lock should be used for concurrency control to avoid data confusion caused by function reentry.
Request and Response data format: application/json
Parameter | Type | Required | Description |
merchantId | String | Yes | Merchant ID assigned by SHAREit Pay |
tradeOrderNo | String | Yes | Trade order number defined by SHAREit Pay |
orderId | String | Yes | Original merchant order id |
status | Number | Yes | 1 - Success; 2 - Failure |
countryCode | String | Yes | Country code, refer to 【Country & Region Codes】 |
totalAmount | string | Yes | Transaction amount transferred from merchant |
currency | string | Yes | The transaction currency introduced by the merchant is US dollars in the US dollar receipt scenario |
payAmount | string | Yes | Payment amount actually paid for the user |
payCurrency | string | Yes | Currency actually paid for the user |
exchangeRate | string | Yes | Exchange rate used to convert transaction amount to payment amount |
errorCode | String | Yes | Error code for payment failure. Empty string if payment success. |
errorMsg | String | Yes | Error message for payment failure. Empty string if payment success. |
sign | String | Yes | Signature, refer to 【MD5 signature】 |
After receiving the SHAREit Pay payment result notification, please follow the requirements and return the parameters to SHAREit Pay according to the following example:
Parameter name | Parameter type | Required or not | Parameter Description | Sample value |
result_code | Number | Yes | result code | 200 |
message | String | Yes | result message | SUCCESS |
1.Asynchronous Notification Content Example:
{
"merchantId" : "SP4189603",
"tradeOrderNo" : "TRADE20190415060455960905821",
"orderId" : "1535433516149 ",
"status" : 2,
"countryCode" : "IN",
"totalAmount": "1",
"currency": "USD",
"payAmount": "78",
"payCurrency": "INR",
"exchangeRate": "78",
"errorCode" : "9999",
"errorMsg" : "Execute exception",
"sign" : "246b49c12eaa96407a7be96d80f10f29 "
}
}
2.Merchant Server Response Example:
{
"result_code" : 200,
"message" : "SUCCESS"
}
Request and Response data format: application/json
Parameter | Type | Required | Description |
merchantId | String | Yes | Merchant id assigned by SHAREit Pay |
refundId | String | Yes | Merchant refund id |
tradeNo | String | Yes | Original SHAREit Pay trade order number |
orderId | String | Yes | Original merchant order id |
refundAmount | String | Yes | Refund amount |
currency | String | Yes | Currency code in capital alphabet. Refer to 【Country & Region Codes】 |
status | String | Yes | Refund status: "1" - success, "2" - failure |
sign | String | Yes | Signature, refer to 【MD5 signature】 |
errorCode | String | No | Error code for failed refund, and will be empty string if refund success |
errorMsg | String | No | Error message for failed refund, and will be empty string if refund success |
After receiving the SHAREit Pay payment result notification, please follow the requirements and return the parameters to SHAREit Pay according to the following example:
Parameter name | Parameter type | Required or not | Parameter Description | Sample value |
result_code | Number | Yes | result code | 200 |
message | String | Yes | result message | SUCCESS |
Asynchronous Notification Content Example:
{
"merchantId" : "SP4189603",
"refundId" : "20181112112606266846",
"tradeNo" : "REFTRADE20190415060401022956957",
"orderId" : "1535433516149",
"refundAmount" : "1000",
"currency": "INR",
"status" : "1",
"errorCode" : "",
"errorMsg" : "",
"sign" : "055e10f63af852bdac8fa174c65f2f8a"
}
Merchant Server Response Example:
{
"result_code" : 200,
"message" : "SUCCESS"
}
Request and Response data format: application/json
Parameter | Type | Required | Max Length | Description | Sample |
merchantId | String | Yes | 30 | Merchant ID assigned by SHAREit Pay | SP4189603 |
bizType | String | Yes | 30 | Business type. Value “payTransQry” needs to be passed here | payTransQry |
version | String | Yes | 5 | API version, currently always pass “2.3” | 2.3 |
orderId | String | Yes | 64 | Merchant order id | 1543911807566 |
sign | String | Yes | 64 | MD5 algorithm by java, refer to 【MD5 signature】 | 6501C667567BE1E42950BDDF259FD7E7 |
Request Parameters:
{
"bizType ": "payTransQuery",
"merchantId": "SP4189603",
"orderId": "1543911807566",
"version": "2.3",
"sign": "6501C667567BE1E42950BDDF259FD7E7"
}
Parameter | Type | Required | Max Length | Description | Sample |
bizCode | String | Yes | 10 | Response code | 0000 |
data | Object | Yes | Response body,refer to the below【data parameters】 |
data parameters
Parameter | Type | Required | Max Length | Description | Sample |
tradeNo | String | Yes | 64 | shareit-pay platform order number | TRADE20181204081243021279830 |
orderId | String | Yes | 64 | Merchant order number | 1543911807566 |
status | Number | Yes | 2 | The order status:0-Pending,1-Success,2-Failed; This parameter shows the current order status. The existing order status will be returned when the request is repeated. | 0 |
totalAmount | String | Yes | 12 | Transaction amount transferred from merchant,value range:[1, 100000000],two decimal places at most. Note: small amount is not supported in Indonesia. | 1 |
currency | String | Yes | 3 | Transaction currency transferred from merchant, in capital letters,see【Country & Region Codes】 | USD |
payAmount | string | Yes | 12 | Payment amount actually paid for the user | 78 |
payCurrency | string | Yes | 3 | Transaction currency transferred from merchant, in capital letters,see【Country & Region Codes】 | INR |
exchangeRate | string | Yes | 16 | Exchange rate used to convert transaction amount to payment amount | 78 |
errorCode | String | Yes | 64 | Error code for payment failure. Empty string if payment success. | 9999 |
errorMsg | String | Yes | 256 | Error message for payment failure. Empty string if payment success. | Execute exception |
sign | String | Yes | 64 | For the MD5 character string signature, see 【MD5 signature】 | DB73C116DE2F220A68BB96542885E171 |
Response:
{
"data": {
"tradeNo": "TRADE20181204081243021279830",
"orderId": "1543911807566",
"status": 1, // 0: In Process; 1: Pay Success; 2: Pay Failure
"totalAmount": "1",
"currency": "USD",
"payAmount": "78",
"payCurrency": "INR",
"exchangeRate": "78",
"errorCode": “”,
"errorMsg": “”,
"sign": "9232368D2EE8E9D1B54D9E765A585126"
},
"bizCode": "0000"
}
Request and Response data format: application/json
Parameter | Type | Required | Max Length | Description | Sample |
merchantId | String | Yes | 30 | Merchant ID assigned by SHAREit Pay | SP4189603 |
bizType | String | Yes | 30 | Business type. Value “refundQuery” needs be passed here | refundQuery |
version | String | Yes | 5 | API version, currently always pass “2.1” | 2.1 |
refundId | String | Yes | 64 | Refund request id | 20181112112606266846 |
sign | String | Yes | 64 | MD5 algorithm by java, refer to 【MD5 signature】 | 2CE83FA767609D7B19136132F733BF0B |
Request Parameters:
{
"merchantId" : "SP4189603"
"version" : "2.1"
"bizType" : "refundQuery"
"refundId" : "20181112112606266846"
"sign" : "2CE83FA767609D7B19136132F733BF0B"
}
Parameter | Type | Required | Max Length | Description | Sample |
bizCode | String | Yes | 10 | Response code | 0000 |
message | String | No | 256 | Response message | success |
data | Object | Yes | Response body,refer to the below【data parameters】 |
data parameters
Parameter | Type | Required | Max Length | Description | Sample |
refundId | String | Yes | 64 | Merchant refund request serial number | 20181112112606266846 |
tradeNo | String | Yes | 64 | shareit-pay platform order number | TRADE20181204081243021279830 |
orderId | String | Yes | 64 | Merchant order number | 1543911807566 |
refundAmount | String | Yes | 12 | Refund order amount,value range:[1, 100000000],two decimal places at most. Note: small amount is not supported in Indonesia. | 1000 |
currency | String | Yes | 8 | For Currency Code, capital letters, see 【Country & Region Codes】 Must be consistent with countryCode, such as: Indian 'IN' corresponds to Indian Rupee 'INR' |
INR |
status | Number | Yes | 2 | The refund order status:0-Pending,1-Success,2-Failed; This parameter shows the current refund order status. | 0 |
sign | String | Yes | 64 | For the MD5 character string signature, see 【MD5 signature】 | DB73C116DE2F220A68BB96542885E171 |
errorCode | String | Yes | 64 | Error code for failed refund, and will be empty string if refund success | 9999 |
errorMsg | String | Yes | 256 | Error message for failed refund, and will be empty string if refund success | Execute exception |
Response:
{
"bizCode" : "0000",
"message" : "success",
"displayMsg" : "success",
"data" : {
"refundId" : "20181112112606266846",
"tradeNo" : "REFTRADE20190415060401022956957",
"orderId" : "1535433516149",
"refundAmount" : "1000",
"currency" : "INR",
"status" : 1, // 0: In Process; 1: Refund Success; 2: Refund Failure
"errorCode" : "",
"errorMsg" : "",
}
}
Notes: 1.Restricted by the channel, the refund status is only used to check whether the acceptance is successful, and the actual status of refund processing is not supported yet. However, all channels generally follow the following rules in dealing with refunds: after the refund request is successfully accepted, the funds will be returned to the bank card or account used by the user for payment within 5-21 days. 2.The merchant can respond to the user in accordance with the above rules. If the user-side refund is not processed within the valid period, SHAREit Pay can be contacted for after-sales support.
Country/RegionName | Country/RegionCode | CurrencyCode | LanguageCode |
---|---|---|---|
India | IN | INR, USD | hi, en, kn, ml, pa, ta, te, mr |
Indonesia | ID | IDR, USD | in, en, zh |
Malaysia | MY | MYR, USD | mys, en, zh |
Philippines | PH | PHP, USD | fil, en |
UAE | AE | AED , USD | en |
Bahrain | BH | BHD, USD | en |
Egypt | EG | EGP, USD | en |
Jordan | JO | USD | en |
Kuwait | KW | KWD, USD | en |
Lebanon | LB | USD | en |
Oman | OM | OMR, USD | en |
Qatar | QA | QAR, USD | en |
Saudi Arabia | SA | SAR, USD | en |
Thailand | TH | THB,USD | en |
Brazil | BR | BRL,USD | pt,en |
Chile | CL | CLP,USD | es,en |
Columbia | CO | COP,USD | es,en |
Mexico | MX | MXN,USD | es,en |
Peru | PE | PEN,USD | es,en |
Paraguay | PY | PYG,USD | es,en |
Uruguay | UY | UYU,USD | es,en |
Notice: 1、Country and Currency are strongly corresponding, and do not meet the corresponding relationship in the table . 2、The merchant can only request countries that have opened contract authority effectively .
Code | Scope | Language |
---|---|---|
en | All | English |
hi | India | Hindi |
mr | India | Marathi |
kn | India | Kannada |
ml | India | Malayalam |
pa | India | Punjabi |
ta | India | Tamil |
te | India | Telugu |
in | Indonesia | Bahasa Indonesia |
fil | Philippines | Tagalog |
mys | Malaysia | Malay |
zh | Malaysia | Chinese |
pt | Latin America | Portuguese |
es | Latin America | Spanish |
Supported Payment Type | Payment Amount Note | |||||||
Category | Payment Type | Icon | Timeout | Minimal Amount | Maximal Amount | Other Limitation | Service Charge | |
E-Wallet | Paytm Wallet | Customized, default 30 min, 72 hours Max | INR 1 | N/A | General KYC User Min:Rs1/Txn; Max:Rs10,000/Txn,Rs10,000/Month Fully KYC User Min:Rs1/Txn; Max:Rs10,000/Txn,Infinity/month | N/A | ||
PhonePe | Min:Rs1/Txn Max:Rs100,000/Txn Frequency:10Txns/day | |||||||
Amazon Pay | ||||||||
Free Charge | ||||||||
Airtel Money | ||||||||
Bank Card | Debit Card | N/A | Min:Rs1/Txn Max: Set by issuing bank Freq:Set by issuing bank | |||||
Credit Card | ||||||||
Net Banking | Net Banking | N/A | ||||||
UPI | UPI Collect | N/A | ||||||
UPI Intent |
Supported Payment Type | Payment Amount Note | |||||||
Category | Payment Type | Icon | Timeout | Minimal Amount | Maximal Amount | Other Limitation | Service Charge | |
Carrier Billing | Indosat | N/A | 16 min | Rp 1.000 | Rp 1,100,000 | Fixed the detail: Click to check details;Rp 3,000,000/day | N/A | |
Telkomsel | 16 min | Rp 500 | Rp 500,000 | Mobile Content:1.000, 2.000, 3.000, 4.000, 5.000, 10.000, 12.500, 15.000, 20.000, 30.000, 35.000, 50.000, 60.000, 75.000, 100.000, 113.000, 150.000, 200.000, 250.000, 300.000, 330.000, 350.000, 400.000, 410.000, 500.000 | 10% Service Fee | |||
XL | 16 min | Rp 1,000 | Rp 1,000,000 | Rp 100,000/month (only applies to postpaid users),Rp 3,000,000/day | N/A | |||
Tri Indonesia | 16 min | Rp 500 | Rp 1,300,000 | N/A | N/A | |||
Convenience Store | Alfamart | N/A | 26 hours | Rp 50,000 | Rp 2,000,000 | Rp 10,000,000/day | N/A | |
Indomaret | 26 hours | Rp 40,000 | Rp 5,000,000 | N/A | N/A | |||
True Money Agent Network | 26 hours | Rp 1 | Rp. 10,000,000 | N/A | N/A | |||
E-Wallet | Doku | 1.5 hours | Rp 1 | Rp 5,000,000 | Rp 20,000,000/month | N/A | ||
Go-Pay | 3 hours | Rp 1000 | Rp 10,000,000 | N/A | N/A | |||
DANA | 48 hours | Rp. 1 | Rp. 10,000,000 | N/A | N/A | |||
LinkAja | 48 hours | Rp. 1 | Rp. 10,000,000 | N/A | N/A | |||
OVO | 30 min | Rp. 1 | Rp. 10,000,000 | N/A | N/A | |||
Bank Transfer | Bank Transfer | N/A | 26 hours | Rp 50,000 | Rp 10,000,000 - Rp 50,000,000,depending on the bank. | Rp 10,000,000 - Rp 50,000,000,depending on the bank. | Rp 0-7500, depending on banks, Rp 6500 is most common |
Supported Payment Type | Payment Amount Note | |||||||
Category | Payment Type | Icon | Timeout | Minimal Amount | Maximal Amount | Other Limitation | Service Charge | |
E-Wallet | GCash | 24 hours | PHP 1 | PHP 10,000 | N/A | PHP10 Service Fee | ||
Grabpay | 24 hours | PHP 1 | PHP 100,000 | N/A | N/A | |||
DragonPay Credit | 48 hours | PHP 1 | PHP 1,000,000 | N/A | N/A | |||
Coins.ph | 24 hours | PHP 1 | PHP 1,000,000 | N/A | N/A | |||
Convenience Store | 7-eleven PH | 72 hours | PHP 50 | PHP 200,000 | N/A | N/A | ||
Bayad Center | 72 hours | PHP 50 | PHP 200,000 | N/A | N/A | |||
Cebuana Lhuillier Bills Payment | 72 hours | PHP 10 | PHP 1,000,000 | N/A | N/A | |||
EC Pay | 72 hours | PHP 50 | PHP 1,000,000 | N/A | N/A | |||
Robinsons Dept Store | 72 hours | PHP 50 | PHP 200,000 | N/A | N/A | |||
LBC Bills Payment | 72 hours | PHP 50 | PHP 200,000 | N/A | N/A | |||
M. Lhuillier | 72 hours | PHP 180 | PHP 1,000,000 | N/A | PHP20 Service Fee | |||
RuralNet | 72 hours | PHP 20 | PHP 100,000 | N/A | N/A | |||
SM Bill Payment | 72 hours | PHP 50 | PHP 200,000 | N/A | N/A | |||
RD Pawnshop | 72 hours | PHP 10 | PHP 20,000 | N/A | N/A | |||
Bank Transfer | OTC Bank & ATM | N/A | 72 hours | PHP 1 | PHP 2,000,000 | The amount varies slightly from bank to bank, the limit is usually between 1-1000000. | Some Banks charge fees, ranging from P10 to P50, most of which are P25 | |
Online Bank | N/A | 24 hours | PHP 1 | PHP 10,000,000 | The amount varies slightly from bank to bank, the limit is usually between 1-1000000. | Some Banks charge fees, ranging from P5-P15 | ||
Carrier Billing | Globe | N/A | 16 min | PHP 10 | PHP 2000 | Only the following fixed amounts are supported: 10, 20, 50, 100, 200, 300, 400, 500, 1000, 2000 | PHP 500/month (only applies to postpaid users) | |
Smart&Sun | 16 min | PHP 10 | PHP 2000 | N/A | N/A |
Supported Payment Type | Payment Amount Note | |||||||
Category | Payment Type | Icon | Timeout | Minimal Amount | Maximal Amount | Other Limitation | Service Charge | |
Carrier Billing | MYR 1 | N/A | 15 min | N/A | N/A | N/A | N/A |
Supported Payment Type | Payment Amount Note | |||||||
Category | Payment Type | Icon | Timeout | Minimal Amount | Maximal Amount | Other Limitation | Service Charge | |
Carrier Billing | Etisalat | N/A | 16 min | AED 1 | N/A | AED 40/day | N/A |
Biz Code | Description | Message | Explain |
0000 | Interface call succeeded | success | Interface call succeeded(Refer to the corresponding service return parameters for the calling result) |
1000 | Incorrect or illegal request parameters | bizType not support | The bizType passed in is incorrect |
bizType is empty | Missing bizType parameter | ||
merchant not exist | The merchant ID passed in is incorrect | ||
merchantId is empty | Missing merchantId parameter | ||
gateway authentication failure | Gateway authentication failed | ||
version is empty | Missing version parameter | ||
sign is empty | Missing sign parameter | ||
parameters are empty | Missing request parameter field | ||
request param format error | Request parameter data is not formatted correctly | ||
2000 | Interface call failed | system internal error | system internal error |
your request is frequency | Request interface frequency is too high | ||
system busy | System is busy | ||
get credential fail | Certificate acquisition failed | ||
3000 | Permission denied | token invalid | Bad access token |
token check incorrect | Access token checking error | ||
token is expired | The access token has expired | ||
sign is incorrect | Incorrect signature | ||
merchant key incorrect | Incorrect merchant key | ||
merchant not sign contract | The merchant has not signed the contract |
Error Code | Description | Error Message |
0003 | Order not paid, cannot initiate refund | Unable to refund since the order unpaid |
0004 | Merchant order does not exist | Invalid orderID |
0005 | Refund application already exists | Refund order ID already existed |
0007 | The refund order does not exist | Invalid refund order ID |
0008 | No payment method is available | No payment method is available since not authorized. |
0009 | The merchant number does not exist or has no rights | No payment method is available since merchant is invalid |
0017 | Request parameter format error | Check parameters, something is not correct. |
1001 | The merchant does not exist | The merchant does not exist |
1009 | This order has exceeded the valid refund time | Unable to refund since exceeding the refund available period |
1010 | The refund amount does not match the transaction amount | Refund amount is not correct |
1023 | Insufficient account balance | Balance is not enough. |
1024 | Invalid order amount or incorrect format | Invalid amount |
1026 | Invalid transaction expiration time | Invalid transaction expire time |
1029 | The country code does not match the currency | The country code is not matched with the currency code. |
1030 | The payment method does not support refunds | This payment method is unable to raise refund. |
1031 | Channel service providers accept failure | Fail to process by the payment provider. |
1032 | The refund currency does not match the original order transaction currency | Refund currency doesn't match with the original order currency. |
1036 | The current payment method is not available | This payment method is not available. |
1037 | Invalid or incorrect account format | Invalid Account Number |
1038 | This order amount is not acceptable | No payment method supports this amount. |
1039 | The order has been paid, please do not repeat the request | This order has been paid. |
1040 | The requested version number is not supported | Invalid version number |
1041 | Payment method requested is not supported | Invalid payment method |
1042 | The payment method does not meet the quota | This payment method does not support the amount. |
1044 | The order has been closed over time | This order is closed due to timeout. |
4000 | Request parameter format error | Check parameters, format is not correct. |
9994 | Request frequency is too high, please try again later | Request too frequently. Slow down and try later. |
9998 | Parameter is null | Wrong parameter, something is empty. |
9999 | Business execution failure identification | System is busy. |
P01 | Corresponding to the order in payment | Payment under process. |
F100 | User cancelled | Transaction cancelled by user |
F150 | The user timed out and did not complete the payment | Transaction expired. |
F300 | The bank side failed to accept the payment | Transaction failed at the bank's side. |
F301 | Wrong bank card CVV | Invalid CVV. |
F302 | The payment information provided by the user has not been verified | Transaction failed at bank end due to authentication failed. |
F304 | Wrong card CVV or expiry date | CVV or expiry date is incorrect. |
F305 | Bank rejection | Payment has been declined by bank. |
F310 | Password or dynamic password failed authentication | Wrong Password or OTP. |
F322 | UPI PIN is not set | UPI PIN is not set. |
F325 | The number of PIN attempts exceeded the limit | Exceeded PIN retry limit. |
F350 | Insufficient account balance | Insufficient account balance. |
F360 | The amount exceeds the user's payment limit | Amount exceeds balance limit. |
F363 | The amount exceeds the daily limit | Transaction failed at bank end due to user exceed daily amount limit. |
F364 | The amount exceeds the monthly limit | Transaction failed at bank end due to user exceed monthly amount limit. |
F365 | The amount exceeds daily transaction times | Transaction failed at bank end due to user exceed daily number of transactions limit. |
F366 | The amount exceeds monthly transaction times | Transaction failed at bank end due to user exceed monthly number of transactions limit. |
F400 | Refused for bank risk control reasons | Transaction is delined due to risk control |
F401 | Bank rejection | Bank refused to process. |
F410 | Payment failure due to timeout in the banking system or subsequent systems | Order closed due to time out. |
F500 | The payment information provided by the user is incorrect | Certain payment detail is not correct. |
F501 | Invalid or incorrect bank card number | Invalid or wrong card number |
F502 | Unsupported bank card organization | Unable to process due to the card orgnization is not supported. |
F503 | The expiration date of the card has not been verified | Card expiry date is not correct. |
F504 | The card name has not been verified | Card holder name is not correct. |
F505 | Unsupported international card | International card is not supported. |
F506 | Card or account frozen unavailable | Unable to process due to card/account suspended. |
F507 | Invalid bank card | Invalid or wrong card number |
F508 | Dynamic captcha request overlimit | Exceeded OTP request limit. |
F512 | Dynamic verification code error or invalid | Invalid OTP or expired OTP entered. |
F514 | Payment account not registered | Payment account is not registered. |
F515 | Incorrect or invalid payment account | Invalid account number |
F516 | OTP verification times exceed the limit | Exceeded OTP validate limit. |
F520 | The phone number is not correct | Mobile number is not correct. |
F521 | Unsupported carriers | Numbers from this operator are currently not supported. |
F523 | Account frozen or restricted | Account blocked or frozen. |
F524 | Incorrect or invalid UPI account | Invalid UPI ID. |
F525 | The phone number associated with the UPI account has been changed | Registered Mobile number linked to the account has been changed/removed. |
F600 | Channel service providers accept failure | Fail to process by the payment provider. |
F700 | Channel service provider system abnormal | Technical error occurred. |
F810 | The payment channel is temporarily unavailable | This payment method is not available currently. |
F830 | Due to network problems, channel service providers accept failure | Provider failed to process due to network issue. |
Bank Code | Bank |
ACEH | BPD Aceh |
ACEH_UUS | BPD Aceh UUS |
AGRIS | Bank Agris |
AGRONIAGA | Bank BRI Agroniaga |
AMAR | Bank Amar Indonesia (formerly Anglomas International Bank) |
ANZ | Bank ANZ Indonesia |
ARTA_NIAGA_KENCANA | Bank Arta Niaga Kencana |
ARTHA | Bank Artha Graha International |
ARTOS | Bank Artos Indonesia |
BALI | BPD Bali |
BAML | Bank of America Merill-Lynch |
BANGKOK | Bangkok Bank |
BANTEN | BPD Banten (formerly Bank Pundi Indonesia) |
BCA | Bank Central Asia (BCA) |
BCA_SYR | Bank Central Asia (BCA) Syariah |
BENGKULU | BPD Bengkulu |
BISNIS_INTERNASIONAL | Bank Bisnis Internasional |
BJB | Bank BJB |
BJB_SYR | Bank BJB Syariah |
BNI | Bank Negara Indonesia (BNI) |
BNI_SYR | Bank BNI Syariah |
BNP_PARIBAS | Bank BNP Paribas |
BOC | Bank of China (BOC) |
BRI | Bank Rakyat Indonesia (BRI) |
BRI_SYR | Bank Syariah BRI |
BTN | Bank Tabungan Negara (BTN) |
BTN_UUS | Bank Tabungan Negara (BTN) UUS |
BTPN_SYARIAH | BTPN Syariah (formerly Bank Sahabat Purba Danarta and Bank Tabungan Pensiunan Nasional UUS) |
BUKOPIN | Bank Bukopin |
BUKOPIN_SYR | Bank Syariah Bukopin |
BUMI_ARTA | Bank Bumi Arta |
CAPITAL | Bank Capital Indonesia |
CCB | China Construction Bank Indonesia (formerly Bank Antar Daerah and Bank Windu Kentjana International) |
CENTRATAMA | Centratama Nasional Bank |
CHINATRUST | Bank Chinatrust Indonesia |
CIMB | Bank CIMB Niaga |
CIMB_UUS | Bank CIMB Niaga UUS |
CITIBANK | Citibank |
COMMONWEALTH | Bank Commonwealth |
DAERAH_ISTIMEWA | BPD Daerah Istimewa Yogyakarta (DIY) |
DAERAH_ISTIMEWA_UUS | BPD Daerah Istimewa Yogyakarta (DIY) UUS |
DANAMON | Bank Danamon |
DANAMON_UUS | Bank Danamon UUS |
DBS | Bank DBS Indonesia |
DEUTSCHE | Deutsche Bank |
DINAR_INDONESIA | Bank Dinar Indonesia |
DKI | Bank DKI |
DKI_UUS | Bank DKI UUS |
EXIMBANK | Indonesia Eximbank (formerly Bank Ekspor Indonesia) |
FAMA | Bank Fama International |
GANESHA | Bank Ganesha |
HANA | Bank Hana |
HARDA_INTERNASIONAL | Bank Harda Internasional |
HSBC | Hongkong and Shanghai Bank Corporation (HSBC) (formerly Bank Ekonomi Raharja) |
ICBC | Bank ICBC Indonesia |
INA_PERDANA | Bank Ina Perdania |
INDEX_SELINDO | Bank Index Selindo |
INDIA | Bank of India Indonesia |
JAMBI | BPD Jambi |
JAMBI_UUS | BPD Jambi UUS |
JASA_JAKARTA | Bank Jasa Jakarta |
JAWA_TENGAH | BPD Jawa Tengah |
JAWA_TENGAH_UUS | BPD Jawa Tengah UUS |
JAWA_TIMUR | BPD Jawa Timur |
JAWA_TIMUR_UUS | BPD Jawa Timur UUS |
JPMORGAN | JP Morgan Chase Bank |
JTRUST | Bank JTrust Indonesia (formerly Bank Mutiara) |
KALIMANTAN_BARAT | BPD Kalimantan Barat |
KALIMANTAN_BARAT_UUS | BPD Kalimantan Barat UUS |
KALIMANTAN_SELATAN | BPD Kalimantan Selatan |
KALIMANTAN_SELATAN_UUS | BPD Kalimantan Selatan UUS |
KALIMANTAN_TENGAH | BPD Kalimantan Tengah |
KALIMANTAN_TIMUR | BPD Kalimantan Timur |
KALIMANTAN_TIMUR_UUS | BPD Kalimantan Timur UUS |
KESEJAHTERAAN_EKONOMI | Bank Kesejahteraan Ekonomi |
LAMPUNG | BPD Lampung |
MALUKU | BPD Maluku |
MANDIRI | Bank Mandiri |
MANDIRI_SYR | Bank Syariah Mandiri |
MANDIRI_TASPEN | Mandiri Taspen Pos (formerly Bank Sinar Harapan Bali) |
MASPION | Bank Maspion Indonesia |
MAYAPADA | Bank Mayapada International |
MAYBANK | Bank Maybank (formerly BII) |
MAYBANK_SYR | Bank Maybank Syariah Indonesia |
MAYORA | Bank Mayora |
MEGA | Bank Mega |
MEGA_SYR | Bank Syariah Mega |
MESTIKA_DHARMA | Bank Mestika Dharma |
MITRA_NIAGA | Bank Mitra Niaga |
MITSUI | Bank Sumitomo Mitsui Indonesia |
MIZUHO | Bank Mizuho Indonesia |
MNC_INTERNASIONAL | Bank MNC Internasional |
MUAMALAT | Bank Muamalat Indonesia |
MULTI_ARTA_SENTOSA | Bank Multi Arta Sentosa |
NATIONALNOBU | Bank Nationalnobu |
NUSA_TENGGARA_BARAT | BPD Nusa Tenggara Barat |
NUSA_TENGGARA_BARAT_UUS | BPD Nusa Tenggara Barat UUS |
NUSA_TENGGARA_TIMUR | BPD Nusa Tenggara Timur |
NUSANTARA_PARAHYANGAN | Bank Nusantara Parahyangan |
OCBC | Bank OCBC NISP |
OCBC_UUS | Bank OCBC NISP UUS |
OKE | Bank Oke Indonesia (formerly Bank Andara) |
PANIN | Bank Panin |
PANIN_SYR | Bank Panin Syariah |
PAPUA | BPD Papua |
PERMATA | Bank Permata |
PERMATA_UUS | Bank Permata UUS |
PRIMA_MASTER | Prima Master Bank |
QNB_INDONESIA | Bank QNB Indonesia (formerly Bank QNB Kesawan) |
RABOBANK | Bank Rabobank International Indonesia |
RBS | Royal Bank of Scotland (RBS) |
RESONA | Bank Resona Perdania |
RIAU_DAN_KEPRI | BPD Riau Dan Kepri |
RIAU_DAN_KEPRI_UUS | BPD Riau Dan Kepri UUS |
ROYAL | Bank Royal Indonesia |
SAHABAT_SAMPOERNA | Bank Sahabat Sampoerna |
SBI_INDONESIA | Bank SBI Indonesia |
SHINHAN | Bank Shinhan Indonesia (formerly Bank Metro Express) |
SINARMAS | Sinarmas |
SINARMAS_UUS | Bank Sinarmas UUS |
STANDARD_CHARTERED | Standard Charted Bank |
SULAWESI | BPD Sulawesi Tengah |
SULAWESI_TENGGARA | BPD Sulawesi Tenggara |
SULSELBAR | BPD Sulselbar |
SULSELBAR_UUS | BPD Sulselbar UUS |
SULUT | BPD Sulut |
SUMATERA_BARAT | BPD Sumatera Barat |
SUMATERA_BARAT_UUS | BPD Sumatera Barat UUS |
SUMSEL_DAN_BABEL | BPD Sumsel Dan Babel |
SUMSEL_DAN_BABEL_UUS | BPD Sumsel Dan Babel UUS |
SUMUT | BPD Sumut |
SUMUT_UUS | BPD Sumut UUS |
TABUNGAN_PENSIUNAN_NASIONAL | Bank Tabungan Pensiunan Nasional |
TOKYO | Bank of Tokyo Mitsubishi UFJ |
In case customer choose Gopay, the page show loading failed and presenting "ERR_UNKNOWN_URL_SCHEME" error.
If the container to open API standard checkout is Android's WebView, you need to override WebViewClient. Here is the sample code.
public class TestWebViewClient extends WebViewClient {
private Context mContext;
public TestWebViewClient(Context context) {
mContext = context;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(shouldOverrideUrlLoading(url))
return true;
return super.shouldOverrideUrlLoading(view, url);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
String url = request.getUrl().toString();
if(shouldOverrideUrlLoading(url))
return true;
return super.shouldOverrideUrlLoading(view, request);
}
private boolean shouldOverrideUrlLoading(String url) {
if (!TextUtils.isEmpty(url) && url.startsWith("gojek://")) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
mContext.startActivity(intent);
return true;
}
return false;
}
}
Click to download:GoPayExample
In case customer choose DANA, the page shows loading failed and presenting "The network connection is unstable.Please try again later" error.
If the container to open PaySDK checkout is Android's WebView, you need to set the WebView's WebSettings property. The code is as follows.
webSettings.setDomStorageEnabled(true);
webSettings.setTextZoom(100);
webSettings.setUseWideViewPort(true);
You can enter “Config” – “Settings” page to get and modify the secret key. When configuring, please pay attention to the environment (testing environment or production environment).
There are two ways to configure callback URL:
- Admin account (or other operators with “Config” function) can enter “Config” – “Settings” page of Merchant Platform to config and modify callback URL.
- You can configure the callback URL in requested parameters. More Details Notice: The callback URL configured by the interface has higher priority than the URL which configured by the Merchant Platform.
Please confirm the status of your contract whether it is valid first. If failed to generate the secret key, please contact SHAREit Pay for asisstance.
- Please confirm you have set the callback address.
- Please confirm the callback address you set is correct.
- If it is still failed, please contact SHAREit Pay for asisstance.
The login account is created by SHAREit. You will receive an activation email from SHAREit, please make sure that you have activated your account before starting to use.
The new account needs to be activated by email and you need to change your password to login your account at the first time.
If you failed to open the activation link and activate your account in 24 hours, the link will be invalid to make sure the security of your account. You can just resend the activation email by your admin account.
There is a “Forget Password” button in the lower right corner of the login page. You can reset the password by clicking it.
You can click your avatar and select the "Change Password" button to enter the password modification page in Merchant Platform.
If your account bound multiple MIDs, you can check the different MIDs by clicking the merchant name on the top right corner. You can find the current MID information by the high light area.
We support Chinese and English versions for now. You can switch them by 2 ways:
- You can find the switch button below the landing page.
- You can switch the languages by clicking your avatar after login your account.
There are 3 time zone setting types:
Control the time zone of the whole platform
The default time zone is the same with your browser’s. You can set it by clicking your avatar and setting the “Timezone Setting”.
Control the time zone of the transaction searching
Switch the time zone on the “Order Search” page to deal with the transaction checking. This time only applies to the “Transaction Date”. If the time zone is set by both “a” and “b”, it will be displayed in “b” time zone. If the page is reloaded, the time zone will revert to the default one.
Control the time zone of the download reports
When downloading order reports, users can set the time zone separately. If the time zone is set by both “a”, “b” and “c”, it will be displayed in “c” time zone.
Please make sure that you have set the same time zone.
Please make sure you have set the same time zone before you download the report.
Restricted by the channel, only orders paid from Indian support to initiate refunds. If the refund request is successfully accepted, the funds will be returned to the customer’s bank card or account within 1-21 days
You can initiate a refund by two ways:
- Enter “Order Search” – “Payment” page.
- Search the Order ID which you wanna refund to enter “Order Detail” page.
- Click “Initiate a refund”.
You can initiate a refund request via a API. More Details
An order needs to meet the following conditions to initiate a refund:
- Only successfully paid orders can be refunded.
- Orders already in the refund process cannot be refunded again.
- Orders that have been successfully refunded cannot be refunded again.
- Refund can be initiated within 180 days of successful order payment.
- Please ensure that the account balance is sufficient for the refund.
- Currently, only Indian payment methods support refunds. Payment methods in other countries are not supported now.
- Please confirm whether the operator has permission to request a refund.
If the order does not meet the conditions but still need to be refunded, it is recommended to use SHAREit Pay's disbursement service to refund. For more information, please contact [email protected].
If the refund request is successfully accepted, the funds will be returned to the customer’s bank card or account within 1-21 days. In case of Net banking transactions, certain government banks may take some more days.
The refund amount will be returned to the user account in the original transaction method. For example: The user paid through Paytm Wallet. If refund successfully, the amount will be returned to the user's Paytm Wallet account.
SHAREit Pay will deduct the refund amount from your unavailable balance first. If there is insufficient amount in the unavailable balance, the refund amount will be deducted from the available balance.
If your balance is insufficient, you can enter the “Top up” – “Account” page and follow the steps to complete the top-up.
The success status only indicates that the channel has successfully accepted the refund application. Refund will be initiated on the same day (provided you have enough funds in your account). It will take between 1 and 21 days for the refund amount to reflect in your customer’s bank account. In case of Net banking transactions, certain government banks may take some more days. Restricted by the channel, the refund status is only for querying whether the application is successful, and it does not support querying the actual status of refund processing. However, various channels generally follow the following rules: If the refund request is successfully accepted, the funds will be returned to the customer’s bank card or account within 1-21 days. If there is a customer complaint, you can answer the customer according to the above explanation. Any other questions, you can contact SHAREit Pay for after-sales support.
Of course, you can. Regardless of the order being rejected or refunded failure, as long as it is within the validity period of the refund, you can initiate a refund application again.
Of course, you can. As long as the order is eligible to initiate a refund, the refund will not be affected even if settled.
Please contact SHAREit Pay to add the approval function. If it’s already enabled, please contact the admin account (or other operators with “Users” function) to change your permission.
Orders that meet the settlement conditions will be transferred within 1 working day of China. If you not received it, the possible reasons are as follows:
- Please confirm whether the minimum settlement limit is agreed in the contract, if the settlement amount that has not reached the specified amount will not be transferred.
- If the bank suspends services during local holidays, the transfer time will be postponed. After the transfer is successful, SHAREit Pay will send you a notification email.
Settlement bank card information needs to be provided at the time of contract signing. If you want to change it, please contact SHAREit Pay and provide relevant certificates.
- Enter the “Settlement” page.
- Click “Download” button after completing the filter items. Please notice that you can set the time zone as you need on this page and the time of the transactions will be updated accordingly.
Transaction Amount
The transaction amount is the amount and currency actually paid by the user.
Settlement Amount
Settlement Amount = Transaction Amount - (Total Tax + Total Commission + Refund Amount) The currencies involved here are the currencies actually paid by users
Transfer Amount
The transfer amount is the actual transfer amount. If there is cross-border settlement, the currency here should be the converted currency.
Please notice that the refund amount may include orders settled previously.
Transaction volume is the number of original transactions contained in the settlement cycle.
The service charge is the transfer handling fee charged by the bank, which will be deducted from your settlement amount.
If cross-currency settlement exists, it will be converted at the exchange rate on the day of the transfer bank.
You can view the details as follows:
- Enter “Settlement” page.
- Search Bank Order ID or Settlement ID to enter “Settlement Detail” page.
- Click “Download” button to download Settlement information.
When the settlement amount is successfully transferred, the admin of Merchant Platform and “Finance” contact will receive an email notification.
If you want more than one person to receive the settlement notification email, it is recommended to fill in the group email address in the "financial" contact email.
2.4.10 Why does the volume of settled orders in the settlement details not match the volume of successful orders on the “Dashboard” page?
The volume of successful orders shown in the “Dashboard” has been displayed according to the orders’ created date. The volume of orders in the settlement details has been settled according to the orders’ completed time. They have two different statistical dimensions, so the results are different. It is recommended that you can enter “Order Search” - “Payment” page to download Order Details to reconcile.
There are two ways to check your account balance:
- Enter “Balance” – “Account” page to check your account balance.
- Enter “Balance Alerts” – “Balance” – “Account” page to configure balance alert rules. When your account balance is less than or equal to the alert value, SHAREit Pay will send you an email to notify you.
"Available balance" is your top-up amount, which can be used for disbursement and refund. "Unavailable balance" is the amount which is going to be settled. It is not available for disbursement, but can be used for refund.
You can enter “Balance” – “Account” page to check the available balance movements history.
You can enter “Balance” – “Account” page and follow the steps to complete the top-up.
If you want to top up across currencies, please select your transfer currency and amount when submitting the top-up application. We will recharge your account according to the actual amount we received after converting. The exchange fee is based on the exchange rate of the transfer bank.
Merchant ID is the unique identification number for your merchant Account. For any issue that you would face, we will quickly solve it by your unique MID. There are two ways to get your MID:
- Click the merchant name at the upper right to get it.
- Enter "Profile" - "Setting" page to get it.
Enter "Profile" - "Setting" page to check the general and settlement info of the merchant. You can modify your “Contact Address”, and other information could be changed by SHAREit Pay only.
The display name will be displayed on the merchant platform and check-out page. Due to channel restrictions, please contact the SHAREit Pay to make modification and provide the reason and proof.
Business contact information is mandatory and cannot be deleted. It can only be edited.
Enter "Profile" - "Setting" page and click "Show Detail" to view information about available services.
Production environment
The payment products in the production environment are determined by the signed contract. If you want to change it, please contact your account manager and sign a new contract.
Testing environment
Please contact your account manager to change it.
There are 3 ways to check the status of orders:
- You can enter “Order Search” - “Payment” page to search the status.
- You can check the order status by receiving “Notification Callback”. More Details
- You can get the transaction status by using “Result Query”. More Details
You can switch the time zone on the “Order Search” page to deal with the transaction checking. This time only applies to the “Transaction Date”. If the page is reloaded, the time zone will revert to the default one.
You can download the transaction reports as follows:
- Enter “Order Search” - “Payment” page.
- Click “Download” button after completing the filter items. Please notice that you can set the time zone as you need on this page and the time of the transactions will be updated accordingly.
Please make sure that if you have set a same time zone on these two pages. The time on “Order Search” page is controlled by “Timezone”. This time only applies to the “Transaction Date”. The time on “Order Detail” page is only controlled by the whole time zone which can be set by clicking your avatar.
First of all, you should make sure that the Order ID is correct. If you still can’t find it, maybe this order is only created in your system, but not yet by our side, mainly caused by two conditions as follows:
- Exiting the page too quickly when the user enter the check-out page.
- Exiting the check-out page before the page has been fully loaded.
First of all, you should make sure that the Order ID is correct. If you still unable to find it, maybe this order is only created in your system, but not yet synchronized with our system, which is mainly caused by two conditions as follows:
- The customer enters the checkout page but exits too quickly.
- The customer exits the checkout page before the page has been fully loaded.
The success status only indicates that the channel has successfully accepted the refund application. Refund will be initiated on the same day (provided you have enough funds in your account). It will take between 1 and 21 days for the refund amount to reflect in your customer’s bank account. In case of Net banking transactions, certain government banks may take some more days. Restricted by the channel, the refund status is only for querying whether the application is submitted successful, and it does not support querying the actual status of refund processing. However, various channels generally follow the following rules: If the refund request is successfully accepted, the funds will be returned to the customer’s bank card or account within 1-21 days. If there is a customer complaint, you can reply the customer according to the above explanation. Any other questions, please contact SHAREit Pay for after-sales support.
3.3 Why does the customer report that the amount has been successfully deducted, but the order status is still failure?
The possible reason is that the customer did not complete the payment in time, which means the customer did not complete the payment successfully until the order has timed out and closed. In such cases, you can directly handle the order as failure status. We will refund this amount to customer’s account. It will take between 1 and 21 days for the refund amount to reflect in your customer’s bank account. In case of Net banking transactions, certain government banks may take some more days.
Paytm restricts OTP request's times due to Anti-brush mechanism and cost considerations. Paytm does not specify the frequency of OTP, but according to our test results are about 10 times in 10 minutes. If the user needs to lift OTP restrictions, please contact Paytm.