@ulodev
2019-11-19T12:09:35.000000Z
字数 13844
阅读 1862
银行
| 参数 | API 参数名 | 详细说明 |
| 商户号 | mch_id | 商户申请基金技术服务后,由服务平台分配的商户收款账号。 |
| API 密钥 | key | 交易过程生成签名的密钥,不会在网络中传播。商户妥善保管该 Key, 切勿在网络中传输,不能在其他客户端中存储,保证 key 不会被泄漏。 |
| 参数 | 示例 | 详细说明 |
| 商户号 | 26101053 | 商户申请代付服务后,由服务平台分配的商户 收款账号。 |
| 金额 | 100 | 单位为分,1元 |
商户提出申请,基金科技为商户开通电子账户功能,支付款项结算至电子账户中,商户根据接口进行款项代付。在首次开通电子商户时,电子账户号和商户号相同。
调用API必须遵循以下规则
| 传输方式 | 为保证交易安全性,采用 HTTPS 传输 |
| 提交方式 | 采用 POST 方法提交 |
| 数据格式 | 提交和返回数据都为 XML 格式,根节点名为 xml |
| 字符编码 | 统一采用 UTF-8 字符编码 |
| 签名算法 | RSA,后续会兼容 SHA1、SHA256、HMAC 等。 |
| 签名要求 | 请求和接收数据均需要校验签名,详细方法请参考 安全规范 -签名算法 |
| 证书要求 | 调用申请退款、撤销订单接口需要商户证书 |
| 判断逻辑 | 先判断协议字段返回,再判断业务返回,最后判断交易状态 |
交易金额
交易金额默认为人民币交易,接口中参数支付金额单位为【分】,参数值不能带小数。对账单中的交易金 额单位为【元】
产品类型
- trade.agent.general 普通代付
trade.agent.matendow 垫资代付
trade.agent.daytime 日间代付
trade.agent.idling 空转代付
货币类型
货币类型的取值列表:CNY:人民币
时间标准
时间标准北京时间,时区为东八区;如果商户的系统时间为非标准北京时间。参数值必须根据商户系统所在时 区先换算成标准北京时间, 例如商户所在地为0时区的伦敦,当地时间为 2014 年 11 月 11 日 0 时 0分0秒,换算成北京时间为 2014 年 11 月 11 日 8 时 0 分 0 秒。
时间戳
标准北京时间,时区为东八区,自 1970 年 1 月 1 日 0 点 0 分 0 秒以来的秒数。注意:部分系统取到的值为毫 秒级,需要转换成秒(10 位数字)。
商户订单号
商户支付的订单号由商户自定义生成,要求商户订单号保持唯一性(建议根据当前系统时间加随机序列来生成订单 号)。重新发起一笔支付要使用原订单号,避免重复支付;已支付过及已调用关单、撤销(请见后文的 API 列表)的订单号不能重新发起支付。
1、签名算法
对于报文的签名和验签处理机制如下:
Ⅰ、 设所有发送或接收到的数据为集合M,将集合M内非空参数值的参数按照参数名ASCII码从小到大排序
(字典序),使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特别注意以下重要规则:
◆ 参数名ASCII码从小到大排序(字典序);
◆ 如果参数的值为空不参与签名;
◆ 参数名区分大小写;
◆ 验证调用返回或主动通知签名时,传送的sign参数不参与签名,将生成的签名与该sign值作校验;
◆ 接口可能增加字段,验证签名时必须支持增加的扩展字段。
Ⅱ、 对待签名字符串stringA使用SHA1WithRSA算法进行签名,并进行Base64编码。
假设传送的参数如下:
mch_id: 26101132out_trade_no: 2018072500000014nonce_str :ibuaiVcKdpRxkhJA
对参数按照 key=value 的格式,并按照参数名 ASCII 字典序排序如下:
stringA="mch_id=26101132&nonce_str=ibuaiVcKdpRxkhJA&out_trade_no=2018072500000014";
SHA1WithRSA签名后:
signstr="n5ppfj9cIoKDars+El46xlpy2t/jnAsg4HMsGWfeQxj7OjKjhcCDp8yhtjuLAegGKCpDcOTkiM5DFDta9Ifvf3m+66mx4hHkd0V4ZLaSJQDtgchzCEuQ9T/ZuZHBhGyn1GPmY4Bc5uD6u3moOVytj7pwZGYvKFgm11R36XkurUAVDKbP7TtyyuvkUeyrgb3HonRVmOcokS2SZSJpB1iQF9JCUqpto4dtCHsERJNFfXMLINYoou9uJwmmaVA6Goc6hCavXHMQGiuw+iynin8hQSmqpPsbELjxz4mjReh6kBpfWwiHbx3hqmDq0M+CQHaJ6uhVLn3O5oA3aNiXSF9EWA=="
2、生成随机数算法
支付 API 接口协议中包含字段 nonce_str,主要保证签名不可预测。我们推荐生成随机数算法如下:调用 随机数函数生成,将得到的值转换为字符串。
3、以xml格式传参
<xml><mch_id>26101132</mch_id><out_trade_no>2018072500000014<out_trade_no><nonce_str>ibuaiVcKdpRxkhJA</nonce_str><sign>n5ppfj9cIoKDars+El46xlpy2t/jnAsg4HMsGWfeQxj7OjKjhcCDp8yhtjuLAegGKCpDcOTkiM5DFDta9Ifvf3m+66mx4hHkd0V4ZLaSJQDtgchzCEuQ9T/ZuZHBhGyn1GPmY4Bc5uD6u3moOVytj7pwZGYvKFgm11R36XkurUAVDKbP7TtyyuvkUeyrgb3HonRVmOcokS2SZSJpB1iQF9JCUqpto4dtCHsERJNFfXMLINYoou9uJwmmaVA6Goc6hCavXHMQGiuw+iynin8hQSmqpPsbELjxz4mjReh6kBpfWwiHbx3hqmDq0M+CQHaJ6uhVLn3O5oA3aNiXSF9EWA==</sign><xml>
采用标准XML协议,所有参数只存在一级节点中,不采用多级节点嵌套。
协议级错误返回:
<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[404 NotFound]]></return_msg></xml>
正确返回数据:
<xml><mch_id><![CDATA[26101132]]></mch_id><result_code><![CDATA[SUCCESS]]></result_code><return_code><![CDATA[SUCCESS]]></return_code><sign><![CDATA[hl3D+es9rfBvTdRoc+Tyn8fWn9nScAIx8CDhL46RN/tcktmHhz8RZrq8dusWsiFYxKuzN8t13GuIVJTP9LzNLyGmNGDagnXtQhp6gWacQN1f8di16kZrn/JU89FCAsmGW3d62rEKTsxBMW+08iQ8iUpYZffpo/mqRdAkIHUmp44eBO8EQio1uADtIdQPW+guoxvZx8x1cl4AjDGEqc9qYw1+k83Kmi/HgmrNnvy7ASVAMuapu4/oZbRFpVAsOI6lbVTF2LEK7WWhUxMMd0hc3AfgyXjC/7sOD/dMlRc6X3IoO1N0rdwcn8o+CfSRwbpOijppYvhTUWiWKRm18PNG7Q==]]></sign><trade_state><![CDATA[PROCESSING]]></trade_state><trade_state_desc><![CDATA[处理中,请耐心等待划账]]></trade_state_desc><transaction_id><![CDATA[2610113220180731150000368]]></transaction_id></xml>
业务级错误返回:
<xml><err_code><![CDATA[OUT_TRADE_NO_USED]]></err_code><err_code_des><![CDATA[商户订单号重复]]></err_code_des><result_code><![CDATA[FAIL]]></result_code><return_code><![CDATA[SUCCESS]]></return_code></xml>
测试: http://api.agent.test.szulodev.com/pay/agentpay/single
生产: 找商务获取
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 商户号 | mch_id | String(32) | 是 | 商户号 |
| 随机字符串 | nonce_str | String(32) | 是 | 随机字符串,不长于 32 位 |
| 产品类型 | trade_type | String(32) | 是 |
trade.agent.general 普通代付 trade.agent.matendow 垫资代付 trade.agent.daytime 日间代付 trade.agent.idling 空转代付 |
| 还款周期 | repay_cycle | Int | 二选 一 | 取值为 1 :(T1) ,2 : (T2) , 不传默认为1 |
| 还款日期 | repay_date | String(8) | 垫资后,需要还款的具体日期。格式:yyyyMMdd | |
| 商户订单号 | out_trade_no | String(32) | 是 | 商户系统内部的订单号,32 个字符内、可包含字母,其他 说明见商户订单号 |
| 代付金额 | total_fee | Int | 是 | 订单总金额,单位为分,只能为整数 单笔最大不超过 5 万元 单笔最小不低于 1 元 |
| 代付备注 | body | String(32) | 是 | 代付简要描述 |
| 入账账户类型 | act_type | String(2) | 是 | 0:对私,1:对公, |
| 币种 | fee_type | String(32) | 否 | 取值(CNY|HKD|USD),不填默认为CNY |
| 签名方式 | sign_type | String(11) | 否 | 默认MD5签名,使用RSA签名时,传值为:RSA |
| 通知地址 | notify_url | String(32) | 是 | 后台通知地址(需设置为外网能访问 http https均可) |
| 签名 | sign | String(32) | 是 | 签名,详见签名生成算法 |
| 入账账户户名 | recv_name | String(32) | 是 | 收款银行账户姓名 |
| 入账账户账号 | recv_card_no | String(32) | 是 | 收款银行账户账号 |
| 账户联行号 | bank_union_no | String(32) | 否 | 对公账户必须有联行号,对私账户不需要 收款银行的联行号,可在网上查询: http://www.lianhanghao.com |
| 交易时间 | trade_date | String(14) | 是 | 格式:yyyyMMddHHmmss |
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 返回状态码 | return_code | String(16) | 是 | SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断 |
| 返回信息 | return_msg | String(128) | 否 | 返回信息,如非空,为错误原因签名失败 参数格式校验错误 |
| 当 return_code 为 SUCCESS 的时候,还会包括以下字段: | ||||
| 商户号 | mch_id | String(32) | 是 | 调用接口提交的商户号 |
| 签名 | sign | String(32) | 是 | 返回的签名,详见签名生成算法 |
| 业务结果 | result_code | String(16) | 是 | SUCCESS/FAIL |
| 错误代码 | err_code | String(32) | 否 | 详细参见错误列表 |
| 错误代码描述 | err_code_des | String(128) | 否 | 错误返回的信息描述 |
| 当 return_code 和result_code 都为 SUCCESS 的时,还会包括以下字段: | ||||
| 交易状态 | trade_state | String(32) | 是 |
NOTPAY—正在调拨资金,请耐心等待 PROCESSING—处理中,请耐心等待划账 SUCCESS—出款成功,请检查款项是否到账 REVOKED—撤销代付请求,款项被退回 PAYERROR—代付系统错误,款项被退回 CLOSE-代付系统异常,订单已关闭 |
| 交易状态描述 | trade_state_desc | String(64) | 是 | 交易状态简要描述,提示代付的下一步步骤 |
| 平台代付单号 | transaction_id | String(32) | 是 | 代付平台系统生成的唯一单号,可用于代付查询 |
| 上游返回码 | chan_resp_code | String(32) | 是 | 上游返回码 |
| 上游返回信息 | chan_resp_msg | String(32) | 是 | 上游返回信息 |
注意:如果当前交易返回的支付状态是明确的错误原因造成的支付失败(支付确认失败),请重新下单支 付;如果当前交易返回的支付状态是不明错误(支付结果未知),请调用查询订单接口确认状态。
| 名称 | 描述 | 原因 | 解决方案 |
| NOAUTH | 商户无此接口权限 | 商户未开通此接口权限 | 请商户前往申请此接口权限 |
| BALANCE_NOT_ENOUGH | 余额不足 | 转出账户余额不足 | 转出账户余额不足 |
| CASHACCT_NOT_EXIST | 未开通电子账户服 务 | 未开通电子账户服务 | 未开通电子账户服务 |
| CASHTRANS_PROCSFEE_I NVALID | 金额错误 | 单笔转出金额不足以支 付手续费 | 单笔转出金额不足以支付手续费 |
| UNIONNO_INVALID | 银行联行号不正确 | 银行联行号不正确 | 银行联行号不正确 |
| SYSTEMERROR | 系统错误 | 系统超时 | 系统异常,请用相同参数重新调用 |
| APPID_NOT_EXIST | APPID 不存在 | 参数中缺少 APPID | 请检查 APPID 是否正确 |
| MCHID_NOT_EXIST | MCHID 不存在 | 参数中缺少 MCHID | 请检查 MCHID 是否正确 |
| LACK_PARAMS | 缺少参数 | 缺少必要的请求参数 | 请检查参数是否齐全 |
| OUT_TRADE_NO_USED | 商户订单号重复 | 同一笔交易不能多次提 交 | 请核实商户订单号是否重复提交 |
| SIGNERROR | 签名错误 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算 法要求 |
| XML_FORMAT_ERROR | XML 格式错误 | XML 格式错误 | 请检查 XML 参数格式是否正确 |
| REQUIRE_POST_METHOD | 请使用 post 方法 | 未使用 post 传递参数 | 请检查请求参数是否通过 post 方法提交 |
| POST_DATA_EMPTY | post 数据为空 | post 数据不能为空 | 请检查 post 数据是否为空 |
| NOT_UTF8 | 编码格式错误 | 未使用指定编码格式 | 请使用 NOT_UTF8 编码格式 |
测试: http://api.agent.test.szulodev.com/pay/agentpay/query
生产: 找商务获取
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 商户号 | mch_id | String(32) | 是 | 商户号 |
| 随机字符串 | nonce_str | String(32) | 是 | 随机字符串,不长于 32 位 |
| 商户订单号 | out_trade_no | String(32) | 二 选 一 |
商户系统内部的订单号,32 个字符内、可包含字母,其他 说明见商户订单号 |
| 平台代付单号 | transaction_id | String(32) | 基金服务平台生成的内部单号 | |
| 签名方式 | sign_type | String(11) | 否 | 默认MD5签名,使用RSA签名时,传值为:RSA |
| 签名 | sign | String(32) | 是 | 签名,详见签名生成算法 |
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 返回状态码 | return_code | String(16) | 是 | SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断 |
| 返回信息 | return_msg | String(128) | 否 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 |
| 当 return_code 为 SUCCESS 的时候,还会包括以下字段: | ||||
| 商户号 | mch_id | String(32) | 是 | 调用接口提交的商户号 |
| 随机字符串 | nonce_str | String(32) | 是 | 返回的随机字符串 |
| 签名 | sign | String(32) | 是 | 返回的签名,详见签名生成算法 |
| 业务结果 | result_code | String(16) | 是 | SUCCESS/FAIL |
| 错误代码 | err_code | String(32) | 否 | 详细参见错误列表 |
| 错误代码描述 | err_code_des | String(128) | 否 | 错误返回的信息描述 |
| 当 return_code 和 result_code 都为 SUCCESS 的时,还会包括以下字段: | ||||
| 交易状态 | trade_state | String(32) | 是 |
NOTPAY—正在调拨资金,请耐心等待 PROCESSING—处理中,请耐心等待划账 SUCCESS—出款成功,请检查款项是否到账 REVOKED—撤销代付请求,款项被退回 PAYERROR—代付系统错误,款项被退回 CLOSE—代付系统异常,订单已关闭 |
| 交易状态描述 | trade_state_desc | String(64) | 是 | 交易状态简要描述,提示代付的下一步步骤 |
| 平台代付单号 | transaction_id | String(32) | 是 | 代付平台系统生成的唯一单号,可用于代付查询 |
| 商户订单号 | out_trade_no | String(32) | 是 | 商户系统内部的订单号,32 个字符内、可包含字母,其 他说明见商户订单号 |
| 代付金额 | total_fee | Int | 是 |
订单总金额,单位为分,只能为整数 单笔最大不超过 10 万元 单笔最小不低于 1 元 |
| 代付备注 | body | String(32) | 是 | 代付简要描述 |
| 入账账户类型 | pay_type | String(2) | 是 | 0:对私,1:对公 |
| 入账账户户名 | pay_name | String(32) | 是 | 收款银行账户姓名 |
| 入账账户账号 | pay_card_no | String(32) | 是 | 收款银行账户账号 |
| 账户联行号 | bank_union_no | String(32) | 否 | 对公账户必须有联行号,对私账户不需要 收款银行的联行号,可在网上查询 |
| 上游返回码 | chan_resp_code | String(32) | 是 | 上游返回码 |
| 上游返回信息 | chan_resp_msg | String(32) | 是 | 上游返回信息 |
| 名称 | 描述 | 原因 | 解决方案 |
| NOAUTH | 商户无此接口权限 | 商户未开通此接口权限 | 请商户前往申请此接口权限 |
| CASHTRANS_NOE_EXISTS | 单号错误 | 此代付订单号不存在 | 此代付订单号不存在 |
| CASHACCT_NOT_EXIST | 未开通电子账户服 务 | 未开通电子账户服务 | 未开通电子账户服务 |
| SYSTEMERROR | 系统错误 | 系统超时 | 系统异常,请用相同参数重新调用 |
| APPID_NOT_EXIST | APPID 不存在 | 参数中缺少 APPID | 请检查 APPID 是否正确 |
| MCHID_NOT_EXIST | MCHID 不存在 | 参数中缺少 MCHID | 请检查 MCHID 是否正确 |
| LACK_PARAMS | 缺少参数 | 缺少必要的请求参数 | 请检查参数是否齐全 |
| OUT_TRADE_NO_USED | 商户订单号重复 | 同一笔交易不能多次提 交 | 请核实商户订单号是否重复提交 |
| SIGNERROR | 签名错误 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算 法要求 |
| XML_FORMAT_ERROR | XML 格式错误 | XML 格式错误 | 请检查 XML 参数格式是否正确 |
| REQUIRE_POST_METHOD | 请使用 post 方法 | 未使用 post 传递参数 | 请检查请求参数是否通过 post 方法提交 |
| POST_DATA_EMPTY | post 数据为空 | post 数据不能为空 | 请检查 post 数据是否为空 |
| NOT_UTF8 | 编码格式错误 | 未使用指定编码格式 | 请使用 NOT_UTF8 编码格式 |
测试: http://api.agent.test.szulodev.com/pay/agentpay/repaymentquery
生产: 找商务获取
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 商户号 | mch_id | String(32) | 是 | 商户号 |
| 随机字符串 | nonce_str | String(32) | 是 | 随机字符串,不长于 32 位 |
| 交易日期 | recon_day | String(32) | 二 选 一 |
交易日期,例如(2018-7-17) |
| 结算日期 | cash_day | String(32) | 结算日期,例如(2018-7-17) | |
| 签名方式 | sign_type | String(11) | 否 | 默认MD5签名,使用RSA签名时,传值为:RSA |
| 签名 | sign | String(32) | 是 | 签名,详见签名生成算法 |
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 返回状态码 | return_code | String(16) | 是 | SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断 |
| 返回信息 | return_msg | String(128) | 否 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 |
| 当 return_code 为 SUCCESS 的时候,还会包括以下字段: | ||||
| 商户号 | mch_id | String(32) | 是 | 调用接口提交的商户号 |
| 签名 | sign | String(32) | 是 | 返回的签名,详见签名生成算法 |
| 业务结果 | result_code | String(16) | 是 | SUCCESS/FAIL |
| 错误代码 | err_code | String(32) | 否 | 详细参见错误列表 |
| 错误代码描述 | err_code_des | String(128) | 否 | 错误返回的信息描述 |
| 当 return_code 和 result_code 都为 SUCCESS的时,还会包括以下字段(&n表示从0开始开始编号): | ||||
| 交易日期 | recon_day_&n | String(32) | 是 | 交易日期 |
| 结算日期 | cash_day_&n | String(32) | 是 | 结算日期 |
| 产品类型 | trade_type_&n | String(32) | 是 |
trade.agent.general 普通代付 trade.agent.matendow 垫资代付 trade.agent.daytime 日间代付 trade.agent.idling 空转代付 |
| 对账编号 | recon_no_&n | String(32) | 是 | 对账编号 |
| 交易金额 | total_fee_&n | String(32) | 是 | 交易金额 |
| 交易笔数 | total_qua_&n | String(32) | 是 | 交易笔数 |
| 手续费金额 | poundage2_&n | String(32) | 是 | 手续费金额 |
| 还款状态 | trepay_state_&n | String(32) | 是 | 还款状态 0:未还款 1:处理中 2:成功 3:失败 |
| 名称 | 描述 | 原因 | 解决方案 |
| NOAUTH | 商户无此接口权限 | 商户未开通此接口权限 | 请商户前往申请此接口权限 |
| SYSTEMERROR | 系统错误 | 系统超时 | 系统异常,请用相同参数重新调用 |
| REPAYMENT_PARAMS_ERROR | 还款信息查询参数错误 | 缺少必传参数 | 检查必传参数是否传入 |
| REPAYMENT_NOT_EXIST | 还款信息不存在 | 根据当前条件查询不到还款信息 | 确认当前传入参数是否正确 |
| MCHID_NOT_EXIST | MCHID 不存在 | 参数中缺少 MCHID | 请检查 MCHID 是否正确 |
| LACK_PARAMS | 缺少参数 | 缺少必要的请求参数 | 请检查参数是否齐全 |
| SIGNERROR | 签名错误 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算 法要求 |
| XML_FORMAT_ERROR | XML 格式错误 | XML 格式错误 | 请检查 XML 参数格式是否正确 |
| REQUIRE_POST_METHOD | 请使用 post 方法 | 未使用 post 传递参数 | 请检查请求参数是否通过 post 方法提交 |
| POST_DATA_EMPTY | post 数据为空 | post 数据不能为空 | 请检查 post 数据是否为空 |
| NOT_UTF8 | 编码格式错误 | 未使用指定编码格式 | 请使用 NOT_UTF8 编码格式 |
测试: http://api.agent.test.szulodev.com/pay/downloadbill
生产: 找商务获取
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 交易日期 | bill_date | String(32) | 是 | 交易日期,例如(2018-05-22) |
| 商户号 | mch_id | String(32) | 是 | 调用接口提交的商户号 |
| 随机字符串 | nonce_str | String(32) | 是 | 随机字符串,不长于 32 位 |
| 签名方式 | sign_type | String(11) | 否 | 默认MD5签名,使用RSA签名时,传值为:RSA |
| 签名 | sign | String(32) | 是 | 详见签名生成算法 |
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 返回状态码 | return_code | String(16) | 是 | SUCCESS/FAIL 此字段是通信标识 |
| 返回信息 | return_msg | String(128) | 否 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 |
成功时,数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款结果一致,具体字段说明可查阅相应接口。
第一行为表头:
付款时间,清算日期,商户号,订单号,商户单号,渠道单号,业务类型,代付状态,账户类型,收款户名,收款卡号,代付金额,付款说明,商户数据包
从第二行起,为数据记录,各参数以逗号分隔,参数前增加`符号,为标准键盘 1 左边键的字符,字段顺序与表头一致。
倒数第二行为订单统计标题,最后一行为统计数据总代付笔数,总代付金额
示例如下:
付款时间,清算日期,商户号,订单号,商户单号,渠道单号,业务类型,代付状态,账户类型,收款户名,收款卡号,代付金额,付款说明,商户数据包
付款时间,清算日期,商户号,订单号,商户单号,渠道单号,业务类型,代付状态,账户类型,收款户名,收款卡号,代付金额,付款说明,商户数据包`2018-11-01 10:41:19,`2018-11-01,`26101053,`2610105320181101100017662,`2018110100002,`100005430072,`trade.agent.general,`SUCCESS,`对公,`银联代付收单暂记户01,`424900000000200031,`1.0,`测试,`,`总代付笔数,总代付金额`1,`1.0
| 名称 | 描述 | 原因 | 解决方案 |
| SYSTEMERROR | 系统错误 | 后台系统返回错误 | 系统异常,请再调用发起查询 |
支付完成后,基金代付平台会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。对后台通知交互时,如果基金代付平台收到商户的应答不是成功或超时,基金代付平台认为通知失败,基金代付平台会通过一定的策略定期重新发起通知,尽可能提高通知的成功率, 但 不保证通知最终能成功。(通知频率为0、1、2、4、5分钟)
注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。
推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如 果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数 据锁进行幵发控制,以避免函数重入造成的数据混乱。
特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,防止数据泄漏导致出现“假通知”,造成资 金损失。
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 返回状态码 | return_code | String(16) | 是 | SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断 |
| 返回信息 | return_msg | String(128) | 否 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 |
| 当 return_code 为 SUCCESS 的时候,还会包括以下字段: | ||||
| 商户号 | mch_id | String(32) | 是 | 调用接口提交的商户号 |
| 随机字符串 | nonce_str | String(32) | 是 | 返回的随机字符串 |
| 签名 | sign | String(32) | 是 | 返回的签名,详见签名生成算法 |
| 业务结果 | result_code | String(16) | 是 | SUCCESS/FAIL |
| 错误代码 | err_code | String(32) | 否 | 详细参见错误列表 |
| 错误代码描述 | err_code_des | String(128) | 否 | 错误返回的信息描述 |
| 当 return_code 和 result_code 都为 SUCCESS 的时,还会包括以下字段: | ||||
| 交易状态 | trade_state | String(32) | 是 |
NOTPAY—正在调拨资金,请耐心等待 PROCESSING—处理中,请耐心等待划账 SUCCESS—出款成功,请检查款项是否到账 REVOKED—撤销代付请求,款项被退回 PAYERROR—代付系统错误,款项被退回 CLOSE—代付系统异常,订单已关闭 |
| 交易状态描述 | trade_state_desc | String(64) | 是 | 交易状态简要描述,提示代付的下一步步骤 |
| 平台代付单号 | transaction_id | String(32) | 是 | 代付平台系统生成的唯一单号,可用于代付查询 |
| 商户订单号 | out_trade_no | String(32) | 是 | 商户系统内部的订单号,32 个字符内、可包含字母,其 他说明见商户订单号 |
| 代付金额 | total_fee | Int | 是 |
订单总金额,单位为分,只能为整数 单笔最大不超过 10 万元 单笔最小不低于 1 元 |
| 代付备注 | body | String(32) | 是 | 代付简要描述 |
| 入账账户类型 | act_type | String(2) | 是 | 0:对私,1:对公 |
| 入账账户户名 | recv_name | String(32) | 是 | 收款银行账户姓名 |
| 入账账户账号 | recv_card_no | String(32) | 是 | 收款银行账户账号 |
| 账户联行号 | bank_union_no | String(32) | 否 | 对公账户必须有联行号,对私账户不需要 收款银行的联行号,可在网上查询 |
商户处理后同步返回给服务平台,商户做业务处理后,需要以字符串的形式反馈处理结果,内容如下:
| 返回结果 | 结果说明 |
| success | 处理成功,服务平台系统收到此结果后不再进行后续通知 |
| fail 或其它字符 | 处理不成功,服务平台系统收到此结果或者没有收到任何结果,系统通过补单机制再次通知 |
示例如下:
success
商户可以通过该接口主动查当前系统余额,判断是否有可转金额,完成下一步的业务逻辑。
测试: http://api.agent.test.szulodev.com/pay/agentpay/account
生产: 找商务获取
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 商户号 | mch_id | String(32) | 是 | 商户号 |
| 产品类型 | trade_type | String(32) | 是 |
trade.agent.general 普通代付 trade.agent.matendow 垫资代付 trade.agent.daytime 日间代付 trade.agent.idling 空转代付 |
| 随机字符串 | nonce_str | String(32) | 是 | 随机字符串,不长于 32 位 |
| 签名 | sign | String(32) | 是 | 签名,详见签名生成算法 |
| 字段名 | 变量名 | 类型 | 必填 | 描述 |
| 返回状态码 | return_code | String(16) | 是 | SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看result_code 来判断 |
| 返回信息 | return_msg | String(128) | 否 | 返回信息,如非空,为错误原因 签名失败 参数格式校验错误 |
| 当 return_code 为 SUCCESS 的时候,还会包括以下字段: | ||||
| 商户号 | mch_id | String(32) | 是 | 调用接口提交的商户号 |
| 随机字符串 | nonce_str | String(32) | 是 | 微信返回的随机字符串 |
| 签名 | sign | String(32) | 是 | 微信返回的签名,详见签名生成算法 |
| 业务结果 | result_code | String(16) | 是 | SUCCESS/FAIL |
| 错误代码 | err_code | String(32) | 否 | 详细参见错误列表 |
| 错误代码描述 | err_code_des | String(128) | 否 | 错误返回的信息描述 |
| 当 return_code 和 result_code 都为 SUCCESS 的时,还会包括以下字段: | ||||
| 当前可用余额 | current_amount | Number(20) | 是 | 当前可用余额,单位为分 |
| 当前冻结余额 | frozen_amount | Number(20) | 是 | 当前冻结余额,单位为分 |
| 名称 | 描述 | 原因 | 解决方案 |
| NOAUTH | 商户无此接口权限 | 商户未开通此接口权限 | 请商户前往申请此接口权限 |
| CASHACCT_NOT_EXIST | 未开通电子账户服 务 | 未开通电子账户服务 | 未开通电子账户服务 |
| SYSTEMERROR | 系统错误 | 系统超时 | 系统异常,请用相同参数重新调用 |
| MCHID_NOT_EXIST | MCHID 不存在 | 参数中缺少 MCHID | 请检查 MCHID 是否正确 |
| LACK_PARAMS | 缺少参数 | 缺少必要的请求参数 | 请检查参数是否齐全 |
| OUT_TRADE_NO_USED | 商户订单号重复 | 同一笔交易不能多次提 交 | 请核实商户订单号是否重复提交 |
| SIGNERROR | 签名错误 | 参数签名结果不正确 | 请检查签名参数和方法是否都符合签名算 法要求 |
| XML_FORMAT_ERROR | XML 格式错误 | XML 格式错误 | 请检查 XML 参数格式是否正确 |
| REQUIRE_POST_METHOD | 请使用 post 方法 | 未使用 post 传递参数 | 请检查请求参数是否通过 post 方法提交 |
| POST_DATA_EMPTY | post 数据为空 | post 数据不能为空 | 请检查 post 数据是否为空 |
| NOT_UTF8 | 编码格式错误 | 未使用指定编码格式 | 请使用 NOT_UTF8 编码格式 |