支付中签约
更新时间:2024.11.18付的同时完成代扣协议的签约。
开发流程介绍:
步骤1 请求支付中签约接口(参数见请求参数),获取预支付id(对应参数:prepay_id)此步骤需要根据不同支付方式选择不同的trade_type(trade_type详细介绍请参见交易类型规则)。
步骤2 按照不同支付方式的不同规则,按要求唤起微信支付收银台,不同的支付方式,对于唤起微信支付收银台的方法要求不同,具体可以参见以下表格:
扫码支付(NATIVE)详见: | |
---|---|
公众号支付(JSAPI)详见: | |
App支付(APP)详见: | |
H5(MWEB)支付详见: | |
小程序(JSAPI)支付详见: |
步骤3 用户完成支付,微信通过支付中签约接口中商户上传的通知回调地址(对应参数:notify_url),将支付结果返回给商户,同时将签约结果通过contract_notify_url通知给商户,两次通知皆为异步通知。
接口说明
适用对象:直连商户
请求URL: https://api.mch.weixin.qq.com/pay/contractorder
请求方式: POST
是否需要证书: 否
请求参数
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
应用ID | appid | string[1,32] | 是 | 由微信生成的应用ID,全局唯一。 |
商户号 | mch_id | string[1,32] | 是 | 商户号是商户在微信申请微信支付成功后分配的账号ID,登录平台为pay.weixin.qq.com |
签约商户号 | contract_mchid | string[1,32] | 是 | 签约商户号,必须与mch_id一致 |
签约appid | contract_appid | string[1,32] | 是 | 签约公众号,必须与appid一致 |
商户订单号 | out_trade_no | string[1,32] | 是 | 商户系统内部的订单号,32个字符内、可包含字母,其他说明见商户订单号 |
设备号 | device_info | string[1,32] | 否 | 终端设备号(门店号或收银设备ID),注意:PC网页或公众号内支付请传"WEB" |
随机字符串 | nonce_str | string[1,32] | 是 | 随机字符串,不长于32位. |
商品描述 | body | string[1,127] | 是 | 商品或支付单简要描述 |
商品详情 | detail | string[1,8192] | 否 | 商品名称明细列表 |
附加数据 | attach | string[1,127] | 否 | 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 |
回调通知url | notify_url | string[1,256] | 是 | 回调通知地址,以http或https开头,通知url必须为外网可访问的url,不能携带参数。 |
总金额 | total_fee | int | 是 | 订单总金额,单位为分 |
终端IP | spbill_create_ip | string[1,16] | 是 | 用户的客户端IP ,支持IPV4,目前不支持ipv6 |
交易起始时间 | time_start | string[1,14] | 否 | 订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010. 其他详见时间规则 |
交易结束时间 | time_expire | string[1,14] | 否 | 订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010. 其他详见时间规则 |
商品标记 | goods_tag | string[1,32] | 否 | 商品标记,代金券或立减优惠功能的参数 |
交易类型 | trade_type | string[1,16] | 是 | 取值如下:JSAPI,NATIVE,APP,MWEB |
商品ID | product_id | string[1,32] | 否 | trade_type=NATIVE,此参数必传. 此id为二维码中包含的商品ID,商户自行定义. |
指定支付方式 | limit_pay | string[1,32] | 否 | no_credit:指定不能使用信用卡支付 |
用户标识 | openid | string[1,128] | 否 | trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识. |
模板id | plan_id | int | 是 | 协议模板id |
签约协议号 | contract_code | string[1,64] | 是 | 商户侧的签约协议号,由商户生成,只能是数字、大小写字母的描述。 |
请求序列号 | request_serial | int 64 | 是 | 商户请求签约时的序列号,要求唯一性。禁止使用0开头,序列号主要用于排序,不作为查询条件,纯数字,范围不能超过int 64的范围(9223372036854775807)。 |
用户账户展示名称 | contract_display_account | string[1,64] | 是 | 签约用户的名称,用于页面展示,参数值不支持UTF8非3字节编码的字符,例如表情符号,所以请勿传微信昵称到该字段 |
签约信息通知url | contract_notify_url | string[1,256] | 是 | 签约信息回调通知的url,以http或https开头,通知url必须为外网可访问的url,不能携带参数。 |
签名 | sign | string[1,32] | 是 | 签名规则详见签名生成算法 注:所有参数都是encode前做签名 |
请求示例:
XML
返回参数
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
返回状态码 | return_code | string[1,16] | 是 | SUCCESS/FAIL |
返回信息 | return_msg | string[1,128] | 否 | 返回信息,如非空,为错误原因 |
以下字段在return_code为SUCCESS的时候有返回
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
业务结果 | result_code | string[1,16] | 是 | SUCCESS/FAIL |
应用ID | appid | string[1,32] | 是 | 直连商户申请的公众号或移动应用appid。 |
商户号 | mch_id | string[1,32] | 是 | 商户号是商户在微信申请微信支付成功后分配的账号ID,登录平台为pay.weixin.qq.com |
随机字符串 | nonce_str | string[1,32] | 是 | 随机字符串,不长于32位. |
签名 | sign | string[1,32] | 是 | 签名规则详见签名生成算法 注:所有参数都是encode前做签名. |
错误代码 | err_code | string[1,32] | 否 | 错误返回的错误代码 |
错误代码描述 | err_code_des | string[1,128] | 否 | 错误返回的信息描述 |
预签约结果 | contract_result_code | string[1,16] | 是 | 预签约结果 |
预签约错误代码 | contract_err_code | string[1,32] | 否 | 预签约错误代码 |
预签约错误描述 | contract_err_code_des | string[1,32] | 否 | 预签约错误描述 |
以下字段在return_code 和result_code都为SUCCESS的时候有返回
参数名 | 变量 | 类型[长度限制] | 必填 | 描述 |
---|---|---|---|---|
签名 | sign | string[1,32] | 是 | 详见签名生成算法 |
公众账号id | appid | string[1,32] | 是 | 微信支付分配的公众账号id |
商户号 | mch_id | string[1,32] | 是 | 微信支付分配的商户号 |
预支付交易会话标识 | prepay_id | string[1,64] | 是 | 微信生成的预支付回话标识,用于后续接口调用中使用,该值有效期为2小时. |
交易类型 | trade_type | string[1,16] | 是 | 调用接口提交的交易类型,取值如下:JSAPI,NATIVE,APP,MWEB |
二维码链接 | code_url | string[1,64] | 否 | trade_type为NATIVE是有返回,可将该参数值生成二维码展示出来进行扫码支付 |
模板id | plan_id | int | 否 | 商户在微信商户平台设置的代扣协议模板id |
请求序列号 | request_serial | int 64 | 否 | 商户请求签约时的序列号,商户侧须唯一,禁止使用0开头 |
签约协议号 | contract_code | string[1,64] | 否 | 商户请求签约时传入的签约协议号,商户侧须唯一 |
用户账户展示名称 | contract_display_account | string[1,64] | 否 | 签约用户的名称,用于页面展示 |
支付跳转链接 | mweb_url | string[1,64] | 否 | mweb_url为拉起微信支付收银台的中间页面,可通过访问该url来拉起微信客户端,完成支付,mweb_url的有效期为5分钟。 |
商户订单号 | out_trade_no | string[1,32] | 是 | 商户订单号 |
返回示例:
正常示例
错误码
错误码 | 描述 | 解决方案 |
---|---|---|
SIGN_ERROR | 签名错误 | 验证签名算法 |
PARAMETER FAIL | 参数错误 | 验证参数 |
XML FAIL | XML格式错误 | 检查XML格式 |
RESULT NULL | 查询为空 | 传入正确查询参数 |
MERCHANT PERMISSION ERROR | 受理商户没有权限 | 确认商户权限 |
INVALID PLAN_ID | 签约模板无效 | 检查正确模板id |
CONTRACT_CODE DUPLICATION | 该签约号已存在 | contract_code已经被签约,请传入不重复的签约号 |
MERCHANT AUTHORITY ERROR | 商户权限校验失败 | 联系相关接口人确认委托代扣权限 |