SUnit Payment SDK Android Document(EN) - sunitsdk/SUnitDemo GitHub Wiki

[toc]

Integration Guidance

1. Config Settings

1.1 Integration Environment Address

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

1.2 Get the Merchant ID and Secret Key

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.

1.3 Acquire Sample Program Package

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.

2. Authentication Keytool

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

2.1 Concat a stringA

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.

2.2 Encrypt a stringA

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

2.3 Signing example(Merchant request parameter signing)

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.

3. Fetch Token

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.

3.1 Request parameters

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

3.2 Response

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

3.3 Example

Request parameters

{
    "merchantId" : "SP4189603"
    "bizType" : "token"
    "version" : "1.0"
    "secretKey" : "ca8ab4754d2ce6ef"
}

Response

{
    "bizCode" : "0000",
    "message" : "success",
    "displayMsg" : "success",
    "data" :
"Rdhx+bSZTVQhvUKZnRDFusldVL3FuDWO7sNc9uzjG+5A3jnyVf6oPn48FPqQHrQ8PGIW1gXTIWHPX7xwDi/M36fKdgf+KyHvLCRW1Cpg2y1qbz1qLIeFsoJgdxchxdgE"
}

4. Protocol Rules

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.

5. Simulation Result

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.

*Screenshot*

6. Demo Download

7. Go Live

Active production environment should meet the two conditions: 1. KYC certified; contract signed.

7.1 Test Use cases

After technical integration is completed, it is recommended to test the function according to the following use cases.

7.1.1 Requested Parameters

a.Country & Currency

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.

7.1.2 Get Order Status

a.Configure Callback URL

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.
b.Update Order Status

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.

7.1.3 Information Security

a.Order Information Storage

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
b.Customer Information Security

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:

  1. The APP installation package or H5 link URL which invovled SHAREit Pay checkout
  2. Inform the checkout entrance
  3. Provide test account

7.2 Merchant ID, Secret Key, Callback URL of Production Environment

7.2.1 Merchant ID

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.

7.2.2. Get the Secret Key of Production Environment

The Secret key of the production environment needs to be regenerated. Login Merchant Platform and enter [Config] - [Settings] page to generate the secret key.

7.2.3 Confugure the Callback URL of Production Environment

The callback URL of the production environment needs to be reset. There are two ways to configure callback URL:

  1. Enter “Config” – “Settings” page of Merchant Platform to config callback URL.
  2. 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.

7.3 Service Address of Production Environment Replacement

The service address of the production environment is different from the testing environment. Please pay attention to it.

7.3.1 Service Address

Service Service Address
Payment Service https://pay-gate.shareitpay.in/aggregate-pay-gate/api/gateway

Payment Service

1. Service Introduction

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.

2. Android SDK Checkout

By integrating this SDK, merchants can open the checkout page directly in their Android applications.

2.1 Integration Steps

  1. Get the token necessary to call the SDK checkout

  2. Call the SDK checkout page for users to pay

  3. Receive a preliminary notice and process the order based on the payment result

SDK Payment Transaction - Time Sequence Chart

2.2 Call SDK Cashier System

2.2.1 Set SDK connection environment

SDK connection environment can be set via the function below.

Environment Setting
TestEnv SHAREitSDK.SHAREitSDK("Test")
ProdEnv SHAREitSDK.SHAREitSDK("Prod")

2.2.2 Set MerchantParamBean with passed parameter

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();

2.2.3 Call SPPayService.startPayActivity to wake up cashier system.

SHAREitSDK.SHAREitSDK shareitSDK= new SHAREitSDK.SHAREitSDK ();
shareitSDK.startPayActivity(this, merchantParam, new SHAREitSDK.PayResultListener((int codestring orderIdstring messagestring 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).

2.2.4 SDK Function Callback

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】.

2.3 SDK Payment Order Parameters

Request and Response data format: application/json

2.3.1 Method Parameters

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
└ email 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

2.3.2 Callback Parameters

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.

2.3.3 Product code

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.

2.3.4 Status code

Code Description
10000 Transaction success
10001 Transaction process
10002 Transaction failed
10003 Unknown error
10009 User cancelled

2.4 Related Services

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

2. Refund Request Interface

3. Request Query Interface

3. Refund Request

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

3.1 Parameters of Request Refund

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"
}

3.2 Parameters of Response Refund

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.

4 Notification Callback

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.

4.1 Notification Specification

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.

4.2 Asynchronous call-back descriptions on payment results

Request and Response data format: application/json

4.2.1 Asynchronous notification parameter descriptions

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】

4.2.2 merchant platform returned results

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

4.2.3 Example

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"
}

4.3 Asynchronous call-back descriptions on refund results

Request and Response data format: application/json

4.3.1 Parameters of asynchronous notification

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

4.3.2 merchant platform returned results

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

4.3.3 Sample

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"
}

5. Result Query

5.1 Payment Result Query

Request and Response data format: application/json

5.1.1 Parameters of Query Interface

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"
}

5.1.2 Response Parameters

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"
}

5.2 Refund Result Query

Request and Response data format: application/json

5.2.1 Parameters of Request Refund

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"
}

5.2.2 Response Parameters

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.

appendix

1. Country, Currency & Language Code

1.1 Country & Region Codes

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 .

1.2 Language code

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

2. Payment Amount Limit Info

2.1 India

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

2.2 Indonesia

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

2.3 Philippines

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

2.4 Malaysia

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

2.5 United Arab Emirates

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

3. Payment Response Code & Error Code

3.1 Payment response code

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

3.2 Payment error code

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.

4. Bank Code

4.1 Indonesia

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

FAQ

1. Technical Question

1.1 Payment Service

1.1.1 "ERR_UNKNOWN_URL_SCHEME" error occurred when using GoPay

Question:

In case customer choose Gopay, the page show loading failed and presenting "ERR_UNKNOWN_URL_SCHEME" error.

Answer:

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

1.1.2 "The network connection is unstable. Please try again later." error occurred when using DANA

Question:

In case customer choose DANA, the page shows loading failed and presenting "The network connection is unstable.Please try again later" error.

Answer:

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);

1.2 Config Settings

1.2.1 How to get Secret Key?

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).

1.2.2 How to configure callback URL?

There are two ways to configure callback URL:

  1. Admin account (or other operators with “Config” function) can enter “Config” – “Settings” page of Merchant Platform to config and modify callback URL.
  2. 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.

1.2.3 Why can't I generate a secret key?

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.

1.2.4 Why didn't I get a callback notification?

  1. Please confirm you have set the callback address.
  2. Please confirm the callback address you set is correct.
  3. If it is still failed, please contact SHAREit Pay for asisstance.

2. Merchant Platform

2.1 Account Management

2.1.1 How to get your account?

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.

2.1.2 Why does it show "Not exist" or "Not activate" when login the account?

The new account needs to be activated by email and you need to change your password to login your account at the first time.

2.1.3 What should you do if the activation link is invalid?

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.

2.1.4 What should you do if forget your password?

There is a “Forget Password” button in the lower right corner of the login page. You can reset the password by clicking it.

2.1.5 How to change the login password?

You can click your avatar and select the "Change Password" button to enter the password modification page in Merchant Platform.

2.1.6 How to switch the MIDs in your account?

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.

2.2 Language & Timezone

2.2.1 How to switch the language?

We support Chinese and English versions for now. You can switch them by 2 ways:

  1. You can find the switch button below the landing page.
  2. You can switch the languages by clicking your avatar after login your account.

2.2.2 How to check and switch the time zone?

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.

2.2.3 Why the time is different with other people’s page?

Please make sure that you have set the same time zone.

2.2.4 Why the transaction time from the same report is different?

Please make sure you have set the same time zone before you download the report.

2.3 Refund Service

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

2.3.1 How to initiate a refund?

You can initiate a refund by two ways:

a. Merchant Platform
  1. Enter “Order Search” – “Payment” page.
  2. Search the Order ID which you wanna refund to enter “Order Detail” page.
  3. Click “Initiate a refund”.
b. API

You can initiate a refund request via a API. More Details

2.3.2 Why can’t I initiate a refund?

An order needs to meet the following conditions to initiate a refund:

  1. Only successfully paid orders can be refunded.
  2. Orders already in the refund process cannot be refunded again.
  3. Orders that have been successfully refunded cannot be refunded again.
  4. Refund can be initiated within 180 days of successful order payment.
  5. Please ensure that the account balance is sufficient for the refund.
  6. Currently, only Indian payment methods support refunds. Payment methods in other countries are not supported now.
  7. 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].

2.3.3 When will the user get his/her refund?

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.

2.3.4 In which account will the user receive the refund amount?

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.

2.3.5 How to pay the refund amount?

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.

2.3.6 What to do if the refund balance is insufficient?

If your balance is insufficient, you can enter the “Top up” – “Account” page and follow the steps to complete the top-up.

2.3.7 Why the refund status shows success, but the customer does not receive the money?

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.

2.3.8 Can I initiate a refund for an order that has been rejected or refund failed?

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.

2.3.9 Can I initiate a refund for a settled order?

Of course, you can. As long as the order is eligible to initiate a refund, the refund will not be affected even if settled.

2.3.10 How to get refund approval function?

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.

2.4 Settlement Service

2.4.1 Why has the settlement cycle arrived but I have not received a settlement transfer?

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:

  1. 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.
  2. 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.

2.4.2 How do I change my settlement bank account information?

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.

2.4.3 How to download settlement information in batches?

  1. Enter the “Settlement” page.
  2. 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.

2.4.4 What is the difference between transaction amount, settlement amount and transfer amount?

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.

2.4.5 What is transaction volume?

Transaction volume is the number of original transactions contained in the settlement cycle.

2.4.6 What is service charge?

The service charge is the transfer handling fee charged by the bank, which will be deducted from your settlement amount.

2.4.7 If there is cross-currency settlement, what is the conversion rate?

If cross-currency settlement exists, it will be converted at the exchange rate on the day of the transfer bank.

2.4.8 How to view the details of a settlement?

You can view the details as follows:

  1. Enter “Settlement” page.
  2. Search Bank Order ID or Settlement ID to enter “Settlement Detail” page.
  3. Click “Download” button to download Settlement information.

2.4.9 How to receive settlement notification email?

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.

2.5 Balance Management

2.5.1 How to check my balance?

There are two ways to check your account balance:

  1. Enter “Balance” – “Account” page to check your account balance.
  2. 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.

2.5.2 What is available balance? What is unavailable balance?

"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.

2.5.3 How to check the balance movements history?

You can enter “Balance” – “Account” page to check the available balance movements history.

2.5.4 How to top up?

You can enter “Balance” – “Account” page and follow the steps to complete the top-up.

2.5.5 How to top up across currencies?

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.

2.6 Merchant Info

2.6.1 What is a Merchant ID (MID) and where can I find it?

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:

  1. Click the merchant name at the upper right to get it.
  2. Enter "Profile" - "Setting" page to get it.

2.6.2 How to view and edit basic information about the merchant?

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.

2.6.3 How to change the display name of the merchant?

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.

2.6.4 Why can't I delete Business Contact Information?

Business contact information is mandatory and cannot be deleted. It can only be edited.

2.6.5 How to check the available service information of the merchants?

Enter "Profile" - "Setting" page and click "Show Detail" to view information about available services.

2.6.6 How to change the payment product?

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.

2.7 Payment Service

2.7.1 How to check the status of orders?

There are 3 ways to check the status of orders:

  1. You can enter “Order Search” - “Payment” page to search the status.
  2. You can check the order status by receiving “Notification Callback”. More Details
  3. You can get the transaction status by using “Result Query”. More Details

2.7.2 How to check orders from different time zone?

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.

2.7.3 How to download orders?

You can download the transaction reports as follows:

  1. Enter “Order Search” - “Payment” page.
  2. 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.

2.7.4 Why the time of the same transaction on search page and detail page is different?

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.

2.7.5.What to do if the inquiry order does not exist?

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:

  1. Exiting the page too quickly when the user enter the check-out page.
  2. Exiting the check-out page before the page has been fully loaded.

3. Customer Complaints

3.1 What to do if the transaction order does not exist?

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:

  1. The customer enters the checkout page but exits too quickly.
  2. The customer exits the checkout page before the page has been fully loaded.

3.2 Why the refund status shows success, but the customer does not receive the money?

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.

3.4 Why can't I enter OTP when using Paytm?

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.

⚠️ **GitHub.com Fallback** ⚠️