小程序纯签约
更新时间:2026.01.20||
商户可以通过请求此接口唤起小程序委托代扣的签约页面
| 1.用户从商户小程序发起签约请求 (商户需确认委托代扣权限已开通,模板已审批通过,小程序APPID与商户号已绑定)。 2.商户将签约请求参数按照规则拼接之后,通过小程序跳转,向签约小程序发起签约请求。 3.用户在微信签约小程序选择支付方式完成签约。 4.微信将签约结果返回给商户。 |
|
接口说明
请求URL: wx.navigateToMiniProgram(OBJECT)接口
接口兼容: iOS 微信客户端 6.5.9 版本开始支持,Android 客户端即将在 6.5.10 版本开始支持
OBJECT参数说明
|
微信签约小程序appid | appId | string[1,32] | 是 | 固定值 :wxbd687630cd02ce1d 请在小程序配置文件app.json的配置项navigateToMiniProgramAppIdList中增加此appid 示例值:wxbd687630cd02ce1d |
场景信息传递给小程序的数据 | extraData | object | 是 | 签约的请求参数,详情见extraData字段详细说明。 |
 | 场景信息传递给小程序的数据 | | |
应用ID | appid | string[1,32] | 是 | 直连商户申请的公众号或移动应用appid。 示例值:wxcbda96de0b165486 | 商户号 | mch_id | string[1,32] | 是 | 商户号是商户在微信申请微信支付成功后分配的账号ID,登录平台为pay.weixin.qq.com 示例值:1200009811 | 模板id | plan_id | string[1,28] | 是 | 协议模板id,设置路径见开发步骤。 示例值:12535 | 签约协议号 | contract_code | string[1,128] | 是 | 商户侧的签约协议号,由商户生成,只能是数字、大小写字母的描述且在同一个商户号下唯一。 示例值:100000 | 请求序列号 | request_serial | int 64 | 是 | 商户请求签约时的序列号,要求唯一性。禁止使用0开头,序列号主要用于排序,不作为查询条件,纯数字,范围不能超过int64的范围(9223372036854775807)。 示例值:1000 | 用户账户展示名称 | contract_display_account | string[1,128] | 是 | 签约用户的名称,用于用户签约页面的“开通账号”处进行展示,参数值不支持UTF8非3字节编码的字符,例如表情符号,所以请勿传微信昵称到该字段 示例值:微信代扣 | 回调通知url | notify_url | string[1,256] | 是 | 用于接收签约成功消息的回调通知地址,以http或https开头,通知url必须为外网可访问的url,不能携带参数。 请对notify_url参数值进行encode处理,注意是对参数值进行encode,例如参数为notify_url=“https://weixin.qq.com”,则需要encode的内容为https://weixin.qq.com。 携带参数类型需查看【回调通知的接口文档】 示例值:https://weixin.qq.com | 签名 | sign | string[1,32] | 是 | 详见签名生成算法 示例值:C380BEC2BFD727A4B6845133519F3AD6 | 时间戳 | timestamp | int 64 | 是 | 系统当前时间,10位 示例值:1414488825 | 商户侧用户标识 | outerid | string | 否 | 用户在商户侧的标识 示例值:1414488825 |
|
|
打开小程序的页面路径 | path | string[1,64] | 是 | 固定值:pages/index/index 示例值:pages/index/index |
接口调用成功的回调函数 | success | Function | 是 | - |
接口调用失败的回调函数 | fail | Function | 是 | - |
接口调用结束的回调函数 | complete | Function | 是 | 调用成功、失败都会执行 |
示例代码

1wx.navigateToMiniProgram({
2 appId:'wxbd687630cd02ce1d',
3 path:'pages/index/index',
4 extraData:{
5 appid:'wx426a3015555a46be',
6 contract_code:'122',
7 contract_display_account:'张三',
8 mch_id:'1223816102',
9 notify_url:'https://www.qq.com/test/papay',
10 plan_id:'106',
11 request_serial:123,
12 timestamp:1414488825,
13 sign:'FF1A406564EE701064450CA2149E2514'
14 },
15success(res) {
16 // 成功跳转到签约小程序
17},
18fail(res) {
19 // 未成功跳转到签约小程序
20}
21})
用户签约完成之后,会跳转回商户小程序,可通过onShow(OBJECT)所携带的参数判断判断用户由签约小程序返回商户小程序,OBJECT返回参数请查看小程序开发文档onShow参数说明
|
返回码 | return_code | string[1,16] | 是 | 客户端小程序收到的签约结果 SUCCESS:签约成功 FAIL:签约失败 示例值:SUCCESS |
错误信息 | return_msg | string[1,128] | 是 | 签约失败的错误信息 示例值: |
委托代扣协议id | contract_id | string[1,32] | 是 | 签约成功后微信返回的委托代扣协议id 示例值:201710180325670965 |
| 注意:如果用户正常点击微信签约页的确定按钮返回商户小程序,那么会返回extraData ; 如果用户点击浏览器左上角的返回,则不返回extraData |
|
示例代码

1App({
2 onShow(res) {
3 if (res.scene === 1038) {
4 const { appId, extraData } = res.referrerInfo
5 if (appId == 'wxbd687630cd02ce1d') {
6 if (typeof extraData == 'undefined'){
7
8
9 return;
10 }
11 if(extraData.return_code == 'SUCCESS'){
12
13
14 var contract_id = extraData.contract_id
15 return;
16 } else {
17
18
19 return;
20 }
21 }
22 }
23 }
24})