[关闭]
@ulodev 2018-11-16T03:27:23.000000Z 字数 36278 阅读 2856

云支支付接口文档

云支

1. 引言

1.1. 阅读对象

本文阅读对象:商户系统(在线购物平台、人工收银系统、自动化智能收银系统或其他)集成微信、支付宝、QQ钱包支付涉及的技术架构师,研发工程师,测试工程师,系统运维工程师。

1.2. 业务术语

1、刷卡支付
     刷卡支付是用户展示微信钱包内的“刷卡条码/二维码”给商户系统扫描后直接完成支付的模式。主要应用线下面对面收银的场景。
2、扫码支付
     扫码支付是商户系统生成支付二维码,用户再用微信、支付宝、QQ钱包“扫一扫”完成支付的模式。该模式适用于 PC 网站支付、实体店单品或订单支付、媒体广告支付等场景。
3、公众号支付
     公众号支付是用户在微信中打开商户的H5页面,商户在 H5页面通过调用微信支付提供的 JSAPI 接口调起微信支付模块完成支付。应用场景有:
     ◆用户在微信公众账号内进入商家公众号,打开某个主页面,完成支付
     ◆用户的好友在朋友圈、聊天窗口等分享商家页面链接,用户点击链接打开商家页面,完成支付
     ◆将商户页面转换成二维码,用户扫描二维码后在微信浏览器中打开页面后完成支付
4、APP 支付
     APP支付又称移动端支付,是商户通过在移动端应用APP中集成开放SDK调起微信支付模块完成支付的模式。
5、H5 支付
     H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户端进行支付。主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。
6、支付宝支付
     包含支付宝扫码、刷卡等支付。
7、QQ 钱包支付
     包含QQ钱包扫码、刷卡等支付。

1.3. 支付账户

商户在云支服务平台(如申请扫码支付、公众号支付等)按照相应提示,申请相应支付模式。工作人员审核资料无误后开通相应的支付模式,如:微信支付、支付宝支付、QQ钱包支付等。申请审核通过后,商户在申请资料填写的邮箱中收取到由云支服务平台发送的邮件,此邮件包含开发时需要使用的支付账户信息

1.3.1. 服务账户参数说明

参数 API 参数名 详细说明
商户号 mch_id 商户申请云支服务后,由服务平台分配的商户收款账号
API 密钥 key 交易过程生成签名的密钥,不会在网络中传播。商户妥善保管该Key,切勿在网络中传输,不能在其他客户端中存储,保证 key 不会被泄

1.3.2. 测试商户账户

参数 API 参数名 详细说明
商户号 50100011 商户申请云支服务后,由服务平台分配的商 户收款账号。
API 密钥 8dd884b52409ad0a3d11013075bf3072 交易过程生成签名的密钥,不会在网络中传 播。
金额 100 单位为分,1 元

2. 接口规则

2.1. 协议规则

调用API 必须遵循以下规则:

传输方式 为保证交易安全性,采用HTTPS传输
提交方式 采用POST方法提交
数据格式 提交和返回数据都为XML格式,根节点名为xml
字符编码 统一采用UTF-8字符编码
签名算法 MD5,后续会兼容SHA1、SHA256、HMAC等。
签名要求 请求和接收数据均需要校验签名,详细方法请参考[安全规范-签名算法]
证书要求 调用申请退款、撤销订单接口需要商户证书
判断逻辑为保证交易安全性,采用HTTPS传输

2.2. 参数规定

2.3. 安全规范

  1. appid wxd930ea5d5a258f4f
  2. mch_id 10000100
  3. device_info 1000 body

第一步:对参数按照 key=value 的格式,并按照参数名ASCII 字典序排序如下:

  1. stringA="appid=wxd930ea5d5a258f4f&body=test&device_info=1000&mch_id=10000100
  2. &nonce_str=ibuaiVcKdpRxkhJA";

第二步:拼接API 密钥:

  1. stringSignTemp="stringA&key=192006250b4c09247ec02edce69f6a2d"
  2. sign=MD5(stringSignTemp).toUpperCase()="9A0A8659F005D6984697E2CA0A9CF3B7"

最终得到最终发送的数据:

  1. <xml>
  2. <appid>wxd930ea5d5a258f4f</appid>
  3. <mch_id>10000100</mch_id>
  4. <device_info>1000<device_info>
  5. <body>test</body>
  6. <nonce_str>ibuaiVcKdpRxkhJA</nonce_str>
  7. <sign>9A0A8659F005D6984697E2CA0A9CF3B7</sign>
  8. <xml>

2.4. 数据格式

采用标准XML协议,所有参数只存在一级节点中,不采用多级节点嵌套。
协议级错误返回:

  1. <xml>
  2. <return_code><![CDATA[FAIL]]></return_code>
  3. <return_msg><![CDATA[404 Not Found]]></return_msg>
  4. </xml>

正确返回数据:

  1. <xml>
  2. <bank_type><![CDATA[SPDB_CREDIT]]></bank_type>
  3. <fee_type><![CDATA[CNY]]></fee_type>
  4. <is_subscribe><![CDATA[Y]]></is_subscribe>
  5. <mch_id><![CDATA[15121009]]></mch_id>
  6. <openid><![CDATA[ozaUDwqSo51HvC0lw9CrL20KXlsQ]]></openid>
  7. <out_trade_no><![CDATA[20150303398]]></out_trade_no>
  8. <result_code><![CDATA[SUCCESS]]></result_code>
  9. <return_code><![CDATA[SUCCESS]]></return_code>
  10. <third_trans_id><![CDATA[1004970044201510081126012906]]></third_trans_id>
  11. <time_end><![CDATA[20151008112037]]></time_end>
  12. <total_fee><![CDATA[1]]></total_fee>
  13. <trade_state><![CDATA[SUCCESS]]></trade_state>
  14. <trade_type><![CDATA[trade.weixin.micropay]]></trade_type>
  15. <transaction_id><![CDATA[1512100920150925000000010]]></transaction_id>
  16. </xml>

业务级错误返回:

  1. <xml>
  2. <err_code><![CDATA[AUTHCODEEXPIRE]]></err_code>
  3. <err_code_des><![CDATA[请扫描微信支付被扫条码/二维码]]></err_code_des>
  4. <result_code><![CDATA[FAIL]]></result_code>
  5. <return_code><![CDATA[SUCCESS]]></return_code>
  6. </xml>

3. API 列表

3.1. 统一支付接口

3.1.1. 应用场景

除被扫支付场景以外,商户系统先调用该接口在微信支付服务后台生成预支付交易单,返回正确的预支付交易回 话标识后再按扫码、JSAPI、APP等不同场景生成交易串调起支付。

3.1.2. 接口地址

https://api.yunzhikj.cn/pay/unifiedorder

3.1.3. 扫码支付

微信扫码、支付宝扫码、QQ钱扫码包、银联扫码都是一样的输入参数

3.1.3.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 商品详情
附加数据 attach String(127) 附加数据
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内,可包含字母
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
货币类型 fee_type String(16) 默认人民币:CNY,其他值列表详见 货币类型
终端 IP spbill_create_ip String(16) 调用微信支付API的机器IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
通知地址 notify_url String(256) 接收支付结果异步通知回调地址,PC 网站必填,POS 机器扫码支付填写空字符串即可。示例:http://www.baidu.com/
交易类型 trade_type String(32) 取值:trade.weixin.native,详细说明见 2.2 参数规定
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_noString(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法
3.1.3.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因(签名失败、参数格式校验错误等)
return_codeSUCCESS的时候,还会包括以下字段:
业务结果 result_code String(16) SUCCESS/FAIL
返回状态码 return_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 微信返回的签名,详见签名 签名生成算法
交易类型 trade_type String(32) 取值:trade.weixin.native,详细说明见参数规定
二维码地址 code_url String(64) trade_type为NATIVE时有返回,用于生成二维码,展示给用户进行扫码支付
二维码图片 code_img_url String(64) trade_type为NATIVE时有返回,二维码图片,可直接扫码支付
3.1.3.3. 支付状态检测

前端需要知道支付结果,做页面支付流程引导。使用该功能之后,能检测到用户的支付状态,从而引导页面跳转,但是该不跳转不会携带支付成功相关的信息,商户需要自行调用查询订单接口进行交易结果查询判断。

1.png-42.4kB 2.png-45.6kB
等待用户支付 支付成功

3.1.4. 公众号支付

微信公众号支付、QQ钱公众号支付是一样的输入参数

3.1.4.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 详见如下说明
附加数据 attach String(127) 详见如下说明
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
货币类型 fee_type String(16) 默认人民币:CNY,其他值列表详见 货币类型
终端 IP spbill_create_ip String(16) 调用微信支付API的机器IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
通知地址 notify_url String(256) 接收支付结果异步通知回调地址,PC 网站必填,POS 机器扫码支付填写空字符串即可。示例:http://www.baidu.com/
返回地址 return_url String(256) 收页面回调的地址,该地址不带支付结果参数,最终支付结果需要调用查询接口进行获取
交易类型 trade_type String(32) 取值:trade.weixin.jspay,详细说明见参数规定
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法
3.1.4.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因:签名失败、参数格式校验错误
return_codeSUCCESS的时候,还会包括以下字段:
返回状态码 return_code String(16) SUCCESS/FAIL
业务结果 result_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 微信返回的签名,详见签名 签名生成算法
预支付 URL prepay_url String(255) 在微信内访问此 URL 地址,进行付款
预支付标识 prepay_id String(64) 预支付会话标识,用于后续接口调用中使用,该值有效期为2小时
交易类型 trade_type String(32) 取值:trade.weixin.jspay,详细说明见参数规定

3.1.5. APP 支付

3.1.5.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 详见如下说明
附加数据 attach String(127) 详见如下说明
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
货币类型 fee_type String(16) 默认人民币:CNY,其他值列表详见 货币类型
终端 IP spbill_create_ip String(16) 调用微信支付API的机器IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
通知地址 notify_url String(256) 接收支付结果异步通知回调地址,PC 网站必填,POS 机器扫码支付填写空字符串即可。示例:http://www.baidu.com/
页面回调地址 return_url String(256) 收页面回调的地址,该地址不带支付结果参数,最终支付结果需要调用查询接口进行获取
交易类型 trade_type String(32) 取值:trade.weixin.apppay,详见 2.2 参数规定
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法
3.1.5.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因(签名失败、参数格式校验错误等)
return_codeSUCCESS的时候,还会包括以下字段:
返回状态码 return_code String(16) SUCCESS/FAIL
业务结果 result_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 微信返回的签名,详见 签名生成算法
交易类型 trade_type String(32) 取值:trade.weixin.apppay,详细说明见参数规定
预支付标识 prepay_id String(64) 预支付会话标识,用于后续接口调用中使用,该值有效期 为 2 小时
APP 签名包 package_json String(255) 该参数为 JSON 格式,参数配置微信 SDK 拉起微信支付
3.1.5.3. APP 调起微信

参考微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5
统一支付接口 packge_json 返回的字段说明,用于传递给微信 SDK:

字段名 变量名 类型 必填 描述
应用 ID appId String(32) 微信开放平台审核通过的应用 APPID
商户号 partnerId String(32) 微信支付分配的商户号
预支付交易会话 ID prepayId String(32) 微信返回的支付交易会话 ID
扩展字段 package String(128) 暂填写固定值 Sign=WXPay
随机字符串 nonceStr String(32) 随机字符串
时间戳 timeStamp String(10) 时间戳
签名 sign String(32) 签名

3.1.6. H5支付

适用微信H5支付

3.1.6.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 商品详情
附加数据 attach String(127) 附加数据
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
货币类型 fee_type String(16) 默认人民币:CNY,其他值列表详见 货币类型
终端 IP spbill_create_ip String(16) 调用微信支付API的机器IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
通知地址 notify_url String(256) 接收支付结果异步通知回调地址,PC网站必填,POS机器扫码支付填写空字符串即可。示例:http://www.baidu.com/
页面回调地址 return_url String(256) 页面回调的地址,该地址不带支付结果参数,最终支付结果需要调用查询接口进行获取
交易类型 trade_type String(32) 取值:trade.weixin.h5pay,详细说明见 2.2 参数规定
指定支付方式 limit_pay String(32) no_credit--指定不能使用信用卡支付
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法
3.1.6.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,则错误原因(如签名失败、参数格式校验错误)
return_codeSUCCESS的时候,还会包括以下字段:
返回状态码 return_code String(16) SUCCESS/FAIL
业务结果 result_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 签名,详见 签名生成算法
交易类型 trade_type String(32) 取值:trade.weixin.h5pay,详细说明见参数规定
预支付标识 prepay_id String(64) 预支付会话标识,用于后续接口调用中使用,该值有效期为2小时
预支付 URL prepay_url String(255) 在手机浏览器里面打开此 URL 地址,进行付款

3.1.7. 微信APP+支付

使用app拉起小程序支付

3.1.7.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 详见如下说明
附加数据 attach String(127) 详见如下说明
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
货币类型 fee_type String(16) 默认人民币:CNY,其他值列表详见 货币类型
终端 IP spbill_create_ip String(16) 调用微信支付API的机器IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
通知地址 notify_url String(256) 接收支付结果异步通知回调地址,PC网站必填,POS机器扫码支付填写空字符串即可。示例:http://www.baidu.com/
交易类型 trade_type String(32) 取值:trade.weixin.apppay2,详细说明见参数规定
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法
3.1.7.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因:签名失败、参数格式校验错误
return_codeSUCCESS的时候,还会包括以下字段:
返回状态码 return_code String(16) SUCCESS/FAIL
业务结果 result_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 微信返回的签名,详见签名 签名生成算法
预支付数据包 package_json String(255) 该参数为 JSON 格式,参数配置微信JSAPI拉起微信支付
预支付标识 prepay_id String(64) 预支付会话标识,用于后续接口调用中使用,该值有效期为2小时
交易类型 trade_type String(32) 取值:trade.weixin.jspay,详细说明见参数规定
3.1.7.3. APP 调起微信

统一支付接口 packge_json 返回的字段说明,用于传递给SDK:
可参照提供的SDK Demo拉起微信支付

字段名 变量名 类型 必填 描述
应用 ID app_id String(32) 微信开放平台実核通过的应用 APPID
原始id orginal_id String(32) 原始id
预支付交易会话ID prepay_id String(32) 微信返回的支付交易会话 ID

3.1.8. 京东H5支付

使用手机浏览器拉起京东支付。

3.1.8.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
京东账号 user_id String(64) userid为商户平台的用户id(相当于token,用于唯一标示用户),需通过接口参数传给京东。首次支付成功后userid会和用户登陆的手机号做绑定,下次用户再发起支付时,无需再次登录即可完成支付。
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 商品详情
附加数据 attach String(127) 附加数据
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说 明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数
货币类型 fee_type String(16) 默认人民币:CNY
终端 IP spbill_create_ip String(16) 调用支付API的机器IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
通知地址 notify_url String(256) 接收支付结果异步通知回调地址,PC 网站必填,POS 机器扫码支付填写空字符串即可。示例:http://www.baidu.com/
交易类型 trade_type String(32) 取值:trade.jdpay.h5pay,详细说明见 2.2 参数规定
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名
3.1.8.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因:签名失败、参数格式校验错误
return_codeSUCCESS的时候,还会包括以下字段:
业务结果 result_code String(16) SUCCESS/FAIL
返回状态码 return_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 返回的签名
交易类型 trade_type String(32) 取值:trade.weixin.h5pay,详细说明见参数规定
预支付标识 prepay_id String(64) 预支付会话标识,用于后续接口调用中使用,该值有效期为2小时
预支付 URL prepay_url String(255) 在手机浏览器里面打开此 URL 地址,进行付款

3.1.9. 京东扫码

3.1.9.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
京东账号 user_id String(64) userid为商户平台的用户id(相当于token,用于唯一标示用户),需通过接口参数传给京东。首次支付成功后userid会和用户登陆的手机号做绑定,下次用户再发起支付时,无需再次登录即可完成支付。
京东线上扫码为必传字段
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 商品详情
附加数据 attach String(127) 附加数据
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说 明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数
货币类型 fee_type String(16) 默认人民币:CNY
终端 IP spbill_create_ip String(16) 调用支付API的机器IP
回调地址 return_url String(16) 默认人民币:CNY
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
通知地址 notify_url String(256) 接收支付结果异步通知回调地址,PC 网站必填,POS 机器扫码支付填写空字符串即可。示例:http://www.baidu.com/
交易类型 trade_type String(32) 取值:trade.jdpay.onlinepay,详细说明见 2.2 参数规定
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名
3.1.9.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因:签名失败、参数格式校验错误
return_codeSUCCESS的时候,还会包括以下字段:
业务结果 result_code String(16) SUCCESS/FAIL
返回状态码 return_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 返回的签名
交易类型 trade_type String(32) 取值:trade.jdpay.onlinepay,详细说明见参数规定
预支付URL prepay_url String(255) PC端浏览器访问该链接地址
预支付标识 prepay_id String(64) 预支付会话标识,用于后续接口调用中使用

3.1.10. 网关支付

3.1.10.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 商品详情
附加数据 attach String(127) 附加数据
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说 明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数(网关支付最低测试金额为10分),详见 支付金额
货币类型 fee_type String(16) 默认人民币:CNY,其他值列表详见 货币类型
终端 IP spbill_create_ip String(16) 调用微信支付API的机器IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
交易类型 trade_type String(32) 取值:trade.ebank.cardpay,详细说明见 2.2 参数规定
银行编码 bank_code String(32) 详见文档末尾银行编码列表
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_noString(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法
3.1.10.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因:签名失败、参数格式校验错误
return_codeSUCCESS的时候,还会包括以下字段:
业务结果 result_code String(16) SUCCESS/FAIL
返回状态码 return_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 微信返回的签名,详见签名 签名生成算法
交易类型 trade_type String(32) 取值:trade.weixin.h5pay,详细说明见参数规定
预支付标识 prepay_id String(64) 预支付会话标识,用于后续接口调用中使用
预支付 URL prepay_url String(255) 在PC端浏览器里面打开此 URL 地址,进行付款

3.1.11. 微信原生公众号支付

3.1.11.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
用户标识 sub_openid String(128) trade_type=trade.weixin.jspay时(即公众号支付),此参数必传,此参数为微信用户在商户对应appid下的唯一标识。openid如何获取,可参考【获取openid】。企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid,再调用【企业号userid转openid接口】进行转换
公众账号ID sub_appid String(128) 微信支付分配的公众账号ID(企业号corpid即为此appId)原生支付必传
原生公众号支付标识 req_type String(32) 固定值:“wxjsapi”
随机字符串 nonce_str String(32) 随机字符串,不长于32位
商品描述 body String(32) 商品或支付单简要描述
商品详情 detail String(8192) 商品详情
附加数据 attach String(127) 附加数据
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说 明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
货币类型 fee_type String(16) 默认人民币:CNY,其他值列表详见 货币类型
终端 IP spbill_create_ip String(16) 调用微信支付API的机器IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
交易类型 trade_type String(32) 取值:trade.weixin.jspay,详细说明见 2.2 参数规定
通知地址 notify_url String(256) 接收支付结果异步通知回调地址,PC 网站必填,POS 机器扫码支付填写空字符串即可。示例:http://www.baidu.com/
返回地址 return_url String(256) 收页面回调的地址,该地址不带支付结果参数,最终支付结果需要调用查询接口进行获取
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_noString(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法
3.1.11.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因:签名失败、参数格式校验错误
return_codeSUCCESS的时候,还会包括以下字段:
返回状态码 return_code String(16) SUCCESS/FAIL
业务结果 result_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
签名 sign String(32) 微信返回的签名,详见签名 签名生成算法
预支付数据包 package_json String(255) 该参数为 JSON 格式,参数配置微信JSAPI拉起微信支付
预支付标识 prepay_id String(64) 预支付会话标识,用于后续接口调用中使用,该值有效期为2小时
交易类型 trade_type String(32) 取值:trade.weixin.jspay,详细说明见参数规定

3.2. 刷卡支付接口

3.2.1. 应用场景

收银员使用扫码设备读取微信用户刷卡授权码以后,二维码或条码信息传送至商户收银台,由商户收银台或者商户后台调用该接口发起支付。
提醒 1:提交支付请求后微信会同步返回支付结果。当返回结果为“系统错误”时,商户系统等待 5 秒后调用【查询订单API】,查询支付实际交易结果;当返回结果为“USERPAYING”时,商户系统可设置间隔时间(建议10秒)重新查询支付结果,直到支付成功或超时(建议30秒)。

注:该支付接口统一整合了支付宝、微信的小额刷卡支付,后台动态区分该笔交易是支付宝付款还是微信付款,前端调用无需判断,如支付类型未开通的,需要联系商务进行开通

3.2.2. 接口地址

https://api.yunzhikj.cn/pay/micropay

3.2.3. 刷卡支付

3.2.3.1. 输入参数
字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于32位
商品描述 body String(32) 商品或支付单简要描述
交易类型 trade_type String(32) 刷卡支付此参数为非必填
设备信息 device_info String(32) 调用刷卡支付的设备信息(QQ小额支付为必传字段)
商品详情 detail String(8192) 商品名称明细列表
附加数据 attach String(127) 附加数据,在查询 API 和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据
商户订单号 out_trade_no String(32) 商户系统内部的订单号,32 个字符内、可包含字母,其他说明见商户订单号
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
货币类型 fee_type String(16) 默认人民币:CNY,其他值列表详见 货币类型
通知地址 notify_url String(256) 接收支付结果异步通知回调地址
终端 IP spbill_create_ip String(16) 调用微信支付API的机器 IP
商品标记 goods_tag String(32) 商品标记,代金券或立减优惠功能的参数
授权码 auth_code String(128) 扫码支付授权码,设备读取用户微信中的条码或者二维码信息
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名类型 sign_type String(32) 不传默认为MD5,为RSA的话,支持用RSA签名
签名 sign String(32) 签名,详见 签名生成算法
3.2.3.2. 返回结果
字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因(签名失败、参数格式校验错误等)
return_codeSUCCESS的时候,还会包括以下字段:
返回状态码 return_code String(16) SUCCESS/FAIL
业务结果 result_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code都为SUCCESS的时,还会包括以下字段:
用户标识 openid String(128) 用户在商户 appid 下的唯一标识
是否关注公众号 is_subscribe String(1) 用户是否关注公众号,仅在公众号类型支付有效, 取值范围:Y 或 N;Y-关注;N-未关注
用户子标识 sub_openid String(128) 用户在子商户 appid 下的唯一标识
是否关注子公众号 sub_is_subscribe String(1) 用户是否关注子公众败号,Y-关注,N-未关注,仅在公众号支付类型有效
交易类型 trade_type String(16) 支付类型为 trade.weixin.micropay (即刷卡支付)
付款银行 bank_type String(16) 银行类型,采用字符串类型的银行标识,值列表详见银行类型
货币类型 fee_type String(16) 符合 ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见支付金额
现金支付货币类型 cash_fee_type String(16) 符合 ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型
现金支付金额 cash_fee Int 订单现金支付金额,详见支付金额
代金券或立减优惠金额 coupon_fee Int 代金券或立减优惠金额订单总金额,订单总金额-代金券立减优惠金额=现金支付金额
平台支付订单号 transaction_id String(32) 平台支付订单号
微信支付订单号 third_trans_id String(32) 微信支付订单号
商户订单号 out_trade_no String(32) 商户系统的订单号,与请求一致。
商家数据包 attach String(128) 商家数据包,原样返回
支付完成时间 time_end String(14) 订单生成时间,格式为 yyyyMMddHHmmss,如 2009年 12 月 25 日 9 点 10 分 10 秒表示为 20091225091010。详见时间规则

3.3. 统一错误码

注意:如果当前交易返回的支付状态是明确的错误原因造成的支付失败(支付确认失败),请重新下单支付。如果当前交易返回的支付状态是不明错误(支付结果未知),请调用查询订单接口确认状态。

名称 描述 原因 解决方案
NOAUTH 商户无此接口权限 商户未开通此接口权限 请商户前往申请此接口权限
NOTENOUGH 余额不足 用户帐号余额不足 用户帐号余额不足,请用户充值或更换支付卡后再支付
ORDERPAID 商户订单已支付 商户订单已支付,无需重复操作 商户订单已支付,无需更多操作
ORDERCLOSED 订单已关闭 当前订单已关闭,无法支付 当前订单已关闭,请重新下单
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 编码格式

3.4. 支付结果通知

3.4.1. 应用场景

支付完成后,微信会把相关支付结果和用户信息发送给商户,商户需要接收处理,并返回应答。对后台通知交互时,如果微信收到商户的应答不是成功或超时,微信认为通知失败,微信会通过一定的策略(如30分钟共8次)定期重新发起通知 , 尽可能提高通知的成功率,但微信不保证通知最终能成功。(通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒)

注意:同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。
推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行幵发控制,以避免函数重入造成的数据混乱。

特别提醒:商户系统对于支付结果通知的内容一定要做签名验证,防止数据泄漏导致出现“假通知”,造成资 金损失
◆ POS 机器需要主动调用 POS 前置查询接口,查询支付最终结果。POS 机无法得到后台通知结果。

3.4.2. 通知参数

字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因(签名失败、参数格式校验错误等)
以下字段在return_codeSUCCESS的时候有返回
业务结果 result_code String(16) SUCCESS/FAIL
返回状态码 return_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
以下字段在return_coderesult_code都为SUCCESS的时候有返回
商户号 mch_id String(16) 调用接口提交的商户号
随机字符串 nonce_str String(16) 微信返回的随机字符串
交易类型 trade_type String(16) 调用接口提交的交易类型,取值详细说明见参数规定
付款银行 bank_type String(16) 银行类型,采用字符串类型的银行标识
总金额 total_fee Int 订单总金额,单位为分
货币种类 fee_type String(8) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY,其他值列表详见 货币类型
现金支付金额 cash_fee Int 现金支付金额订单现金支付金额,详见 支付金额
现金支付货币类型 cash_fee_type String(16) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY,其他值列表详见 货币类型
代金券或立减优惠金额 coupon_fee Int “代金券或立减优惠”金额<=订单总金额,订单总金额-“代金券或立减优惠”金额=现金支付金额,详见 代金券或立减优惠
代金券或立减优惠使用数量 coupon_count Int 代金券或立减优惠使用数量
代金券或立减优惠批次 ID coupon_batch_id_$n String(20) 代金券或立减优惠批次 ID,$n 为下标,从 0 开始编号
代金券或立减 coupon_id_$n String(20) 代金券或立减优惠 ID,$n 为下标,从 0 开始编号
优惠 ID
单个代金券或立减优惠支付金额 coupon_fee_$n Int 单个代金券或立减优惠支付金额, $n 为下标,从 0 开 始编号
平台支付订单号 transaction_id String(32) 平台支付订单号
微信支付订单号/第三方单号 third_trans_id String(32) 微信支付订单号/第三方单号
微信单号 bank_no String(32) 微信单号
商户订单号 out_trade_no String(32) 商户系统的订单号,与请求一致。
附加数据 attach String(128) 附加数据,原样返回
支付完成时间 time_end String(14) 订单支付时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 25 日 9 点 10 分 10 秒表示为20091225091010。其他详见时间规则

3.4.3. 返回参数

商户处理后同步返回给服务平台,商户做业务处理后,需要以字符串的形式反馈处理结果,内容如下:

返回结果 结果说明
success 处理成功,服务平台系统收到此结果后不再进行后续通知
fail 或其它字符 处理不成功,服务平台系统收到此结果或者没有收到任何结果,系统通过补单机制再次通知


示例如下:

success

3.5. 查询订单接口

3.5.1. 应用场景

该接口提供所有支付订单的查询,商户可以通过该接口主动查询订单状态,完成下一步的业务逻辑。 需要调用查询接口的情况:
◆ 当商户后台、网络、服务器等出现异常,商户系统最终未接收到支付通知;
◆ 调用支付接口后,返回系统错误或未知交易状态情况;
◆ 调用被扫支付 API,返回 USERPAYING 的状态;
◆ 调用关单或撤销接口API 之前,需确认支付状态。

3.5.2. 接口地址

生产环境地址:https://api.yunzhikj.cn/pay/orderquery

3.5.3. 请求参数

字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
平台订单号 transaction_ id String(32) 二选 一 平台订单号
商户订单号 out_trade_no String(32) 商户系统内部的订单号,当没提供 transaction_id 时需要传这个
随机字符串 nonce_str String(32) 随机字符串,不长于 32 位。推荐 随机数生成算法
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法

3.5.4. 返回结果

字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因(签名失败、参数格式校验错误等)
以下字段在return_codeSUCCESS的时候有返回
商户号 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_coderesult 都为SUCCESS的时候有返回
商户号 mch_id String(32) 商户号
交易类型 trade_type String(16) 调用接口提交的交易类型,取值详细说明见参数规定
交易状态 trade_state String(32) SUCCESS—支付成功
REFUND—转入退款
NOTPAY—未支付
CLOSED—已关闭
REVOKED—已撤销(刷卡支付)
USERPAYING--用户支付中
PAYERROR--支付失败(其他原因,如银行返回失败)
付款银行 bank_type String(16) 银行类型,采用字符串类型的银行标识
总金额 total_fee Int 订单总金额,单位为分
货币种类 fee_type String(8) 货币类型,符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见 货币类型
现金支付金额 cash_fee Int 现金支付金额订单现金支付金额,详见 支付金额
现金支付货币类型 cash_fee_type String(16) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY,其他值列表详见 货币类型
代金券或立减优惠金额 coupon_fee Int “代金券或立减优惠”金额<=订单总金额,订单总金额-“代金券或立减优惠”金额=现金支付金额,详见 代金券或立减优惠
代金券或立减优惠使用数量 coupon_count Int 代金券或立减优惠使用数量
代金券或立减优惠批次 ID coupon_batch_id_$n String(20) 代金券或立减优惠批次 ID ,$n 为下标,从 0 开始编号
代金券或立减优惠 ID coupon_id_$n String(20) 代金券或立减优惠 ID, $n 为下标,从 0 开始编号
单个代金券或立减优惠支付金额 coupon_fee_$n Int 单个代金券或立减优惠支付金额, $n 为下标,从 0 开 始编号
平台支付订单号 transaction_id String(32) 平台支付订单号
微信支付订单号 third_trans_id String(32) 微信支付订单号
商户订单号 out_trade_no String(32) 商户系统的订单号,与请求一致
附加数据 attach String(128) 附加数据,原样返回
支付完成时间 time_end String(14) 订单支付时间,格式为 yyyyMMddHHmmss,如 2009 年 12 月 25 日 9 点 10 分 10 秒表示为 20091225091010。其他详见时间规则
交易状态描述 trade_state_des c String(256) 对当前查询订单状态的描述和下一步操作的指引

3.5.5. 错误码

名称 描述 原因 解决方案
ORDERNOTEXIST 此交易订单号 不存在 查询系统中不存 在此交易订单号 该 API 只能查提交支付交易返回成功的订单,请商户检查需要查询的订 单号是否正确
SYSTEMERROR 系统错误 后台系统返回错误 系统异常,请再调用发起查询

3.6. 申请退款接口

3.6.1. 应用场景

当交易发生之后一段时间内,由于买家或者卖家的原因需要退款时,卖家可以通过退款接口将支付款退还给买家,支付将在收到退款请求并且验证成功之后,按照退款规则将支付款按原路退到买家帐号上。

注意:退款支持单笔交易分多次退款,多次退款需要提交原支付订单的商户订单号和设置不同的退款单号。 一笔退款失败后重新提交,要采用原来的退款单号。总退款金额不能超过用户实际支付金额。

3.6.2. 接口地址

生产环境地址:https://api.yunzhikj.cn/secapi/pay/refund

3.6.3. 输入参数

字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于 32 位。推荐 随机数生成算法
平台订单号 transaction_id String(28) 二选一 平台生成的订单号,在支付通知中有返回
商户订单号 out_trade_no String(32) 商户的订单号
商户退款单号 out_refund_no String(32) 商户系统内部的退款单号,商户系统内部唯一,同一退款单号多次请求只退一笔
总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
退款金额 refund_fee Int 退款总金额,订单总金额,单位为分,只能为整数,详见 支付金额
货币种类 refund_fee_type String(8) 货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY,其他值列表详见 货币类型
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
签名 sign String(32) 签名,详见 签名生成算法

3.6.4. 返回结果

字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因(签名失败、参数格式校验错误等)
以下字段在return_codeSUCCESS的时候有返回
业务结果 result_code String(16) SUCCESS/FAIL
返回状态码 return_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code 都为SUCCESS的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
平台订单号 transaction_id String(28) 平台订单号
微信订单号 third_trans_id String(28) 微信订单号
商户订单号 out_trade_no String(32) 商户系统内部的订单号
商户退款单号 out_refund_no String(32) 商户退款单号
平台退款单号 refund_id String(28) 平台退款单号
微信退款单号 third_refund_id String(28) 微信退款单号
退款渠道 refund_channel String(16) ORIGINAL—原路退款 BALANCE—退回到余额
退款金额 refund_fee Int 退款总金额,单位为分,可以做部分退款
订单总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
订单金额货币种类 fee_type String(8) 订单金额货币类型,符合 ISO 4217 标准的三位字母代码,默认人民币:CNY,其他值列表详见 货币类型
现金支付金额 cash_fee Int 现金支付金额,单位为分,只能为整数,详见 支付金额
现金退款金额 cash_refund_fee Int 现金退款金额,单位为分,只能为整数,详见 支付金额
代金券或立减优惠退款金额 coupon_refund_fee Int 代金券或立减优惠退款金额=订单金额-现金退款金额,注意:立减优惠金额不会退回
代金券或立减优惠使用数量 coupon_refund_ count Int 代金券或立减优惠使用数量
代金券或立减优惠 ID coupon_refund_id String(20) 代金券或立减优惠 ID

3.6.5. 错误码

名称 描述 原因 解决方案
SYSTEMERROR 接口返回错误 系统超时 请用相同参数再次调用 API
INVALID_TRANSACTIONID 无效 transaction_id 请求参数未按指引进行填写 请求参数错误,检查原交易号是否存在或发起支付交易接口返回失败
PARAM_ERROR 参数错误 请求参数未按指引进行填写 请重新检查再调用退款申请
MCHID_NOT_EXIST MCHID 不存在 参数中缺少 MCHID 请检查 MCHID 是否正确
REQUIRE_POST_METHOD 请使用 post 方法 未使用 post 传递参数 请检查请求参数是否通过 post 方法提交
SIGNERROR 签名错误 参数签名结果不正确 请检查签名参数和方法是否都符合签名算法要求
XML_FORMAT_ERROR XML 格式错误 XML 格式错误 请检查 XML 参数格式是否正确

3.7. 查询退款接口

3.7.1. 应用场景

提交退款申请后,通过调用该接口查询退款状态。退款有一定延时,用零钱支付的退款20分钟内到账,银行卡支付的退款 3 个工作日后重新查询退款状态。

3.7.2. 接口地址

生产环境地址:https://api.yunzhikj.cn/pay/refundquery

3.7.3. 输入参数

字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于 32 位。推荐 随机数生成算法
签名 sign String(32) 签名,详见 签名生成算法
操作终端类型 op_term_tp String(8) 取值:POS,WEB,PC
操作终端编号 op_term_no String(32) 终端设备号
操作门店编号 op_shop_no String(32) 门店编号
操作员编号 op_user_id String(32) 操作员帐号
平台订单号 transaction_id String(28) 四 选 一 平台订单号
商户订单号 out_trade_no String(32) 商户系统内部的订单号
商户退款单号 out_refund_no String(32) 商户退款单号
平台退款单号 refund_id String(28) 微信生成的退款单号,在申请退款接口有返回

3.7.4. 返回结果

字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) SUCCESS/FAIL此字段是通信标识,非交易标识,交易是否成功需要查看result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因(签名失败、参数格式校验错误等)
以下字段在 return_code SUCCESS 的时候有返回
业务结果 result_code String(16) SUCCESS/FAIL
返回状态码 return_code String(16) SUCCESS/FAIL
错误代码 err_code String(32) 详细参见错误列表
错误代码描述 err_code_des String(128) 错误返回的信息描述
return_coderesult_code 都为 SUCCESS 的时,还会包括以下字段:
商户号 mch_id String(32) 商户号
平台订单号 transaction_id String(32) 平台订单号
微信订单号 third_trans_id String(32) 微信订单号
商户订单号 out_trade_no String(32) 商户系统内部的订单号
订单总金额 total_fee Int 订单总金额,单位为分,只能为整数,详见 支付金额
订单金额货币种类 fee_type String(8) 订单金额货币类型,符合 ISO 4217 标准的三位字母代码, 默认人民币:CNY,其他值列表详见 货币类型
现金支付金额 cash_fee Int 现金支付金额,单位为分,只能为整数,详见 支付金额
退款笔数 refund_count Int 退款记录数
商户退款单号 out_refund_no_$n String(32) 商户退款单号
平台退款单号 refund_id_$n String(28) 平台退款单号
退款渠道 refund_channel_$n String(16) ORIGINAL—原路退款 BALANCE—退回到余额
退款金额 refund_fee_$n Int 退款总金额,单位为分,可以做部分退款
代金券或立减优惠退款金额 coupon_refund_fee_$n Int 代金券或立减优惠退款金额<=退款金额,退款金额-代金 券或立减优惠退款金额为现金,说明详见 代金券或立减优惠
代金券或立减优惠使用数量 coupon_refund_count_$n Int 代金券或立减优惠使用数量,$n 为下标,从 0 开始编号
代金券或立减 优惠批次 ID coupon_refund_batch_id_$n_$m String(20) 批次 ID,$n 为下标,$m 为下标,从 0 开始编号
代金券或立减优惠 ID coupon_refund_id_$n_$m String(20) 代金券或立减优惠 ID, $n 为下标,$m 为下标,从 0 开始编号
单个代金券或立减优惠支付金额 coupon_refund_fee_$n_$m Int 单个代金券或立减优惠支付金额, $n 为下标,$m 为下标, 从 0 开始编号
退款状态 refund_status_$n String(16) 退款状态:
SUCCESS—退款成功
FAIL—退款失败
PROCESSING—退款处理中
NOTSURE—未确定,需要商户原退款单号重新发起
CHANGE—转入代发,退款到银行发现用户的卡作废或者冻结了,导致原路退款银行卡失败,资金回流到商户的现金帐号,需要商户人工干预,通过线下或者财付通转账的方式进 行退款

3.7.5. 错误码

名称 描述 原因 解决方案
SYSTEMERROR 接口返回错误 系统超时 请尝试再次掉调用 API。
INVALID_TRANSACTIONID 无效transaction_ id 请求参数未按指引进行 填写 请求参数错误,检查原交易号是否存在或发起支付交易接口返回失败
PARAM_ERROR 参数错误 请求参数未按指引进行填写 请重新检查再调用退款申请
MCHID_NOT_EXIST MCHID 不存在 参数中缺少 MCHID 请检查 MCHID 是否正确
REQUIRE_POST_METHOD 请使用 post 方法 未使用 post 传递参数 请检查请求参数是否通过 post 方法提交
SIGNERROR 签名错误 参数签名结果不正确 请检查签名参数和方法是否都符合签名算法要求
XML_FORMAT_ERRO R XML 格式错 XML 格式错误 请检查 XML 参数格式是否正确

3.8. 下载账单接口

3.8.1. 应用场景

商户可以通过该接口下载历史交易清单。比如掉单、系统错误等导致商户侧和平台侧数据不一致,通过对账单核对后可校正支付状态。
注意:
1、平台侧未成功下单的交易不会出现在对账单中。
2、平台在次日 10 点启动生成前一天的对账单,建议商户 11 点后再获取。
3、对账单中涉及金额的字段单位为“元”。
4、对账单接口只能下载三个月以内的账单。

3.8.2. 接口地址

生产环境地址:https://api.yunzhikj.cn/pay/downloadbill

3.8.3. 请求参数

字段名 变量名 类型 必填 描述
商户号 mch_id String(32) 商户号
随机字符串 nonce_str String(32) 随机字符串,不长于 32 位。推荐 随机数生成算法
对账单日期 bill_date String(8) 下载对账单的日期,格式:20140603
签名 sign String(32) 签名,详见 签名生成算法

3.8.4. 返回结果

字段名 变量名 类型 必填 描述
返回状态码 return_code String(16) FAIL(失败),成功时,数据以文本表格的方式返回 result_code 来判断
返回信息 return_msg String(128) 返回信息,如非空,为错误原因(签名失败、参数格式校验错误等)

成功时,数据以文本表格的方式返回,第一行为表头,后面各行为对应的字段内容,字段内容跟查询订单或退款结果一致,具体字段说明可查阅相应接口。

第一行为表头:
交易时间,商户号,子商户号,设备号,平台单号,第三方单号,商户单号,用户标识,交易类型,交易状态,付款银行,货币 种类,总金额,红包金额,平台退款单号,商户退款单号,退款金额,企业红包退款金额,退款类型,退款状态,商品 名称, 商户数据包

从第二行起,为数据记录,各参数以逗号分隔,参数前增加`符号,为标准键盘 1 左边键的字符,字段顺序表头不一致。

倒数第二行为订单统计标题,最后一行为统计数据总交易单数,总交易额,总退款金额,总红包退款金额
示例如下:

交易时间,商户号,子商户号,设备号,平台单号,第三方单号,商户单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金 额,红包金额,平台退款单号,商户退款单号,退款金额,企业红包退款金额,退款类型,退款状态,商品名称,商户数据包

  1. `2016-09-03 10:40:11,`15121009,`15121009,`,`1512100920160903109790993,`8012016090310243946534287,`201609031039491
  2. 05714,`,`trade.weixin.jspay,`SUCCESS,`,`CNY,`0.01,`0,`,`,`0,`0,`,`,`测试购物,`
  3. `2016-09-03 14:56:38,`15121009,`15121009,`,`1512100920160903149824853,`8012016090314245624846302,`201609031456288
  4. 62401,`,`trade.weixin.jspay,`SUCCESS,`,`CNY,`0.01,`0,`,`,`0,`0,`,`,`测试购物,`
  5. 总交易单数,总交易额,总退款金额,总红包退款金额
  6. `2,`0.02,`0.00,`0

3.8.5. 错误码

名称 描述 原因 解决方案
SYSTEMERROR 系统错误 后台系统返回错误 系统异常,请再调用发起查询

3.9. 支付目录配置

3.9.1. 应用场景

特约子商户配置支付目录;每个商户最多配置5个支付目录。
注意:API只支持新增配置,不支持修改, 如银行需要修改请先登录微信服务商后台手工删除后重新配置

3.9.2. 接口地址

生产环境地址:https://mapi.ulopay.com/incoming/officialaccount/wechatpublicacctcfg 

3.9.3. 请求参数示例

  1. {
  2. "businessContext": {
  3. "jsapiPath": "http: //api.test.szulodev.com/pay/down/",
  4. "merchantNo": "26101190"
  5. },
  6. "signKey": "008af7da54fe910e332d81327fc519f9"
  7. }

3.9.4. 请求参数解释

参数说明 字段ID 字段名称 类型 示例值 可空 备注
最外层 businessContext 业务数据 - - -
signKey 签名值 - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
businessContext merchantNo 商户编号 String(128) 351067200 服务平台商
jsapiPath 授权目录 String 26101158 配置授权目录时,jsapiPath参数为必传,
关联APPID,推荐关注APPID不传
如果配置推荐关注APPID(subscribeAppid),
则关联APPID(subAppid)不能为空,
如果没有subAppid,请传入“NULL”字符串
-

3.9.5. 响应参数示例

  1. {
  2. "businessContext": {
  3. "resultCode": "200",
  4. "resultMsg": "成功",
  5. "contents":{
  6. "resultCode": "200",
  7. "resultMsg": "成功",
  8. }
  9. },
  10. "signKey": "xxx"
  11. }

3.9.6. 响应参数解释

参数说明 字段ID 字段名称 类型 示例值 可空 备注
最外层 businessContext 业务数据 Json - - -
signKey 签名值 String - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
businessContext resultCode 响应代码 String - - -
resultMsg 响应消息 String - - -
contents 业务数据 String - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
contents resultCode 响应代码 String - - -
resultMsg 响应消息 String - - -

3.10. 绑定APPID配置

3.10.1. 应用场景

给特约子商户配置绑定关系;
注意:
API只支持新增配置,不支持修改, 如银行需要修改请先登录微信服务商后台手工删除后重新配置。
可以绑定特约商户或渠道公司名字相同的公众号、小程序、开放平台应用的APPID; 如果提交绑定了subappid,支付接口就一定要传

3.10.2. 接口地址

生产环境地址:https://mapi.ulopay.com/incoming/officialaccount/appletcfg   

3.10.3. 请求参数示例

  1. {
  2. "businessContext": {
  3. "subAppid": "1001012",
  4. "providerNo":"60103472",
  5. "merchantNo": "26101190"
  6. },
  7. "signKey": "008af7da54fe910e332d81327fc519f9"
  8. }

3.10.4. 请求参数解释

参数说明 字段ID 字段名称 类型 示例值 可空 备注
最外层 businessContext 业务数据 - - -
signKey 签名值 - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
businessContext providerNo 服务商编号 String 26101158 服务平台商
merchantNo 商户编号 String 26101157 -
subAppid 小程序APPID String wx57ef4082b46a6c59 -

3.10.5. 响应参数示例

  1. {
  2. "businessContext": {
  3. "resultCode": "200",
  4. "resultMsg": "成功",
  5. "contents":{
  6. "resultCode": "200",
  7. "resultMsg": "成功",
  8. }
  9. },
  10. "signKey": "xxx"
  11. }

3.10.6. 响应参数解释

参数说明 字段ID 字段名称 类型 示例值 可空 备注
最外层 businessContext 业务数据 Json - - -
signKey 签名值 String - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
businessContext resultCode 响应代码 String - - -
resultMsg 响应消息 String - - -
contents 业务数据 String - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
contents resultCode 响应代码 String - - -
resultMsg 响应消息 String - - -

3.11. 默认关注配置

3.11.1. 应用场景

给特约子商户配置推荐关注的功能;

注意:API只支持新增配置,配置后隔30天才能重新修改,所以配置前请确认appid是否正确。

3.11.2. 接口地址

生产环境地址:https://mapi.ulopay.com/incoming/officialaccount/defaultattentioncfg  

3.11.3. 请求参数示例

  1. {
  2. "businessContext": {
  3. "subAppid": "1001012",
  4. "subscribeAppid": "10012015",
  5. "receiptAppid": "10012016",
  6. "merchantNo": "26101190"
  7. },
  8. "signKey": "008af7da54fe910e332d81327fc519f9"
  9. }

3.11.4. 请求参数解释

参数说明 字段ID 字段名称 类型 示例值 可空 备注
最外层 businessContext 业务数据 - - -
signKey 签名值 - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
businessContext merchantNo 商户编号 String(128) 351067200 服务平台商
subAppid 小程序APPID String 26101158 -
subscribeAppid 推荐关注公众号APPID String 26101158 - subscribeAppid

与receiptAppid选填一个
receiptAppid 支付凭证推荐小程序APPID String 26101158 -

3.11.5. 响应参数示例

  1. {
  2. "businessContext": {
  3. "resultCode": "200",
  4. "resultMsg": "成功",
  5. "contents":{
  6. "resultCode": "200",
  7. "resultMsg": "成功",
  8. }
  9. },
  10. "signKey": "xxx"
  11. }

3.11.6. 响应参数解释

参数说明 字段ID 字段名称 类型 示例值 可空 备注
最外层 businessContext 业务数据 Json - - -
signKey 签名值 String - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
businessContext resultCode 响应代码 String - - -
resultMsg 响应消息 String - - -
contents 业务数据 String - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
contents resultCode 响应代码 String - - -
resultMsg 响应消息 String - - -

3.12. 查询公众号配置接口

3.12.1. 应用场景

查询子商户公众号配置;

3.12.2. 接口地址

生产环境地址: https://mapi.ulopay.com/incoming/officialAccount/search

3.12.3. 请求参数示例

  1. {
  2. "businessContext": {
  3. "providerNo": "26199724",
  4. "merchantNo":"26104515"
  5. },
  6. "signKey": "871b3059d124146744c2c8f59e830113"
  7. }
参数说明 字段ID 字段名称 类型 示例值 可空 备注
最外层 businessContext 业务数据 Json - - -
signKey 签名值 String - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
businessContext providerNo 服务商编号 String(15) 26104575 -
merchantNo 商户编号 String(15) 26104515 -

3.12.4. 响应参数示例

  1. {
  2. "businessContext": {
  3. "resultCode": "200",
  4. "resultMsg": "成功",
  5. "contents": [{
  6. "subscribeAppid": "wx8f6336b2e083a63b",
  7. "ally": "33115155",
  8. "jsapiPathList": [
  9. "http: //api.test.szulodev.com/pay/",
  10. "http: //api.test.szulodev.com/pay/add/",
  11. "http: //api.test.szulodev.com/pay/get/",
  12. "http: //api.test.szulodev.com/pay/jspay/",
  13. "http: //api.test.szulodev.com/pay/update/"
  14. ],
  15. "subAppidList": [{
  16. "subAppid": "wx662cf4a697ee2bc8"
  17. },{
  18. "subAppid": "wx8f6336b2e083a63b"
  19. }
  20. ]
  21. }]
  22. },
  23. "signKey": "dc3b3d61d521d7c67cefa2735f7df574"
  24. }

3.12.5. 响应参数解释

参数说明 字段ID 字段名称 类型 示例值 可空 备注
最外层 resultCode 响应代码 String - - -
resultMsg 响应消息 String - - -
contents 查询的公众号信息 Array - - -
参数说明 字段ID 字段名称 类型 示例值 可空 备注
contents subscribeAppid 推荐关注APPID String - - -
ally 第三方商户号 String - - -
jsapiPathList 授权目录列表 String - - -
subAppidList 关注APPID String - - -
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注