直连商户JSAPI场景预约扣费类型签约的预签约API

更新时间:2023.12.21

# 接口说明

商户可调用本接口预先指定签约信息,生成预签约会话及对应的跳转URL,引导用户在微信内访问跳转签约流程的URL跳转至微信支付的页面。用户可在微信支付客户端内完成签约流程;

若用户同意本次流程,则微信支付会通过商户指定的回调地址通知签约结果;若用户未同意或者流程执行失败,则不通知签约结果。

商户签约协议号在进行签约后不能在重复使用,包括用户确认签约后因业务规则限制没有完成签约的协议、签约成功后已经解约的协议及签约成功生效中的协议。商户可通过查询协议接口确认商户侧协议号是否已经使用。

注意:商户获取的签约会话有效期为10分钟。

# 跳转说明

1、商户在完成预签约后获得redirect_url,需要在前端跳转到redirect_url,在商户的前端页面<head>处需要添加声明<meta name="referrer" content="no-referrer-when-downgrade">

2、此外,不能使用window.location.replace(redirect_url)的方式跳转,而要通过window.location.href = redirect_url的方式跳转。 签约结束或中断时,如果获取到的referrer包含路径,会通过window.location.replace()跳转,跳转referrer url时会自动带上参数from_wxpay=1,否则会通过window.history.back()返回上一页,此时没有参数from_wxpay=1

# 接口说明

支持商户:
【普通商户】
请求方式:
【POST】/v3/papay/scheduled-deduct-sign/contracts/pre-entrust-sign/jsapi
请求域名:
【主域名】
https://api.mch.weixin.qq.com
使用该域名将访问就近的接入点
【备域名】
https://api2.mch.weixin.qq.com
使用该域名将访问异地的接入点 ,指引点击查看

# 请求参数

    Header HTTP头参数
  • Authorization 必填 string
    请参考 签名认证 生成认证信息
  • Accept 必填 string
    请设置为 application/json
  • Content-Type 必填 string
    请设置为 application/json
    Body 包体参数
  • appid 必填 string(32)
    【应用ID】 商户在微信申请的公众号或移动应用AppID
  • openid 选填 string
    【用户在直连商户应用下的用户标示】 JSAPI和小程序签约必填,对应的用户需与实际在微信客户端中进行签约的用户一致。
  • plan_id 必填 integer
    【委托代扣模板ID】 委托代扣模板ID,申请见接入指引中的接入流程相关内容。
  • out_contract_code 必填 string(32)
    【商户签约协议号】 商户侧的签约协议号,商户侧需保证唯一性。只能是数字、大小写字母的组合
  • contract_display_account 必填 string(32)
    【用户账户展示名称】 签约用户的名称,用于页面展示,在签约时由商户传入。
  • contract_notify_url 必填 string(256)
    【签约结果通知地址】 接收微信支付异步通知回调地址,通知URL必须为HTTPS且可直接可访问的URL,不能携带参数。
  • out_user_code 选填 string(32)
    【商户侧用户标识】 在多账号签约场景下使用。一个用户微信账号可能会在商户系统中存在多个账号,并开通多个签约协议。商户可以使用商户侧用户标识区分商户系统中的不同用户账号。注:使用多账号签约规则时,微信支付系统将限制相同的商户侧用户标识只能与同一个委托代扣模板签署一份生效中的协议。
  • deduct_schedule 选填 object
    【用于预约扣费的预约信息】 用于预约扣费的预约信息,在使用预约扣费类型的模板进行预签约时,该值必填。
    • 属性

请求示例

POST

# 应答参数

    200OK
  • redirect_url 必填 string(512)
    【跳转签约流程的URL】 用于微信客户端访问,跳转进入签约流程的URL链接。

应答示例

200 OK

# 错误码

# 公共错误码

状态码 错误码 描述 解决方案
400 PARAM_ERROR 参数错误 请根据错误提示正确传入参数
400 INVALID_REQUEST HTTP 请求不符合微信支付 APIv3 接口规则 请参阅 接口规则
401 SIGN_ERROR 验证不通过 请参阅 签名常见问题
500 SYSTEM_ERROR 系统异常,请稍后重试 请稍后重试

# 业务错误码

状态码 错误码 描述 解决方案
400 INVALID_REQUEST 无效请求 请根据接口返回的详细信息检查您的程序
403 NO_AUTH 商户暂无权限使用此功能 请开通商户号权限。请联系产品或商务申请
429 FREQUENCY_LIMITED 频率超限 请降低请求接口频率
500 SYSTEM_ERROR 接口返回错误 系统异常,请用相同参数重新调用