支付文档 - sunitsdk/SUnitUnityDemo GitHub Wiki

[toc]

开发者指南

1. 配置说明

1.1 联调环境

环境 请求地址
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 获取商户号和密钥

联调接入所需的商户ID及密钥,可通过商户管理平台获取,入口为:「商户管理平台」-「设置服 务」-「开发参数」频道。 通过该服务,可分别获取测试环境、正式环境的配套商户号及密钥组合。测试环境密钥可直接生成,正式环境密钥只可在合同有效期内生成。 请妥善保管密钥信息,若不慎泄漏密钥,请及时在「开发参数」中重置密钥

1.3 配置回调地址

回调地址用于接入方服务端接收来自 SHAREit Pay 服务端提供的订单异步回调结果。 该地址可通过调用接口的对应参数提交,也可通过商户管理平台设置。 其中,接口提交的回调地址优先于商户管理平台内的设置入口:「商户管理平台」-「设置服务」-「开发参数」 频道。

2. 加签方法

MD5签名适用于所有通过API接口进行的请求,Token仅适用于安卓SDK的调用请求。

2.1 加签前准备

设所有发送或者接收到的数据为集合M,将集合M内的非空参数按照参数名的ASCII码从小到大排序(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串A。

特别注意以下重要规则: 1.参数名ASCII码从小到大排序(字典序); 2.参数名区分大小写; 3.验证调用返回或 SHAREit Pay 主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验; 4.SHAREit Pay 接口可能增加字段,验证签名时需要支持增加的扩展字段; 5.集合M内的空值null不参与加签,集合M内的空字符串(””)参与加签。 6.对于 SHAREit pay 响应中data数据体,允许进行验签,详见验签示例。

2.2 加签

在字符串A最后拼接上key,得到字符串signTemp并对signTemp进行MD5运算,再将得到的字符串中的所有字符转换为大写,最终得到完成加签的值signValue。多语言示例代码

2.3 加签示例(商户请求参数加签)

假设传送的参数如下:

params = {
		"bizType": "payTransQuery",
		"merchantId": "SP4189603",
		"version": "2.1",
		"orderId": "1535433516149"
}

商户密钥为:rqDaYMfPklU4Ga5n 如使用 SHAREit Pay 提供的加验签封装工具类,则直接传入参数和密钥,调用生成签名:

sign = signForMD5(params, "rqDaYMfPklU4Ga5n");

完成参数组装即可。

如开发语言未提供相应封装加验签工具类,则按以下步骤完成加签:

  • 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
A = "bizType=payTransQuery&merchantId=SP4189603&orderId=1535433516149&version=2.1";
  • 获取签名(其中获取字符串md5值方法为:MD5() ):
signTemp = A + "&key=AvCsZGBXewShPt8M"
sign = MD5(signTemp).toUpperCase() //加签后的值"1608D2F69FF80427B9FAA1F025E21603"
  • 组装请求参数
{
		"bizType": "payTransQuery",
		"merchantId": "SP4189603",
		"version": "2.1",
		"orderId": "1535433516149",
		"sign": "1608D2F69FF80427B9FAA1F025E21603"
}

2.4 验签示例(商户接受 SHAREit Pay 服务端响应或回调通知)

注意:商户接受** SHAREit Pay 服务端响应验签仅需对 data 体中参数进行验签**,回调通知直接对接受 SHAREit Pay 通知的请求参数进行验签即可。 如订单查询的响应为:

{
    "data": {
        "amount":"1.00",
        "tradeNo": "TRADE20190814080829664128262",
        "orderId": "test_orderId_001",
        "sign": "8BF621FAD5839DB823CFCCFB364FC174",
        "errorCode": "E001",
        "currency": "INR",
        "errorMsg": "time out",
        "status": 2
    },
    "bizCode": "0000"
}

则需验签的参数如下:

{
        "amount":"1.00",
        "tradeNo": "TRADE20190814080829664128262",
        "orderId": "test_orderId_001",
		"sign": "8BF621FAD5839DB823CFCCFB364FC174",
        "errorCode": "E001",
        "currency": "INR",
        "errorMsg": "time out",
        "status": 2
}

商户密钥: key = rqDaYMfPklU4Ga5n 如使用 SHAREit Pay 提供的加验签封装工具类,则直接传入参数和密钥,调用验证签名:

sign = "8BF621FAD5839DB823CFCCFB364FC174";
successflag = verifyForMD5 (params,  sign"rqDaYMfPklU4Ga5n");

successflag = true 则验签通过, successflag = false 则验签失败。

如开发语言未提供响应封装加验签工具类,则按以下步骤完成加签:

  • 对参数按照key=value的格式,并按照参数名ASCII字典序排序如下:
A = "amount=1.00¤cy=INR&errorCode=E001&errorMsg=time out&orderId=test_orderId_001&status=2&tradeNo=TRADE20190814080829664128262";
  • 获取签名(其中获取字符串md5值方法为:MD5() ):
signTemp= A + "&key=rqDaYMfPklU4Ga5n"
newSign = MD5(signTemp).toUpperCase()//加签后的值"0649DEF0CFE2721071DC6E5107E21F1B"
  • 比对签名 判断响应或者请求参数sign是否等于newSign,是则验签通过。

3. 获取Token

商户客调用SDK下单前,需传入token出于安全考虑,token应由商户的服务端向SHAREit Pay服务端获取,并返回供商户客户端下单使用。

3.1 请求参数

参数 类型 是否必填 最大长度 描述 示例值
merchantId String 30 SHAREit Pay 分配给商户的唯一标识 SP4189603
bizType String 30 业务代码,此接口需传入“token” token
version String 5 接口版本,目前统一传入1.0 1.0
secretKey String 64 商户密钥(由平台分配) ca8ab4754d2ce6ef

3.2 返回参数

参数 类型 是否必填 描述 示例值
bizCode String 返回状态码 0000
message String 返回信息 success
displayMsg String 展示信息 success
data String 返回内容,token的value值 /

3.3 获取Token示例

请求示例

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

返回示例

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

4. 协议规则

商户接入 SHAREit Pay 服务,调用API须遵循以下规则:

传输方式 为保证交易安全性,采用HTTPS传输
提交方式 采用POST方法提交
数据格式 提交和返回数据都为application/json格式
字符编码 统一采用UTF-8字符编码
签名算法 MD5
签名要求 请求和接收数据均需要校验签名,详细方法请参考【加签方法】
判断逻辑 先判断协议字段返回,再判断业务返回,最后判断交易状态

5. 模拟结果

在测试环境下,为了方便商户在对接过程中调试对于不同支付结果的处理流程,SHAREit Pay 收银台提供了可供模拟支付结果的设置页面(如图所示)。商户联调时,通过选择任意一种支付方式,输入随机的支付账号和其他必要的信息进行支付(测试环境不作账号真实性验证),最终都会进入该页面。

验收方式及预期结果,如下:

  • 选择支付成功:前台进入成功结果页,服务端将立刻获得成功状态的回调通知;
  • 选择支付失败:前台进入失败结果页。如需验收服务端失败状态回调,请务必点击结果页中的Done按钮、关闭收银台页。
  • 选择支付中:前台进入支付中结果页。服务端不会收到回调。
*页面截图*

6. 样例下载

7. 上线注意事项

开通产线环境需要满足以下两个条件:1. KYC认证通过;2. 合同签订完成。

7.1 测试验收

测试联调完成后,建议按下述用例进行自测。

7.1.1 接口请求场景

a.国家和币种传入

请确认是否正确传入国家(countrCode)和币种(currency)字段。查看字段对应码

  • 若国家码或币种码不匹配会导致订单创建失败。
  • 若接入多个国家的支付方式时,需要特别注意,是否国家和币种是一致的。
  • 若有运营策略时,需要特别注意,传入的金额(amount)字段应该是用户的实际支付金额。

7.1.2 支付状态获取

a.配置回调地址

请确认是否正确配置回调地址,目前支持接口传入和平台设置两种配置方式。查看配置方法

  • 正确设置和使用回调地址,可以提高获取支付结果的效率,及时获取支付状态变更信息。
b.获取支付状态

请确认是否正确理解和处理SHAREit Pay所给出的支付状态。

  • 订单的支付状态,可通过异步回调和主动查询获知。
  • 若支付状态理解错误,可能会导致资金损失。
  • 以下为支付状态说明: -- status=0 支付中(非支付终态) 用户正在支付:需要等待SHAREit pay的回调通知,或者通过查询取得交易的最新结果。 -- status=1 交易成功 用户已支付成功:请给用户提供所购买的服务,如充值、发货、会员等。 -- status=2 交易失败 用户支付失败:请按支付失败处理,该笔订单的状态不会再流转为成功。

7.1.3 信息安全保证

a.订单信息存储

请确认订单信息是否存储在服务端,避免用户或订单数据丢失。

  • 建议将用户的支付数据存储在服务端,可保证在如下场景下用户的支付数据不会丢失。 -- 覆盖安装,导致订单数据丢失 -- 用户退出或关闭APP,导致订单数据丢失 -- 清除APP缓存,导致订单数据丢失
b.用户信息安全

请保证所传入的用户ID(custId)的唯一性,避免泄露用户的个人信息。

  • 收银台会根据custId推荐该用户曾经支付成功的支付方式。
  • 如果商户侧无法保证custID唯一性,将会导致用户看到他人的支付信息。

若需要SHAREit Pay协助验收对接内容,请联系您的账户经理,并提供以下信息:

  1. 承载SHAREit Pay收银台的APP安装包或H5链接地址
  2. 告知收银台入口
  3. 提供测试帐号

7.2 产线商户号、密钥和回调地址

7.2.1 商户号

正式环境和测试环境的商户号是相同的。 请登录商户平台,进入[设置服务] - [信息管理]页面,查看商户号。

7.2.2 获取产线密钥

正式环境的密钥需要重新生成。 请登录商户平台,进入[设置服务] - [开发参数]页面,在[正式环境]标签页下,生成正式环境的商户密钥。

7.2.3 设置回调地址

正式环境的回调地址需要重新设置。 SHAREit Pay支持两种方式设置回调地址:

  1. 请登录商户平台,进入[设置服务] - [开发参数]页面,在[正式环境]标签页下,配置正式环境的回调地址。
  2. 在请求支付时传入回调地址。查看详情 注意:若您传入的回调地址和商户平台配置的回调地址有冲突,以您传入的回调地址为准。

7.3 请求地址替换

正式环境的请求地址和测试环境不同,请注意切换。

7.3.1. 产线请求地址

服务 请求地址
收款服务 https://pay-gate.shareitpay.in/aggregate-pay-gate/api/gateway

收款服务

1. 业务介绍

SHAREit Pay收款服务支持包括电子钱包、信用卡、借记卡、UPI、网银、线下收款在内的多种支付方式。

业务流程

1.用户在商户处选购商品,确认购买;

2.商户通过SDK向 SHAREit Pay 发起收款请求,并获取可在自己应用中打开的SHAREit Pay收银台,呈现给用户;

3.用户按收银台页面指引,选择支付方式完成支付;

4.SHAREit Pay 根据实际的支付结果,通知商户:

  • 收银台页面跳转商户指定的前台回调地址;
  • 服务端获悉支付终态后,异步向商户指定callback url推送该笔订单的支付结果;

5.商户也可主动调用订单查询接口,查询订单详情;

6.如商户需要对一笔已成功支付的收款订单发起退款,可调用退款请求接口,发起申请;退款订单的结果,可通过订单查询接口,或异步结果回调获悉。

2. Android SDK收款

通过集成本SDK,商户可在自身Android应用中直接打开收银台供用户支付

2.1、集成步骤概括

1.获取调用SDK收银台时必要的Token

2.调用SDK收银台供用户支付

3.接收异步回调通知,根据支付结果处理订单

SDK收款接入流程

2.2 调用SDK方法

2.2.1 设置SDK连接环境

可通过如下函数设置SDK 连接环境:

环境 设置
Test 环境 SHAREitSDK.SHAREitSDK.setEnv("Test")
Prod 环境 SHAREitSDK.SHAREitSDK.setEnv("Prod")

2.2.2 将所需参数赋值给MerchantParamBean

具体的参数说明请参考:参见【下单参数说明】

MerchantParamBean.Builder builder = MerchantParamBean.Builder()
        .setToken("123456") //必选
        .setBizType("STANDARD") //必选
        .setMerchantId("SP4189603") //必选
        .setOrderId("1535433516149") //必选
        .setTotalAmount("100") //必选
        .setCurrency("INR") //必选
        .setCountryCode("IN") //必选
        .setUserId("123456789") //必选
        .setSubject("iPhone 16G") //必选
        .setDescription("") //可选
        .setReference("item157") //可选
        .setCallbackUrl("http://***.com/callback") //可选
        .setLanguage("en") //可选
        .setPaymentDetail("") //可选
        .setUserDetail("") //可选
        .setShowResult(MerchantParamBean.PAY_RESULT_TYPE_SDK) //可选
        .setExpireTime(1800); //可选

MerchantParamBean merchantParam = builder.build();

2.2.3 调用SHAREitSDK.startPayActivity 拉起收银台

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

注意:具体使用方法,请另行参考:SUnitUnityDemo

2.2.4 SDK函数回调

完成支付后,SDK将通过SHAREitSDK.PayResultListener接口中的onResult(int code, String orderId, String message, String reference) 函数回调App。相关参数说明请参考:【回调参数说明】

2.3 SDK下单参数说明

请求和响应数据格式:application/json

2.3.1 唤起SDK收银台参数

参数 类型 是否必填 最大长度 描述 示例值
token String 商户服务端从SHAREit服务端获取,参见【获取Token】 123456
bizType String 20 对应所签约的收款服务权限,可问询商务。如:STANDARD,IN_CB。 STANDARD
merchantId String 30 SHAREit分配给商户的唯一标识 SP4189603
orderId String 64 商户订单号,只能包含字母、数字、下划线。每次调用下单时不能重复 1535433516149
totalAmount String 12 订单金额,取值范围:[1, 100000000],小数点后最多支持2位。注意:印尼地区不支持带小数金额。 100.05
currency String 3 货币代码,大写字母,参见【支持的国家与币种】 INR
countryCode String 10 国家代码,大写字母,参见【支持的国家与币种】 IN
userId String 50 商户的用户ID 123456789
subject String 256 订单标题,用于收银台界面显示,建议传入商品名称 iPhone 16G
description String 256 订单附加说明
reference String 512 可供商户自定义,且在回调中反馈的字段 item157
callbackUrl String 256 交易结果后台回调地址,以http/https开头 http://****.com/callback
language String 8 语言设置,用来指定收银台的展示语言,默认英语。小写字母,参见【语言编码表】 en, hi, fil
+ paymentDetail String 256 定义支付方式信息,为JSON格式字符串 { "paymentType": "00" }
└ paymentType String 20 支付方式编码。bizType = IN_CB时,可用。详细信息可联络商务获悉。 "00"
+ userDetail String 512 供商户提交付款人信息,如正确传入可跳过付款人信息搜集页。内容是Json格式字符。 {"name":"CustName","email":"com@iup","phoneNumber":"50000000","districtCode":"965"}
└ name String 付款人姓名
└ email String 32 付款人邮箱 [email protected]
└ phoneNumber String 15 付款人手机号,凡支付渠道需用户填写手机号,将默认取该值供用户便利选择 9101234123
└ districtCode String 付款人手机的国际区号
└ citizenIdNo String 10 为付款人身份证件号。印度地区为:10位数Pan卡号(即印度永久税务账号) EBZPV8569H
└ deviceId String 付款人设备标识
└ ip String 付款人设备IP地址 127.0.0.1
showResult String 10 是否使用SHAREit Pay支付结果页。0:不使用;1:使用。默认使用。 0
expireTime long 订单有效时长,单位为秒,该字段仅在bizType=STANDARD并且是印度地区时有效。最长可定义至72小时,默认30分钟(1800秒)。 1800

2.3.2 回调参数说明

参数 类型 描述 示例值
code int 状态码,10000表示“交易成功”;10001表示“交易处理中”;其它值表示“请求错误或交易失败“,参见【状态码】 10000
message String 成功或错误信息描述 Success
orderId String 商户订单号 1535433516149
extra String 商户传入的参数,和请求参数中extra完全一致

注意:code值为10001时表示“支付处理中”,代表订单终态未知。商户可通过等待SHAREit Pay服务端的异步回调,或主动调用结果查询服务,获悉订单结果。订单跃迁至“成功”或“失败”终态时,异步回调服务将主动通知商户。

2.3.3 产品编码

bizType 服务权限名称
STANDARD 标准收款
IN_CB 印度跨境收款

注意:① 适用于印度本地收款及其他国家地区收款

paymentType 支付方式名称
00 UPI
05 Paytm
03 Net Banking

注意:① paymentType只有在bizType = IN_CB时,可用

2.3.4 状态码

状态码 描述
10000 交易成功
10001 交易中
10002 交易失败
10003 未知错误
10009 用户取消

2.4 关联服务

除了集成上述收款SDK,建议商户关注下述接入服务,以便向您的用户提供更完整的收款服务。

1. 异步通知

2. 退款请求接口

3. 结果查询接口

3 退款请求

该章节所述的退款功能仅适用于印度地区。受所在地支付通道限制,暂不支持其他国家。

对交易发起退款

请求和响应数据格式:application/json

3.1 退款请求参数

参数 类型 是否必填 最大长度 描述 示例值
merchantId String 30 SHAREit分配给商户的唯一标识 SP4189603
bizType String 30 业务代码,此接口需传入“refundApply” refundApply
version String 5 接口版本。当前值为:2.1 2.1
refundId String 64 商户退款请求流水号 20181112112606266846
orderId String 64 原商户订单号 1535433516149
amount String 12 退款金额等于原订单金额,目前暂不支持部分退款 1000
currency String 3 货币代码,大写字母,参见【支持的国家与币种】(当前只有印度支持退款) INR
sign String 64 采用MD5字符串签名,参见【MD5签名】 347453016A8C448A7E9449F8D7CE3A51
callbackUrl String 256 退款结果callBack URL,以http/https开头,传入该值可获得【退款结果异步回调通知】 https://***.com/revMsg
comment String 256 退款说明,不允许传入英文逗号 Sales return

请求报文

{
    "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 退款响应参数

参数 类型 是否必返 最大长度 描述 示例值
bizCode String 10 返回码 0000
message String 256 返回描述 success
data Object 返回数据体,内容参考下方的【data参数】

data参数

参数 类型 是否必返 最大长度 描述 示例值
refundId String 64 商户退款请求流水号 20181112112606266846
tradeNo String 64 原交易shareit-pay平台订单号 REFTRADE20190415060401022956957
orderId String 64 原交易商户订单号 1535433516149
refundAmount Number 12 实际退款金额 1000
currency String 3 货币代码,大写字母,参见【支持的国家与币种】(当前只有印度支持退款) INR
errorCode String 64 退款错误码
errorMsg String 256 退款错误原因

响应报文:

{
    "bizCode" : "0000", //表示请求接收成功
    "message" : "success",
    "data": {
          "refundId" : "20181112112606266846",
          "tradeNo" : "REFTRADE20190415060401022956957",
          "orderId" : "1535433516149",
          "refundAmount" : 1000,
          "currency": "INR",
          "errorCode" : "",
          "errorMsg" : ""
    }
}

注意: 1.受渠道约束,退款状态仅供查询受理是否成功,暂不支持查询退款处理的实际状态。但各渠道一般遵循下述规律处理退款:退款请求受理成功后,于5-21天内资金将原路退还至用户支付所用银行卡或账户。 2.商户可按上述口径应答用户,如用户侧退款未在有效时间内处理,可接洽 SHAREit Pay 给予售后支持。

4 异步回调通知

支付完成后,SHAREit Pay 会把相关支付结果通过数据流的形式发送给商户,商户需要接收处理,并按文档规范返回应答。

4.1 通知规范

1.同样的通知可能会多次发送给商户系统。商户系统须能够正确的处理重复通知。 2.后台通知交互时,如果 SHAREit Pay 收到商户的应答不符合规范或超时,SHAREit Pay 会判定本次通知失败,重新发送通知,直到成功为止(在通知一直不成功的情况下,SHAREit Pay 总共会发起多次通知,通知频率为10s/20s/30s/60s/120s - 总计6次),但 SHAREit Pay 不能保证这些通知最终一定能成功。 3.在订单状态不明或者没有收到SHAREit支付结果通知的情况下,建议商户主动调用 SHAREit Pay 收款的【结果查询】确认订单状态。

特别提醒: 1、商户系统对于支付结果通知的内容需要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成的资金损失。 2、当收到通知进行处理时,应首先检查对应业务数据的状态,判断该通知是否已经被处理过,如果没有处理请再进行处理,处理过的可直接返回成功。

4.2收款结果异步回调通知

请求和响应数据格式:application/json

4.2.1 通知参数

参数名称 参数类型 是否必填 参数描述
merchantId String SHAREit Pay 分配给商户的唯一标识
tradeOrderNo String SHAREit Pay 交易订单号
orderId String 商户订单号
status Number 1代表成功;2代表失败
countryCode String 国家代码,参见【支持的国家与币种】
totalAmount string 商户传入的交易金额
currency string 商户传入的交易币种,在美金收单场景中为美金
payAmount string 为用户实际支付的支付金额
payCurrency string 为用户实际支付的币种
exchangeRate string 交易金额转换为支付金额使用的汇率
errorCode String 支付失败时对应的错误码值,若支付成功为空字符串
errorMsg String 支付失败时对应的错误描述,若支付成功为空字符串
sign String 签名,参见【MD5签名】

4.2.2 商户侧返回参数

收到 SHAREit Pay 支付结果通知后,请遵循要求按照示例返回参数给 SHAREit Pay:

参数名称 参数类型 是否必填 参数描述 示例值
result_code Number 返回状态码 200
message String 返回信息 SUCCESS

4.2.3 通知示例

1.通知示例:

{
   "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.返回示例:

{
    "result_code" : 200,
    "message" : "SUCCESS"
}

4.3 退款结果异步回调通知

请求和响应数据格式:application/json

4.3.1 通知参数

参数名称 参数类型 是否必填 参数描述
merchantId String SHAREit Pay 分配给商户的唯一标识
refundId String 商户退款请求流水号
tradeNo String 原交易订单号
orderId String 原商户订单号
refundAmount String 退款金额
currency String 币种,大写字母,参见【支持的国家与币种】
status String 退款状态:"1"-成功,"2"-失败
errorCode String 退款失败时对应的错误码,若退款成功为空字符串
errorMsg String 退款失败时对应的错误描述,若退款成功为空字符串
sign String 签名,参见【MD5签名】

4.3.2 商户侧返回参数

收到 SHAREit Pay 退款结果通知后,请遵循要求按照示例返回参数给 SHAREit Pay:

参数名称 参数类型 是否必填 参数描述 示例值
result_code Number 返回状态码 200
message String 返回信息 SUCCESS

4.3.3 通知示例

通知示例:

{
    "merchantId" : "SP4189603",
    "refundId" : "20181112112606266846",
    "tradeNo" : "REFTRADE20190415060401022956957",
    "orderId" : "1535433516149",
    "refundAmount" : "1000",
    "currency": "INR",
    "status" : "1",
    "errorCode" : "",
    "errorMsg" : "",
    "sign" : "055e10f63af852bdac8fa174c65f2f8a"
}

返回示例:

{
    "result_code" : 200,
    "message" : "SUCCESS"
}

5. 结果查询

5.1 收款结果查询

请求和响应数据格式:application/json

5.1.1 查询参数

参数 类型 是否必填 最大长度 描述 示例值
merchantId String 30 SHAREit Pay 分配给商户的唯一标识 SP4189603
bizType String 30 业务代码,此接口需传入“payTransQuery” payTransQuery
version String 5 接口版本。当前值为:2.3 2.3
orderId String 64 商户订单号 1535433516149
sign String 64 采用MD5字符串签名,参见【MD5签名】 MD5签名方法说明

请求示例:

{
	"bizType": "payTransQuery",
	"merchantId": "SP4189603",
	"orderId": "1543911807566",
	"version": "2.3",
	"sign": "6501C667567BE1E42950BDDF259FD7E7"
}

5.1.2 响应参数

参数 类型 是否必返 最大长度 描述 示例值
bizCode String 10 返回码 0000
data Object 返回数据体,内容参考下方的【data参数】

data参数

参数 类型 是否必返 最大长度 描述 示例值
tradeNo String 64 shareit-pay平台订单号 TRADE20181204081243021279830
orderId String 64 商户订单号 1543911807566
status Number 2 订单状态:0-待支付,1-支付成功,2-支付失败。该字段表明当前订单状态,重复请求时会返回已有订单状态。 0
totalAmount String 12 商户传入的交易金额,取值范围:[1, 100000000],小数点后最多支持2位。注意:印尼地区不支持带小数金额。 1
currency String 3 商户传入的交易币种,大写字母,参见【支持的国家与币种】 USD
payAmount string 12 为用户实际支付的支付金额 78
payCurrency string 3 为用户实际支付的币种,大写字母,参见【支持的国家与币种】 INR
exchangeRate string 16 交易金额转换为支付金额使用的汇率 78
errorCode String 64 支付失败时对应的错误码值,若支付成功为空字符串 9999
errorMsg String 256 支付失败时对应的错误描述,若支付成功为空字符串 Execute exception
sign String 64 采用MD5字符串签名,参见【MD5签名】 DB73C116DE2F220A68BB96542885E171

响应示例:

{
	"data": {
		"tradeNo": "TRADE20181204081243021279830",
		"orderId": "1543911807566",
		"status": 1, // 0:待支付,1:支付成功,2:支付失败
		"totalAmount": "1",
		"currency": "USD",
		"payAmount": "78",
		"payCurrency": "INR",
		"exchangeRate": "78",
		"errorCode": "", //支付失败,errorCode才填充错误码
		"errorMsg": "", //支付失败,errorMsg才填充错误message
		"sign": "9232368D2EE8E9D1B54D9E765A585126"
	},
	"bizCode": "0000"
}

5.2 退款结果查询

请求和响应数据格式:application/json

5.2.1 查询参数

参数 类型 是否必填 最大长度 描述 示例值
merchantId String 30 SHAREit Pay 分配给商户的唯一标识 SP4189603
bizType String 30 业务代码,此接口需传入“refundQuery” refundQuery
version String 5 接口版本。当前值为:2.1 2.1
refundId String 64 商户退款请求流水号 20181112112606266846
sign String 64 采用MD5字符串签名,参见【MD5签名】 2CE83FA767609D7B19136132F733BF0B

请求示例:

{
   "merchantId" : "SP4189603",
   "version" : "2.1",
   "bizType" : "refundQuery",
   "refundId" : "20181112112606266846",
   "sign" : "2CE83FA767609D7B19136132F733BF0B"
}

5.2.2 响应参数

参数 类型 是否必返 最大长度 描述 示例值
bizCode String 10 返回码 0000
message String 256 响应消息 success
data Object 返回数据体,内容参考下方的【data参数】

data参数

参数 类型 是否必返 最大长度 描述 示例值
refundId String 64 商户退款请求流水号 20181112112606266846
tradeNo String 64 shareit-pay平台订单号 TRADE20181204081243021279830
orderId String 64 商户订单号 1543911807566
refundAmount String 12 订单退款金额,取值范围:[1, 100000000],小数点后最多支持2位。注意:印尼地区不支持带小数金额。 1000
currency String 3 货币代码,大写字母,参见【支持的国家与币种】 INR
status Number 2 订单状态:0-待退款,1-退款受理成功,2-退款受理失败,该字段表明当前退款订单状态 0
sign String 64 采用MD5字符串签名,参见【MD5签名】 DB73C116DE2F220A68BB96542885E171
errorCode String 64 退款失败时对应的错误码,若退款成功为空字符串 9999
errorMsg String 256 退款失败时对应的错误描述,若退款成功为空字符串 Execute exception

响应示例:

    {
	"bizCode" : "0000",
	"message" : "success",
	"data" :  {
		"refundId" : "20181112112606266846",
		"tradeNo" : "REFTRADE20190415060401022956957",
		"orderId" : "1535433516149",
		"refundAmount" : "1000",
		"currency" : "INR",
		"status" : 1, // 0:待退款 1:退款受理成功 2:退款受理失败
		"sign": "2CE83FA767609D7B19136132F733BF0B",
		"errorCode" : "",
		"errorMsg" : ""
		}
    }

注意: 1.受渠道约束,退款状态仅供查询受理是否成功,暂不支持查询退款处理的实际状态。但各渠道一般遵循下述规律处理退款:退款请求受理成功后,于5-21天内资金将原路退还至用户支付所用银行卡或账户。 2.商户可按上述口径应答用户,如用户侧退款未在有效时间内处理,可接洽SHAREit Pay 给予售后支持。

附录

1. 国家、币种及语言编码

1.1 支持的国家与币种

国家/地区名称 国家编码 货币编码 语言编码
印度 IN INR, USD hi, en, kn, ml, pa, ta, te, mr
印度尼西亚 ID IDR, USD in, en, zh
马来西亚 MY MYR, USD mys, en, zh
菲律宾 PH PHP, USD fil, en
阿联酋 AE AED, USD en
巴林 BH BHD, USD en
阿联酋 AE AED, USD en
埃及 EG EGP, USD en
约旦 JO USD en
科威特 KW KWD , USD en
黎巴嫩 LB USD en
阿曼 OM OMR, USD en
卡塔尔 QA QAR, USD en
沙特阿拉伯 SA SAR, USD en
泰国 TH THB,USD en
巴西 BR BRL,USD pt,en
智利 CL CLP,USD es,en
哥伦比亚 CO COP,USD es,en
墨西哥 MX MXN,USD es,en
秘鲁 PE PEN,USD es,en
巴拉圭 PY PYG,USD es,en
乌拉圭 UY UYU,USD es,en

注意: 1、国家与币种属于强对应关系,不符合表内对应关系的,无法调起支付。 2、商户只能有效的请求已开通合同权限的国家。

1.2. 语言编码表

语言 语言编码 使用范围 语言英文描述
英语 en 通用 English
印地语 hi 印度 Hindi
马拉地语 mr 印度 Marathi
卡纳达语 kn 印度 Kannada
马拉雅拉姆语 ml 印度 Malayalam
旁遮普语 pa 印度 Punjabi
泰米尔语 ta 印度 Tamil
泰卢固语 te 印度 Telugu
印尼语 in 印尼 Bahasa Indonesia
菲律宾语 fil 菲律宾 Tagalog
马来文 mys 马来西亚 Malay
中文 zh 马来西亚 Chinese
葡萄牙语 pt 拉美 Portuguese
西班牙语 es 拉美 Spanish

2. 收款方式及其限额说明

2.1 印度

所在国可支持服务 支付金额说明
类型 支付方式 图标 订单时长 最小金额 最大金额 其他限制和说明 用户手续费
电子钱包 Paytm Wallet 可自定义,默认30分钟,最长72小时 INR 1 N/A 普通认证用户:Rs 1万/笔,Rs 1万/月,完整认证用户:Rs 10万/笔,无月限额 N/A
PhonePe 最低Rs 1/笔,最高Rs 10万/笔
Amazon Pay
Free Charge
Airtel Money
银行卡 借记卡 N/A 最低Rs 1/笔,最高视具体不同银行而定
信用卡
网银 Net Banking N/A
UPI UPI Collect N/A
UPI Intent

2.2 印度尼西亚

所在国可支持服务 支付金额说明
类型 支付方式 图标 订单时长 最小金额 最大金额 其他限制和说明 用户手续费
运营商计费 Indosat N/A 16分钟 Rp 1.000 Rp 1,100,000 定额明细点击查看;Rp 3,000,000 /日 N/A
Telkomsel 16分钟 Rp 500 Rp 500,000 仅支持下列固定金额: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%服务费
XL 16分钟 Rp 1,000 Rp 1,000,000 Rp 100,000/月 (仅针对后付费用户),Rp 3,000,000/日 N/A
Tri Indonesia 16分钟 Rp 500 Rp 1,300,000 N/A N/A
便利店/网点 Alfamart N/A 26小时 Rp 50,000 Rp 2,000,000 Rp 10,000,000/日 N/A
Indomaret 26小时 Rp 40,000 Rp 5,000,000 N/A N/A
True Money Agent Network 26小时 Rp 1 Rp. 10,000,000 N/A N/A
电子钱包 Doku 1.5小时 Rp 1 Rp 5,000,000 Rp 20,000,000/月 N/A
Go-Pay 3小时 Rp 1000 Rp 10,000,000 N/A N/A
DANA 48小时 Rp. 1 Rp. 10,000,000 N/A N/A
LinkAja 48小时 Rp. 1 Rp. 10,000,000 N/A N/A
OVO 30分钟 Rp. 1 Rp. 10,000,000 N/A N/A
银行网点/转账 Bank Transfer N/A 26小时 Rp 50,000 Rp 10,000,000 - Rp 50,000,000,取决于银行策略 Rp 10,000,000 - Rp 50,000,000/日,取决各家银行策略 Rp 0-7500服务费,取决于银行,通常为Rp 6500

2.3 菲律宾

所在国可支持服务 支付金额说明
类型 支付方式 图标 订单时长 最小金额 最大金额 其他限制和说明 用户手续费
电子钱包 GCash 24小时 PHP 1 PHP 10,000 N/A PHP10服务费
Grabpay 24小时 PHP 1 PHP 100,000 N/A N/A
DragonPay Credit 48小时 PHP 1 PHP 1,000,000 N/A N/A
Coins.ph 24小时 PHP 1 PHP 1,000,000 N/A N/A
线下非银网点 711便利店 72小时 PHP 50 PHP 200,000 N/A N/A
Bayad Center 72小时 PHP 50 PHP 200,000 N/A N/A
Cebuana Lhuillier Bills Payment 72小时 PHP 10 PHP 1,000,000 N/A N/A
EC Pay 72小时 PHP 50 PHP 1,000,000 N/A N/A
Robinsons Dept Store 72小时 PHP 50 PHP 200,000 N/A N/A
LBC Bills Payment 72小时 PHP 50 PHP 200,000 N/A N/A
M. Lhuillier 72小时 PHP 180 PHP 1,000,000 N/A PHP20服务费
RuralNet 72小时 PHP 20 PHP 100,000 N/A N/A
SM Bill Payment 72小时 PHP 50 PHP 200,000 N/A N/A
RD Pawnshop 72小时 PHP 10 PHP 20,000 N/A N/A
银行转账 OTC Bank & ATM N/A 72小时 PHP 1 PHP 2,000,000 限额通常在1-1,000,000之间,因各家银行略有差异 部分银行收取手续费,介于P10-P50,多为P25
Online Bank N/A 24小时 PHP 1 PHP 10,000,000 限额通常在1-1,000,000之间,因各家银行略有差异 部分银行收取手续费,介于P5-P15
运营商计费 Globe N/A 16分钟 PHP 10 PHP 2000 仅支持下列固定金额:10, 20, 50, 100, 200, 300, 400, 500, 1000, 2000 PHP 500/月(仅针对后付费用户)
Smart&Sun 16分钟 PHP 10 PHP 2000 N/A N/A

2.4 马来西亚

所在国可支持服务 支付金额说明
类型 支付方式 图标 订单时长 最小金额 最大金额 其他限制和说明 用户手续费
运营商计费 MYR 1 N/A 15分钟 N/A N/A N/A N/A

2.5 阿联酋

所在国可支持服务 支付金额说明
类型 支付方式 图标 订单时长 最小金额 最大金额 其他限制和说明 用户手续费
运营商计费 Etisalat N/A 16分钟 AED 1 N/A AED 40/日 N/A

3. 收款响应码与错误码

3.1 收款响应码

接口响应码(bizCode) 描述 接口响应描述(message) 说明
0000 接口调用成功 success 接口调用成功(调用结果见对应业务返回参数)
1000 接口请求参数有误/非法参数 bizType not support 传入的bizType有误
bizType is empty 传入的bizType为空
merchant not exist 传入的商户号不存在
merchantId is empty 传入的商户号为空
gateway authentication failure 网关认证失败
version is empty 缺少版本参数
sign is empty 缺少签名参数
parameters are empty 请求参数字段存在缺失
request param format error 请求参数数据格式有误
2000 接口调用失败 system internal error 系统内部异常
your request is frequency 请求接口频次过高
system busy 系统繁忙
get credential fail 凭证获取失败
3000 权限不足 token invalid 无效的访问令牌
token check incorrect 访问令牌检查错误
token is expired 访问令牌已过期
sign is incorrect 错误的签名
merchant key incorrect 错误的商户密钥
merchant not sign contract 商户未签署合约

3.2 收款错误码

业务响应码(errorCode) 描述 业务响应描述描述(errorMsg)
0003 订单未支付,无法发起退款 Unable to refund since the order unpaid
0004 商户订单不存在 Invalid orderID
0005 退款申请已存在 Refund order ID already existed
0007 退款订单不存在 Invalid refund order ID
0008 未开通任何可用支付方式 No payment method is available since not authorized.
0009 商户号不存在或无权限 No payment method is available since merchant is invalid
0017 请求参数格式错误 Check parameters, something is not correct.
1001 商户不存在 The merchant does not exist
1009 该笔订单已超出有效退款时间 Unable to refund since exceeding the refund available period
1010 退款金额与交易金额不匹配 Refund amount is not correct
1023 账户余额不足 Balance is not enough.
1024 订单金额无效或格式不正确 Invalid amount
1026 无效的交易过期时间 Invalid transaction expire time
1029 国家码与币种不匹配 The country code is not matched with the currency code.
1030 该支付方式不支持退款 This payment method is unable to raise refund.
1031 渠道服务商受理失败 Fail to process by the payment provider.
1032 退款币种与原订单交易币种不匹配 Refund currency doesn't match with the original order currency.
1036 当前支付方式不可用 This payment method is not available.
1037 账号格式无效或格式不正确 Invalid Account Number
1038 本订单金额无法受理 No payment method supports this amount.
1039 订单已支付,请勿重复请求 This order has been paid.
1040 请求的版本号不支持 Invalid version number
1041 请求的支付方式不支持 Invalid payment method
1042 支付方式不满足限额 This payment method does not support the amount.
1044 订单已超时关闭 This order is closed due to timeout.
4000 请求参数格式错误 Check parameters, format is not correct.
9994 请求频次过高,请稍后 Request too frequently. Slow down and try later.
9998 参数为空 Wrong parameter, something is empty.
9999 业务执行失败标识 System is busy.
P01 对应支付中订单 Payment under process.
F100 用户取消 Transaction cancelled by user
F150 用户超时未完成支付 Transaction expired.
F300 银行侧受理支付失败 Transaction failed at the bank's side.
F301 错误的银行卡CVV Invalid CVV.
F302 用户提供的支付信息未通过验证 Transaction failed at bank end due to authentication failed.
F304 错误的银行卡CVV或失效日期 CVV or expiry date is incorrect.
F305 银行拒绝受理 Payment has been declined by bank.
F310 密码或动态口令未通过验证 Wrong Password or OTP.
F322 UPI PIN未设置 UPI PIN is not set.
F325 PIN尝试次数超限 Exceeded PIN retry limit.
F350 账户余额不足 Insufficient account balance.
F360 超出用户支付限额 Amount exceeds balance limit.
F363 超过日限额 Transaction failed at bank end due to user exceed daily amount limit.
F364 超过月限额 Transaction failed at bank end due to user exceed monthly amount limit.
F365 超过日交易次数 Transaction failed at bank end due to user exceed daily number of transactions limit.
F366 超过月交易次数 Transaction failed at bank end due to user exceed monthly number of transactions limit.
F400 因银行风控原因拒绝 Transaction is delined due to risk control
F401 银行拒绝受理 Bank refused to process.
F410 银行系统或后续系统超时导致的支付失败 Order closed due to time out.
F500 用户提供的支付信息有误 Certain payment detail is not correct.
F501 无效或不正确的银行卡号 Invalid or wrong card number
F502 不支持的银行卡组织 Unable to process due to the card orgnization is not supported.
F503 卡失效日期未通过验证 Card expiry date is not correct.
F504 卡姓名未通过验证 Card holder name is not correct.
F505 不支持的国际卡 International card is not supported.
F506 卡或账户冻结不可用 Unable to process due to card/account suspended.
F507 失效的银行卡 Invalid or wrong card number
F508 动态验证码请求超限 Exceeded OTP request limit.
F512 动态验证码错误或已失效 Invalid OTP or expired OTP entered.
F514 支付账号未注册 Payment account is not registered.
F515 错误或无效的支付账号 Invalid account number
F516 OTP验证次数超限 Exceeded OTP validate limit.
F520 手机号不正确 Mobile number is not correct.
F521 不支持的运营商 Numbers from this operator are currently not supported.
F523 账号冻结或被限制 Account blocked or frozen.
F524 错误或无效的UPI账号 Invalid UPI ID.
F525 UPI账号关联的手机号已变更 Registered Mobile number linked to the account has been changed/removed.
F600 渠道服务商受理失败 Fail to process by the payment provider.
F700 渠道服务商系统异常 Technical error occurred.
F810 支付通道暂不可用 This payment method is not available currently.
F830 因网络问题,渠道服务商受理失败 Provider failed to process due to network issue.

4. 银行编码

4.1 印尼

Bank Code Bank Name
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

常见问题

1. 技术对接

1.1 收款服务

1). 打开GoPay支付时,提示“"ERR_UNKNOWN_URL_SCHEME"错误

问题:

API标准入款接入方式, 点击GoPay支付方式,打开页面出错,提示"ERR_UNKNOWN_URL_SCHEME"

解答:

如果打开API的容器是Android的WebView,需要复写WebViewClient,下面是示例代码。

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

点击下载:GoPayExample

2). 打开DANA支付时,页面显示空白或“The network connection is unstable. Please try again later."

问题:

API标准入款接入方式, 打开DANA支付方式, 页面提示错误, 看到的现象是空白,实际页面比较大, 移动页面可以看到页面错误:“The network connection is unstable. Please try again later."

解答:

如果打开PaySDK的容器是Android 的WebView,需要设置webView的WebSettings属性,代码如下

webSettings.setDomStorageEnabled(true);
webSettings.setTextZoom(100);
webSettings.setUseWideViewPort(true);

1.2 参数配置

1.2.1 如何生成密钥?

您可登录商户平台,通过「开发参数」频道生成和重置密钥。配置时,需注意区分测试环境和正式环境。

1.2.2 如何添加回调地址?

SHAREit Pay支持两种方式设置回调地址:

  1. 拥有开发参数权限的操作员或超级管理员可在商户平台中的「开发参数」频道生成和修改回调地址。
  2. 在下单时传入回调地址。查看详情 注意:若您传入的回调地址和商户平台配置的回调地址有冲突,以您传入的回调地址为准。

1.2.3 为何密钥生成失败?

请确认是否已签订正式合同,且生成密钥时是否已处于合同有效期。若满足条件后,仍然生成失败,请联系SHAREit Pay平台。

1.2.4 为何没收到回调通知?

  1. 请确认是否设置回调地址。
  2. 请确认回调地址是否填写正确,若仍有问题,请联系SHAREit Pay平台查明原因。

2. 商户平台

2.1 账号管理

2.1.1 如何获取登录帐号?

登录账号由SHAREit创建。 账号创建后,系统会触发激活邮件至您的邮箱,请注意查收下发的邮件。

2.1.2 为何登录账号时,提醒不存在或未激活?

新创建的账号,需要激活后方可登录使用。收到激活邮件后,请根据邮件指引点击激活,并设置初始登录密码。

2.1.3 激活链接已失效怎么办?

若您没有在收到邮件24小时内及时激活账号,为保证账号安全,该链接会失效。请联系贵司拥有管理权限的操作员,重新发送激活邮件即可。

2.1.4 忘记登录密码怎么办?

登录页面右下角有「忘记密码」按钮 ,点击后,可重置密码。

2.1.5 如何修改登录密码?

进入商户平台后,点击右上角的头像,选择「修改密码」按钮,即可进入修改页面。

2.1.6 如何切换商户?

若一个账号绑定了多个商户号,登录平台后,可通过点击页面右上角的商户名称,切换并查看不同商户号下的信息内容。 选择区会高亮提示当前所选中的商户号信息。

2.2 时区语言

2.2.1 如何切换语言?

目前商户平台支持中文和英文两种语言,并可在以下两处切换:

  1. 平台登录页下方有切换语言按钮。
  2. 登录平台后,点击右上方的用户头像可切换语言。

2.2.2 如何查看或切换时区?

商户平台中有三种类型的时区:

全局时区:

全局时区可控制整个商户平台的时间,默认时区为您的浏览器时区。可点击用户头像,通过「时区设置」切换。

搜索时区:

搜索时区可辅助客服处理收款相关的客诉问题。 您可通过该功能在搜索页快速切换时区。该时区仅对当前页的[订单发起时间]生效,若同时设置了全局时区和搜索时区,则以搜索时区为结果展示。刷新页面后,搜索时区会恢复默认值。

导出时区:

用户在导出订单信息时,可单独设置导出表格中的时区。若同时设置了全局时区、搜索时区和导出时区,则以导出时区为结果展示。

2.2.3 为何和他人的页面时间显示不一致?

请确认是否与他人处于同一时区内。

2.2.4 为何和他人的报表时间显示不一致?

请确认报表时区是否与他人一致。

2.3 退款服务

受渠道限制,目前只支持印度支付方式的退款,退款发起成功后,金额预计将在1~21天原路返还至用户账户。

2.3.1 如何发起退款?

SHAREit Pay支持两种退款发起方式:

  1. 登录商户平台发起退款。 请进入「收款管理」-「订单查询」频道,搜索需要进行退款的交易订单,进入该笔订单的详情页,点击「发起退款」按钮。
  2. 通过退款接口发起退款。查看详情

2.3.2 为何无法发起退款?

订单需要满足以下七个条件,才能发起退款:

  1. 只有支付成功的订单才能发起退款
  2. 已在退款过程中的订单无法再次发起退款
  3. 已成功退款的订单无法再次发起退款
  4. 订单支付成功后的180天内可发起退款
  5. 请保证账户余额足以支付退款
  6. 目前只有印度的支付方式支持退款,其他国家的支付方式暂不支持
  7. 请确认发起者是否具有申请退款的权限 若未满足退款条件仍希望发起退款,建议使用SHAREit Pay的付款服务退款。详情欢迎咨询[email protected]

2.3.3 用户预计多久能收到退款?

当您成功发起退款申请后,退款金额预计将于21日内返回用户银行账户。受渠道限制,不同银行的实际到账时间不同。

2.3.4 退款金额会打款至用户的哪个账户中?

退款金额会按原交易方式退还至用户账户中。 比如:用户通过Paytm Wallet付款,退款成功后,金额会返回至用户的Paytm Wallet账户中。

2.3.5 如何支付退款金额?

SHAREit Pay会优先从您的待结算账户(不可用余额)中扣除退款金额,若待结算账户(不可用余额)中金额不足,则会从商户账户(可用余额)中扣除退款金额。

2.3.6 退款余额不足怎么办?

若退款余额不足,您可通过商户平台的「账户充值」服务为您的账户充值后,再次发起退款。

2.3.7 为何退款显示成功,用户却没有收到钱?

退款成功仅表示渠道方已成功受理该笔退款申请,具体到账时间受渠道限制而有所不同。当您成功发起退款申请后,退款金额预计将于21日内返回用户银行账户。 受渠道约束,退款状态仅供查询受理是否成功,暂不支持查询退款处理的实际状态。但各渠道一般遵循下述规律处理退款:退款请求受理成功后,于1-21天内资金将原路退还至用户支付所用银行卡或账户。 若产生客诉,商户可按上述口径应答用户,如用户侧退款未在有效时间内处理,可接洽SHAREit Pay给予售后支持。

2.3.8 审批驳回和退款失败的订单可以再次发起退款吗?

可以。无论是审批驳回还是退款失败的订单,只要处于退款有效期内,都可以再次发起退款申请。

2.3.9 已结算的订单还可以发起退款吗?

可以。只要该笔订单符合发起退款的条件,即使已结算也不影响退款。

2.3.10 如何增加退款审批功能?

请先确认贵司是否开通了退款审批功能,若未开通,请联系SHAREit Pay平台为您添加内部审批功能;若已开通,请联系贵司的管理员或其他拥有管理权限的操作员为您添加权限。

2.4 结算服务

2.4.1 为何已经到了结算周期,仍未收到结算转账?

满足结算条件的订单,将于1个中国工作日内完成转账。若未收到转账,可能原因如下:

  1. 请确认是否在合同中约定最低结算限额,即未满指定额度的结算单不予结算。
  2. 若银行于当地节假日期间暂停服务,转账时间将顺延。 SHAREit Pay将会在结算完成后,给您发送通知邮件。

2.4.2 如何更改我的结算银行账户信息?

结算银行卡信息需在合同签订时提供,若后续要更改请联系SHAREit Pay平台,并提供相关证件证明。

2.4.3 如何批量导出结算单?

进入「结算管理」频道,填写完筛选项后,点击「导出」按钮,即可将该筛选项下的结算单信息导出成汇总表单,便于统计和分析。 导出结算单时,可自定义所需的时区,订单内所有的时间都会按所选时区进行转换。

2.4.4 交易金额、应结金额和转账金额有什么区别?

交易金额:交易金额为用户实际支付的金额和币种。 应结金额:应结金额=交易金额-(应扣税费+应扣手续费+退款金额),此处涉及的币种皆为用户实际支付的币种。 转账金额:转账金额为实际转账金额。若存在跨境结算,此处的币种应为换算后的币种。

说明:退款金额中可能包含往期其他已结算交易单发起的退款。

2.4.5.结算笔数是什么?

结算笔数为该笔结算单中包含的原交易单笔数。

2.4.6 结转费用是什么?

结转费用为银行收取的转账手续费,该笔费用将会从您的结算金额中扣除。

2.4.7 若存在跨币种结算,换算汇率是什么?

若存在跨币种结算,将以转账银行当日的汇率进行换算。

2.4.8 如何查看结算单的详情?

您可通过商户平台的「结算管理」频道查看和导出结算单的详细信息。

2.4.9 如何获取结算通知邮件?

当结算打款成功后,我司会给商户平台的超级管理员及「财务」联系人发送邮件通知。

若贵司希望有多位财务需要收取结算通知邮件,建议在「财务」联系人邮箱中填写群组邮箱地址,您可自定义群组邮箱的收件人。

2.4.10 为何结算单详情中的所结订单笔数与数据概览中的成功订单笔数不符?

数据概览中所展示的订单笔数是以订单创建日期为维度进行展示的,结算单详情中的所结订单笔数是以订单完成时间为维度进行结算的,两者维度不同,所以订单笔数不同。 建议贵司在对账时,可以通过「收款管理」-「订单查询」页面导出订单详情对账。

2.5 账户管理

2.5.1 如何查看账户余额?

SHAREit Pay支持两种方式查看账户余额:

  1. 主动查询:进入商户平台「账户管理」-「账户信息」频道,查看当前的账户余额。
  2. 邮件提醒:进入商户平台「账户管理」-「账户信息」-「余额提醒」频道,配置余额预警规则。当您的账户余额小于等于预警值时,SHAREit Pay会发送邮件通知您。

2.5.2 可用余额是什么?不可用余额是什么?

「可用余额」为您的充值金额,可用于付款服务和退款服务。 「不可用余额」为待结算金额,无法用于付款服务,可用于退款服务。

2.5.3如何查看账户变动记录?

进入商户平台「账户管理」-「账户信息」频道,可查看「可用余额」的账户变动记录。

2.5.4 如何给账户充值?

进入商户平台「账户管理」-「账户充值」频道,按提示步骤给账户充值。

2.5.5 如何跨币种充值?

如果您是跨币种转账,请在提交充值申请时,填写实际转账货币和币种。 我们将以实际收到的金额为您的账户充值。换算汇率以转账银行当日汇率为准。

2.6 商户信息

2.6.1 什么是商户号?如何获取商户号?

商户号是我司为贵司开通的一个具有唯一标识的编号,您若碰到业务或客诉问题想要咨询,请提供商户号,以便我司定位问题。

目前商户平台有两处可查看商户号:

  1. 点击页面右上角的商户名称。
  2. 通过「设置服务」-「信息管理」频道,查看商户号。

2.6.2.如何查看和修改商户的基本信息?

进入「信息管理」频道,查看贵司的基本信息和结算银行账户信息,并可编辑贵司的联系人信息。

2.6.3 如何更改商户的显示名称?

显示名称将用于商户平台和收银台名称的展示。 受渠道限制,该名称暂不支持自定义变更。 如需变更,请联系SHAREit Pay平台,并提供变更原因和凭证。

2.6.4 为何无法删除商务联系人信息?

商务联系人信息为必填项,无法删除,只能编辑。

2.6.5 如何查看商户当前所开通的服务信息?

进入「信息管理」频道,点击查看「基本信息」-「合同状态」-「可用服务」,查看可用服务信息。

2.6.6 如何更改现有的支付服务?

正式环境:正式环境中的支付产品是以生效合同为准,若想更改支付产品,请先联系与贵司对接的商务人员,签订新合同。 测试环境:请联系SHAREit Pay平台更改测试环境的支付产品。

2.7 收款服务

2.7.1 如何查看订单状态?

SHAREit Pay支持三种方式查看订单状态:

  1. 登录商户平台「收款管理」-「订单查询」页面即可查看订单状态。
  2. 接收异步回调通知,获取订单状态。查看详情
  3. 通过收款查询接口,获取订单状态。查看详情

2.7.2 如何快速跨时区查询订单?

「收款管理」-「订单查询」频道中,点击搜索条件中的时区按钮,可快速切换时区。该时区仅对当前页生效,刷新后即可恢复默认值。若同时设置了全局时区和搜索时区,则以搜索时区为结果展示。

2.7.3 如何批量导出交易订单?

进入「收款管理」-「订单查询」频道,填写完筛选项后,点击「导出」按钮,即可将该筛选项下的订单信息导出成汇总表单,便于统计和分析。导出订单时,可自定义所需的时区,订单内所有的时间都会按所选时区进行转换。

2.7.4 为何查询列表和订单详情中的时间显示不一致?

请确定是否在查询条件中设置了时区。查询时区仅对当前页生效,而详情中的时区则由全局时区控制。

2.7.5 如果查询订单不存在怎么办?

在确保订单号输入无误时,仍不存在,可能原因为:

  1. 用户进入收银台后,快速退出。
  2. 网络教慢,在页面加载完成前,用户退出收银台。 以上两种情况,会导致商户订单号已生成,但未生成平台订单号。因此查询订单不存在。

3. 客诉问题

3.1 如果订单查询不存在怎么办?

请先确保订单号输入是否正确,若输入正确仍无法查询该订单,可能原因为:

  1. 用户进入收银台后,快速退出。
  2. 网络教慢,在页面加载完成前,用户退出收银台。 以上两种情况,会导致商户订单号已生成,但未生成平台订单号。因此查询订单不存在。

3.2 为何退款显示成功,用户却没有收到钱?

退款成功仅表示渠道方已成功受理该笔退款申请,具体到账时间受渠道限制而有所不同。当您成功发起退款申请后,退款金额预计将于1-21日内返回用户银行账户。 受渠道约束,退款状态仅供查询受理是否成功,暂不支持查询退款处理的实际状态。但各渠道一般遵循下述规律处理退款:退款请求受理成功后,于1-21天内资金将原路退还至用户支付所用银行卡或账户。 若产生客诉,商户可按上述口径应答用户,如用户侧退款未在有效时间内处理,可接洽SHAREit Pay给予售后支持。

3.3 用户反馈已扣款成功,但是通过商户平台查询订单状态却显示为失败?

可能原因为:用户未在订单有效时间内完成付款,即订单已超时关闭后,用户才付款成功。 针对这类情况,贵司可直接按失败状态处理,该笔订单会由我司负责触发退款流程,预计1-21天内资金将原路退还至用户支付所用银行卡或账户。

3.4 为什么用户Paytm付款时,会出现无法输入OTP的情况?

  1. Paytm出于防刷和成本考虑,对规定时间内的OTP请求做了限制
  2. Paytm未对OTP频次进行明确说明,但是测试下来的结果大约为10分钟10条
  3. 如果用户需要解除OTP限制,需要提醒用户主动联系Paytm解决****
⚠️ **GitHub.com Fallback** ⚠️