开发者中心 API 文档

东芯付支付系统接口文档,涵盖代扣签约、统一下单、退款及通知回调等完整支付流程

REST API
标准接口
MD5 签名
安全验证
异步通知
实时回调
代扣签约
协议支付
多渠道
聚合支付
开发者中心 › 验签规则

签名算法

签名生成的通用步骤如下:

第一步:排序拼接

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

特别注意以下重要规则:
◆ 参数名 ASCII 码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名;
◆ 参数名区分大小写;
◆ 验证调用返回或支付中心主动通知签名时,传送的 sign 参数不参与签名,将生成的签名与该 sign 值作校验;
◆ 支付中心接口可能增加字段,验证签名时必须支持增加的扩展字段。

第二步:MD5 加密

在 stringA 最后拼接上 key(即 StringA + "&key=" + 私钥)得到 stringSignTemp 字符串,并对 stringSignTemp 进行 MD5 运算,再将得到的字符串所有字符转换为大写,得到 sign 值 signValue。

示例代码(Java)

Java Map<String, String> signMap = new HashMap<>(); signMap.put("platId", "1000"); signMap.put("mchOrderNo", "P0123456789101"); signMap.put("amount", "10000"); signMap.put("clientIp", "192.168.0.111"); signMap.put("returnUrl", "https://www.baidu.com"); signMap.put("notifyUrl", "https://www.baidu.com"); signMap.put("reqTime", "20190723141000"); signMap.put("version", "1.0");

签名过程示例

待签名值:

amount=10000&clientIp=192.168.0.111&mchOrderNo=P0123456789101&notifyUrl=https://www.baidu.com&platId=1000&reqTime=20190723141000&returnUrl=https://www.baidu.com&version=1.0&key=EWEFD123RGSRETYDFNGFGFGSHDFGH

签名结果:4A5078DABBCE0D9C4E7668DACB96FF7A

最终请求支付系统参数:

amount=10000&clientIp=192.168.0.111&mchOrderNo=P0123456789101&notifyUrl=https://www.baidu.com&platId=1000&reqTime=20190723141000&returnUrl=https://www.baidu.com&version=1.0&sign=4A5078DABBCE0D9C4E7668DACB96FF7A
开发者中心 › 接口文档 › 代扣签约申请

代扣签约申请

该接口用于协议支付统一签约申请。

环境地址
正式环境https://pay.mrlc.cn/api/pay/unifiedSignSms
请求方式POST
请求类型application/json

请求参数

参数类型是否必输最大长度描述示例值
mchOrderNostrtrue50商户订单号,只能是数字、大小写字母,且在同一个商户号下唯一ABC123456789
appIdstrtrue24应用ID
reqTimestrtruelong请求时间,13位时间戳
versionstrtrue3接口版本号,固定:1.0
signstrtrue32签名值,详见签名算法
signTypestrtrue32签名类型,默认 MD5MD5
mchNostrtrue12商户号
acctNostrtrue19签约卡号
mobileNostrtrue19签约手机号
identityTypestrtrue19证件类型
identityCodestrtrue19证件号
cvv2str信用卡不可空10信用卡 CVV2
validDatestr信用卡不可空6贷记卡有效期202503
customerNamestrtrue19持卡人姓名
channelCodestrtrue19渠道标识(详情见附录6)
attachstrfalse256附加数据,原样返回
ipstrfalse16客户端 IP
extendParamObjectfalse256扩展参数{"field1":"xxx","field2":"xxx"}

拓展参数说明

参数类型是否必输描述示例值
merUserIdstrtrue商户用户 ID(渠道为01时必填)
withholdTypestrtrue代收款项(渠道为01时必填)详情见附录7

响应参数

参数类型是否必输最大长度描述
codeinttrue20调用成功返回 0,失败返回错误代码
msgstrtrue200调用成功或错误信息
datastrfalse-响应数据

data 数据

参数是否必输类型描述
verifyCodetrueString签约凭证单号
mchOrderNotrueString返回商户传入的订单号
attachtrueString原样返回附加数据
开发者中心 › 接口文档 › 代扣签约确认

代扣签约确认

该接口用于协议支付统一签约确认。

环境地址
正式环境https://pay.mrlc.cn/api/pay/signConfirm
请求方式POST
请求类型application/json

请求参数

参数类型是否必输最大长度描述示例值
mchOrderNostrtrue50商户订单号,只能是数字、大小写字母ABC123456789
appIdstrtrue24应用ID
reqTimestrtruelong请求时间,13位时间戳
versionstrtrue3接口版本号,固定:1.0
signstrtrue32签名值,详见签名算法
signTypestrtrue32签名类型,默认 MD5MD5
mchNostrtrue12商户号
verifyCodestrtrue32触发短信返回的凭证单号
smsCodestrtrue16短信验证码
channelCodestrtrue19渠道标识(详情见附录6)
cvv2str信用卡不可空3银行卡 CVV2,数字
validDatestr信用卡不可空256银行卡有效期
attachstrfalse256附加数据,原样返回
ipstrfalse16客户端 IP
extendParamObjectfalse256扩展参数

响应参数

参数类型是否必输最大长度描述
codeinttrue20调用成功返回 0,失败返回错误代码
msgstrtrue200调用成功或错误信息
datastrfalse-响应数据

data 数据

参数是否必输类型描述
bankCodetrueString银行简码
mchOrderNotrueString返回商户传入的订单号
bizProtocolNotrueString业务协议号
payProtocolNofalseString支付协议号
shortCardNotrueString卡号后四位
signInfofalseString特定渠道签约信息
attachtrueString原样返回附加数据
开发者中心 › 接口文档 › 代扣协议解约

代扣协议解约

该接口用于协议支付解约。

环境地址
正式环境https://pay.mrlc.cn/api/pay/signCancel
请求方式POST
请求类型application/json

请求参数

参数类型是否必输最大长度描述示例值
mchOrderNostrtrue50商户订单号,只能是数字、大小写字母ABC123456789
appIdstrtrue24应用ID
reqTimestrtruelong请求时间,13位时间戳
versionstrtrue3接口版本号,固定:1.0
signstrtrue32签名值,详见签名算法
signTypestrtrue32签名类型,默认 MD5MD5
mchNostrtrue12商户号
bizProtocolNostrtrue32签约返回的业务协议号
payProtocolNostrtrue16签约返回的支付协议号
acctNostrfalse32签约卡号
channelCodestrtrue19渠道标识(详情见附录6)
attachstrfalse256附加数据,原样返回
ipstrfalse16客户端 IP
extendParamObjectfalse256扩展参数

拓展参数说明

参数类型是否必输描述
merUserIdstrtrue(渠道为01时)商户用户 ID
withholdTypestrtrue(渠道为01时)代收款项,详情见附录7

响应参数

参数类型是否必输最大长度描述
codeinttrue20调用成功返回 0,失败返回错误代码
msgstrtrue200调用成功或错误信息
datastrfalse-响应数据

data 数据

参数是否必输类型描述
mchOrderNotrueString返回商户传入的订单号
attachtrueString原样返回附加数据
开发者中心 › 接口文档 › 统一下单

统一下单接口

创建支付订单,获取支付所需参数,支持微信、支付宝、银联、抖音等多种支付方式。

POST /pay/unifiedOrder

Content-Type:application/json

请求参数

字段名变量名必填类型描述示例值
商户号mchNoString(30)商户号
应用IDappIdString(24)应用ID
请求时间reqTimelong请求接口时间,13位时间戳
接口版本versionString(3)接口版本号,固定:1.0
签名signString(32)签名值,详见签名算法
签名类型signTypeString(32)签名类型MD5
商户订单号mchOrderNoString(30)商户生成的订单号
支付方式wayCodeString(30)支付方式,详见附录1
支付金额amountint支付金额,单位:分
货币代码currencyString(3)三位货币代码,人民币:cnycny
客户端IPclientIpString(32)客户端 IPv4 地址
商品标题subjectString(64)商品标题
商品描述bodyString(256)商品描述
异步通知地址notifyUrlString(128)支付结果异步回调 URL,只有传了该值才会发起回调,不能带 query 参数
跳转通知地址returnUrlString(128)支付结果同步跳转通知 URL
失效时间expiredTimeint订单失效时间(秒),默认 2 小时。订单在(创建时间+失效时间)后失效3600
渠道参数channelExtraJSONObject(256)特定渠道发起的额外参数(变量按照 ASCII 排序)。openId 用户标识;subMchAppId 微信公众号/小程序 appid;subOpenId 用户标识。其他支付方式详见附录1
扩展参数extParamString(128)备注信息,原样返回

响应参数

字段名变量名必填类型描述
返回状态codeint0-处理成功;其他-处理有误,详见错误码
返回信息msgString(128)具体错误原因,例如:签名失败、参数格式校验错误
签名信息signString(32)对 data 内数据签名,如 data 为空则不返回
返回数据dataJson返回下单数据,json 格式

data 数据格式

字段名变量名必填类型描述
支付订单号payOrderIdString(30)返回支付系统订单号
商户订单号mchOrderNoString(30)返回商户传入的订单号
订单状态orderStateint0-订单生成;1-支付中;2-支付成功;3-支付失败;4-已撤销;5-已退款;6-订单关闭
支付数据类型payDataTypeString支付参数类型
支付数据payDataString发起支付用到的支付参数
渠道错误码errCodeString上游渠道返回的错误码
渠道错误描述errMsgString上游渠道返回的错误描述
开发者中心 › 接口文档 › 查询支付方式

查询支付方式列表

获取当前商户可用的支付方式列表,包含支付渠道编码、支付方式编码及图标信息。

POST /pay/queryPayway

Content-Type:application/json

请求参数

字段名变量名必填类型描述示例值
商户号mchNoString(30)商户号
应用IDappIdString(24)应用ID
请求时间reqTimelong请求接口时间,13位时间戳
接口版本versionString(3)接口版本号,固定:1.01.0
签名signString(32)签名值,详见签名算法
签名类型signTypeString(32)签名类型MD5

返回参数

字段名变量名必填类型描述
返回状态codeint0-处理成功;其他-处理有误
返回信息msgString(128)具体错误原因
签名信息signString(32)对 data 内数据签名
返回数据dataJson返回下单数据,json 格式

data 数据格式

字段名变量名必填类型描述
支付方式列表paywaysJsonArray支付方式列表

payways 数据格式

字段名变量名必填类型描述
支付渠道编码ifCodeString(30)支付渠道编码(小写英文)
支付方式编码wayCodeString(30)支付方式编码(大写英文)
支付方式图标iconString(500)图标 URL
支付方式名称wayNameString(100)支付方式名称
开发者中心 › 接口文档 › 查询支付订单

查询支付订单

根据商户订单号或支付中心订单号查询支付订单详情。

POST /pay/query

Content-Type:application/json

请求参数

字段名变量名必填类型描述示例值
商户号mchNoString(30)商户号
应用IDappIdString(24)应用ID
请求时间reqTimelong请求接口时间,13位时间戳
接口版本versionString(3)接口版本号,固定:1.0
签名signString(32)签名值,详见签名算法
签名类型signTypeString(32)签名类型MD5
商户订单号mchOrderNoString(30)商户生成的订单号,与 payOrderId 二者传一即可
支付订单号payOrderIdString(30)支付中心生成的订单号,与 mchOrderNo 二者传一即可

返回参数

字段名变量名必填类型描述
返回状态codeint0-处理成功;其他-处理有误,详见错误码
返回信息msgString(128)具体错误原因
签名信息signString(32)对 data 内数据签名,如 data 为空则不返回
返回数据dataJson返回数据,json 格式

data 数据格式

字段名变量名必填类型描述
支付订单号payOrderIdString(30)返回支付系统订单号
商户号mchNoString(30)商户号
应用IDappIdString(24)应用ID
商户订单号mchOrderNoString(30)返回商户传入的订单号
支付接口ifCodeString(30)支付接口编码
支付方式wayCodeString(30)支付方式
支付金额amountint支付金额,单位:分
货币代码currencyString(3)三位货币代码,人民币:cny
订单状态stateint0-订单生成;1-支付中;2-支付成功;3-支付失败;4-已撤销;5-已退款;6-订单关闭
客户端IPclientIpString(32)客户端 IPv4 地址
商品标题subjectString(64)商品标题
商品描述bodyString(256)商品描述
渠道订单号channelOrderNoString对应渠道的订单号
渠道错误码errCodeString渠道下单返回错误码
渠道错误描述errMsgString渠道下单返回错误描述
扩展参数extParamString(512)商户扩展参数,回调时会原样返回
创建时间createdAtlong订单创建时间,13位时间戳
成功时间successTimelong订单支付成功时间,13位时间戳
退款成功时间rSuccessTimelong订单退款成功时间,13位时间戳
开发者中心 › 接口文档 › 支付通知回调

支付通知接口

支付成功后,支付系统主动向商户服务器发送支付通知(支付系统 → 商户)。

接口名称请求 URL请求方式请求类型
支付通知通过统一下单接口提交的参数 notifyUrl 设置POSTapplication/x-www-form-urlencoded

通知参数

字段名变量名必填类型描述
支付订单号payOrderIdString(30)返回支付系统订单号
商户号mchNoString(30)商户号
应用IDappIdString(24)应用ID
商户订单号mchOrderNoString(30)返回商户传入的订单号
支付接口ifCodeString(30)支付接口编码
支付方式wayCodeString(30)支付方式,如微信小程序:WX_LITE
支付金额amountint支付金额,单位:分
货币代码currencyString(3)三位货币代码,人民币:cny
订单状态stateint0-订单生成;1-支付中;2-支付成功;3-支付失败;4-已撤销;5-已退款;6-订单关闭
客户端IPclientIpString(32)客户端 IPv4 地址
商品标题subjectString(64)商品标题
商品描述bodyString(256)商品描述
用户标识channelUserString渠道用户标识,如微信 openId、支付宝账号、刷卡卡号
渠道订单号channelOrderNoString对应渠道的订单号
渠道错误码errCodeString渠道下单返回错误码
渠道错误描述errMsgString渠道下单返回错误描述
扩展参数extParamString(512)商户扩展参数
创建时间createdAtlong订单创建时间,13位时间戳
成功时间successTimelong订单支付成功时间,13位时间戳
通知请求时间reqTimeString(30)通知请求时间,13位时间戳
签名signString(32)签名值
签名类型signTypeString(32)签名类型

返回结果

业务系统处理后同步返回给支付系统,返回字符串 success 则表示成功,返回非 success 则表示处理失败,支付系统会再次通知业务。

注意:返回的字符串必须是小写,且前后不能有空格和换行符。
开发者中心 › 接口文档 › 统一退款

统一退款接口

对已支付成功的订单发起退款申请。

POST /refund/refundOrder

Content-Type:application/json

请求参数

字段名变量名必填类型描述示例值
商户号mchNoString(30)商户号
应用IDappIdString(24)应用ID
请求时间reqTimelong请求接口时间,13位时间戳
接口版本versionString(3)接口版本号,固定 1.0
签名signString(32)签名值,详见签名算法
签名类型signTypeString(32)签名类型MD5
支付订单号payOrderIdString(30)支付中心生成的支付订单号
商户订单号mchOrderNoString(30)商户生成的支付订单号
商户退款单号mchRefundNoString(30)商户生成的退款单号
退款金额refundAmountint退款金额,单位:分
货币代码currencyString(3)三位货币代码,人民币:cnycny
退款原因refundReasonString(64)退款原因
客户端IPclientIpString(32)客户端 IPv4 地址
异步通知地址notifyUrlString(128)退款完成后回调该地址
渠道参数channelExtraString(256)特定渠道发起的额外参数
扩展参数extraParamString(512)商户扩展参数,回调时原样返回

返回参数

字段名变量名必填类型描述
返回状态codeint0-处理成功;其他-处理错误
返回信息msgString(128)具体错误原因
签名信息signString(32)对 data 内数据签名
返回数据dataJson返回数据,json 格式

data 数据格式

字段名变量名必填类型描述
退款订单号refundOrderIdString(30)返回退款订单号
商户退款单号mchRefundNoString(30)返回商户传入的退款单号
退款状态stateint0-订单生成;1-退款中;2-退款成功;3-退款失败;4-退款关闭
渠道退款单号channelOrderNoString对应渠道的退款单号
渠道错误码errCodeString上游渠道返回的错误码
渠道错误描述errMsgString上游渠道返回的错误描述
开发者中心 › 接口文档 › 退款通知回调

退款通知接口

退款完成后,支付系统主动向商户服务器发送退款通知(支付系统 → 商户)。

接口名称请求 URL请求方式请求类型
退款通知通过统一退款接口提交的参数 notifyUrl 设置POSTapplication/x-www-form-urlencoded

通知参数

字段名变量名必填类型描述
退款订单号refundOrderIdString(30)支付中心生成的退款单号
支付订单号payOrderIdString(30)返回支付系统订单号
商户号mchNoString(30)商户号
应用IDappIdString(24)应用ID
商户退款单号mchRefundNoString(30)商户生成的退款单号
支付金额payAmountint支付金额,单位:分
退款金额refundAmountint退款金额,单位:分
货币代码currencyString(3)三位货币代码,人民币:cny
退款状态stateint0-订单生成;1-退款中;2-退款成功;3-退款失败;4-退款关闭
渠道订单号channelOrderNoString对应渠道的订单号
渠道错误码errCodeString渠道返回错误码
渠道错误描述errMsgString渠道返回错误描述
扩展参数extraParamString(512)商户扩展参数,回调时会原样返回
创建时间createdAtlong订单创建时间,13位时间戳
成功时间successTimelong订单支付成功时间,13位时间戳
通知请求时间reqTimeString(30)通知请求时间,13位时间戳
签名signString(32)签名值,详见签名算法
签名类型signTypeString(32)签名类型

返回结果

业务系统处理后同步返回给支付系统,返回字符串 success 则表示成功,返回非 success 则表示处理失败,支付系统会再次通知业务。

注意:返回的字符串必须是小写,且前后不能有空格和换行符。
开发者中心 › 附录 › 支付方式说明

附录1 · 支付方式说明

统一下单接口中 wayCode 参数取值说明:

编码含义channelExtra 特殊传参
UN_QRU聚合H5收银台需在 channelExtra 传递 scene(ONLINE:线上;OFFLINE:线下)
ALI_PC支付宝PC网站
ALI_QR支付宝主扫
WX_JSAPI微信公众号
WX_LITE微信小程序
WX_MP渠道微信小程序收银台,对接指引详见附录5
WX_DX_MP平台微信小程序收银台,对接指引详见附录5
DY_APP抖音APP对接指引详见附录3
DY_H5抖音H5对接指引详见附录4;需在 channelExtra 传递 type(iOS、Android、Wap)
开发者中心 › 附录 › 错误码说明

附录2 · 错误码说明

通用异常编码

编码含义
0处理成功
9999自定义业务异常

统一下单接口异常编码

编码类型含义
1000传参必填校验参数有误
1000传参是否正确校验商户或商户应用不存在
1000传参是否正确校验商户信息不存在或商户状态不可用
1000传参是否正确校验商户应用不存在或应用状态不可用
1000传参是否正确校验参数 appId 与商户号不匹配
1001签名校验验签失败
1002风控报错风控告警:该商户…
3001校验支付参数不支持的支付方式
3002校验支付参数商户订单【】已存在
1000校验支付参数异步通知地址协议仅支持 http:// 或 https:// !
1000校验支付参数同步通知地址协议仅支持 http:// 或 https:// !
1003校验支付参数获取商户应用信息失败
1003校验支付参数商户应用不支持该支付方式
1003校验支付参数无此支付通道接口
1003校验支付参数接口不支持该支付方式
1003校验支付参数商户应用参数未配置
1003校验支付参数特约商户参数未配置
1003校验支付参数服务商参数未配置
1004风控轮询异常多商户号轮询异常
1000渠道检验异常校验渠道传参是否正确
3003渠道错误渠道侧返回支付状态,ChannelState 返回异常

统一退款接口异常编码

编码类型含义
1000传参必填校验参数有误
1000传参是否正确校验商户或商户应用不存在
1000传参是否正确校验商户信息不存在或商户状态不可用
1000传参是否正确校验商户应用不存在或应用状态不可用
1000传参是否正确校验参数 appId 与商户号不匹配
1001签名校验验签失败
1000校验支付参数mchOrderNo 和 payOrderId 不能同时为空
1000校验支付参数异步通知地址协议仅支持 http:// 或 https:// !
3004订单状态校验支付订单不存在
3005订单状态校验订单已完成退款,无法继续退款
3006退款金额校验订单状态不正确,无法完成退款
3007退款金额校验申请金额超出订单可退款余额,请检查退款金额
3008退款金额校验退款单已完成全部订单退款,本次申请失败
3009订单状态校验商户退款订单号【】状态不能重新发起退款!
1003校验支付参数获取商户应用信息失败
1003校验支付参数当前通道不支持退款

统一查询接口异常编码

编码类型含义
1000传参必填校验参数有误
1000传参是否正确校验商户或商户应用不存在
1000传参是否正确校验商户信息不存在或商户状态不可用
1000传参是否正确校验商户应用不存在或应用状态不可用
1000传参是否正确校验参数 appId 与商户号不匹配
1001签名校验验签失败
1000校验支付参数mchOrderNo 和 payOrderId 不能同时为空
3004订单状态校验订单不存在
开发者中心 › 附录 › 抖音APP前端对接指引

附录3 · 抖音APP支付前端对接指引

任何机型的APP首先都需要进行抖音 OpenSDK 的集成,具体请参考:抖音支付OpenSDK集成文档

一、iOS 调用支付

  1. 将「统一下单」接口中返回的 payData(json字符串)组装为一个 NSDictionary,作为参数拉起抖音支付。
  2. 在 Xcode 中,选择你的工程设置项,选中 "TARGETS"一栏,在 "info"标签栏下的 "Custom iOS Target Properties"里,设置 "Bundle name"或 "Bundle display name"(如果没有则添加)。
  3. 调用 openDypayWithInfo 拉起抖音支付。
Objective-C // 组装调起支付sdk的参数(一般为商户的业务后端组装) NSDictionary *params = @{ @"appid" : @"dy88888888", // 应用ID @"partnerid" : @"1900000109", // 商户号 @"prepayid": @"dy1217758", // 预支付交易会话ID @"package" : @"Sign=DYPay", @"noncestr" : @"5a409aa667ee4ee6", // 随机字符串 @"timestamp" : @"1412000000", // 时间戳 @"sign" : @"your sign" // 签名 }; // 拉起抖音支付 [DypayAPI openDypayWithInfo:params fromViewController:self resultCallback:^(NSDictionary * _Nonnull resultDict) { // resultDict的描述详见SDK回调错误码定义 }];

SDK 结果回调:支付结果将由抖音支付通过 URL 返回。

Objective-C - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options { // 处理SDK回调结果 [DypayAPI processDypayResultWithURL:url callback:^(NSDictionary *resultDict) { }]; } resultDict 包含SDK回调错误码信息,示例如下: { @"resultCode": @"0" } // key: "resultCode",字符串类型。 // value:错误码,字符串类型,需要自己转换为整数。

二、Android 调用支付

  1. 将「统一下单」接口中返回的 payData(json字符串)组装为一个 Map<String, String>,作为参数拉起抖音支付。
  2. 拉起抖音支付,调用 DyPay(activity).pay(payInfoMap, callback) 拉起抖音支付。
Java DyPay dyPay = new DyPay(activity); // 唤端拉起抖音 dyPay.pay(payInfoMap, new IDyPayResultCallback(){ @Override public void onResult(@NonNull Map<String, String> map) { // 处理回调结果 } }, true);

SDK 结果回调,回调的数据为一个 Map<String, String> 集合:

{ resultCode: // 详见SDK结果回调错误码定义 errorMsg: // 失败原因,可能为空串 "" extraParams:// 扩展参数,JSON格式字符串,可能为空串 "" }

三、HarmonyOS 调用支付

  1. 将「统一下单」接口中返回的 payData(json字符串)组装为一个 Map<String, String>,作为参数拉起抖音支付。
  2. 拉起抖音支付。
ArkTS /** * 拉起抖音支付 * @params prepayInfoMap:支付参数 Map * @return resultMap:支付结果 Map */ DypayAPI.openDypay(prepayInfoMap) .then(resultMap => { // 处理支付结果 console.info(`openDypay callback.`); }).catch((error: BusinessError) => { // API调用失败,可以当支付失败处理 console.error(`openDypay failed.`); })

四、SDK 结果回调错误码定义

SDK结果回调resultCode定义: 0: 成功,需调用订单查询接口进行最终的订单确认 1: 用户取消,商户自行处理 2: 其他错误,可能原因:签名错误、未注册 appid、网络错误等异常原因 3: 抖音未返回明确支付结果,建议商户使用服务端接口查询最终支付结果 100:未安装抖音App或者抖音版本过低,需要引导用户升级抖音 103:重复支付被拦截
注意:SDK 结果回调仅供商户参考,准确的订单支付状态请使用服务端接口查询,调用方法请见订单查询接口。
开发者中心 › 附录 › 抖音H5调起支付

附录4 · 抖音H5调起支付

一、调起支付步骤

  1. 商户通过统一下单接口获取到发起支付的必要参数 payData。
  2. 商户在配置了 H5支付域名的网页中跳转 h5_url,调起抖音支付收银台中间页。(若跳转 H5 支付链接的网页域名不是商户配置的 H5 支付域名,将会报错:「鉴权失败,请重试」)
  3. 抖音支付收银台中间页会进行 H5 权限的校验,安全性检查。校验通过后,用户可正常进行支付。

H5支付域名配置参考:抖音H5支付域名配置

二、业务流程图

主要步骤说明:

  1. 【1、2】用户选择抖音支付。
  2. 【3】由商户后台向抖音支付发起下单请求 H5 下单接口。
  3. 【4】返回支付跳转 url(参数名 "h5_url")给商户后台,商户在已配置了 H5 支付域名的页面通过 h5_url 调起抖音支付中间页。
  4. 【5、6、7】跳转到抖音支付中间页。
  5. 【8】抖音支付后台进行中间页相关验证。
  6. 【10、11】跳转到抖音 APP,完成支付。
  7. 【12】如支付成功,商户后台会接收到交易异步通知。
  8. 【13】用户支付完成,返回商户发起支付页(如果未支付完成,会停留在中间页让用户继续选择支付)。
  9. 【14】在商户展示页面,主动发起支付结果的查询。
  10. 【15】商户后台判断是否接收到支付结果通知。
  11. 【16】如未收到支付结果通知,后台调用查询订单接口确认订单状态。
  12. 【17、18】展示最终的订单支付结果给用户。
开发者中心 › 附录 › 微信小程序收银台对接

附录5 · 微信小程序收银台对接指引

一、对接说明

微信小程序收银台目前支持 APP、外部 H5 浏览器、小程序进行拉起,但由于渠道侧的部分限制,在对接之前需明确前端的支付场景,以便更快和技术人员完成整体对接工作。

二、对接指引

1. APP 调用

  1. 将「统一下单」接口中返回的 payData(json字符串)进行 json 转义,获取其中的 appParam 对象。
  2. 进行 appParam 对象中的 key 值判断:
    ① 如果存在 schemeCode,则使用 URL Scheme 微信官方的跳转方式完成收银台的跳转;
    ② 如果存在 gh_id 和 path 参数,则使用微信官方 app 跳转小程序的方法完成对接(需客户 APP 完成微信开放平台认证)。对接指南请参考:微信OpenSDK Android接入指南
  3. 如果 APP 未进行认证,则使用 payData 中的 h5Param 对象中的 schemeCode,使用 URL Scheme 微信官方的跳转方式完成收银台的跳转。

2. 外部 H5 调用

  1. 将「统一下单」接口中返回的 payData(json字符串)进行 json 转义,获取其中的 h5Param 对象。
  2. 解析 h5Param 对象中的 schemeCode,使用 URL Scheme 微信官方的跳转方式完成收银台的跳转。

3. 小程序跳转

  1. 将「统一下单」接口中返回的 payData(json字符串)进行 json 转义,获取其中的 miniParam 对象。
  2. 解析 miniParam 对象:appId(跳转目标小程序的 appid)、path(跳转目标小程序的路径)、extraData(跳转目标小程序时需要带的参数,可能为空,为空则不进行传递)。
开发者中心 › 附录 › 协议支付渠道标识

附录6 · 协议支付渠道标识

代扣签约接口中 channelCode 参数取值说明:

渠道代码渠道描述
01代扣
开发者中心 › 附录 › 代扣款项

附录7 · 代扣款项

代扣签约接口中 withholdType 参数取值说明:

代码说明
01移动电话
02固定电话
03水费
04电费
05煤气费
06社保
07小灵通
08信用卡还款
09烟草
10信用卡中心
11有线和付费电视
12非投资型保险
13政府服务税费
14基金理财
15银行账户充值
16金融机构贷款还款
17网络服务费
18资金归集
19教育费
20物业管理费
21公益捐款
22供暖
23废弃物处理费
24交通出行
25租金
26会员费
27小贷还款
28投资型保险
CS财税库银
RZ商户实时入账
OT其他