看了一下文档,大概是这样一个函数,可以让用户领取会员卡
wx.navigateToMiniProgram({appId: 'wxeb490c6f9b154ef9', //固定为此 appid,不可改动extraData: data, // 包括 encrypt_card_id, outer_str, biz三个字段,须从 step3 中获得的链接中获取参数success: function() {},fail: function() {},complete: function() {}
})
这里的 extraData: data, // 包括 encrypt_card_id, outer_str, biz三个字段,须从 step3 中获得的链,是关键。
extraData,值文档说的第三步,在文档里面很难找到第三步获取开卡组件参数内容。也找不多哪个接口有返回这三个参数 encrypt_card_id, outer_str, biz。
文档上面有个开卡组件文档,我们打开
https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1479824356&version=1&lang=zh_CN&platform=2&token=
既然开卡组件文档没有,那我们去公众号文档,会员卡相关文档看下。
找到卡券-小程序打通
https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1499332673_Unm7V
红色箭头返回的URL,就带了我们需要的encrypt_card_id, outer_str, biz 三个参数, 只是文档没有说明,这个是url里面带的值,而不是返回的参数,所以给查找带来了麻烦。
(这里之前记得先调用公众号access_token接口,然后去公众号后台拿到卡片ID)
真的拿到了,我们需要的三参数, 然后通过url解析,得到参数。
wx.navigateToMiniProgram({appId: 'wxeb490c6f9b154ef9', //固定为此 appid,不可改动extraData: data, // 包括 encrypt_card_id, outer_str, biz三个字段,须从 step3 中获得的链接中获取参数success: function() {},fail: function() {},complete: function() {}
})
小程序里做个按钮,领取会员卡。点击事件执行上面代码
提示此小程序未绑定公众账号
此时我们登陆公众账号,绑定这个小程序。
绑定后,继续提示错误
看英文的意思是说小程序wxeb490c6f9b154ef9未绑定此公众号。 这里wxeb490c6f9b154ef9 并不是我们自己的一个小程序appid ,而是文档规定必须填写的wxeb490c6f9b154ef9,这个是官方的一个小程序appid, 原理是我们执行调整小程序,跳转到官方小程序领取会员卡。
比较麻烦的是,绑定官方开卡这个小程序,需要官方同意才可以,这里添加了绑定,官方2天没同意,已经失效。
到此,就实现了微信小程序,跳转到卡卷小程序,领取会员卡的开发过程。
注意:
我这里是后台请求的https://api.weixin.qq.com/card/membercard/activate/geturl?access_token= ACCESS_TOKEN,然后将返回值原封不动的传给前端,如果是前端请求就得拿到card_id;
然后截取返回的“url”拿到:
encrypt_card_id,outer_str,biz;
其中encrypt_card_id,biz需要url编码(最好全部编码)
微信小程序使用decodeURIComponent()
然后三个参数组成对象赋值给dataurl后点击即可跳转会员卡;
注意是对象赋值,extra-data只接受对象,不用JSON.stringify()
传其他数据类型会是null
还有,需要再app.json中配置 navigateToMiniProgramAppIdList
真机测试
开卡成功后在 app.js 里用 onShow(data) 接收参数,访问激活链接
- navigateToMiniProgram接口即将废弃,新版本中请使用navigator组件来使用此功能
- 不管是navigator组件 还是 navigateToMiniProgram接口都需要在app.json中配置,才能跳转到开卡小程序
"navigateToMiniProgramAppIdList": [ "wxeb490c6f9b154ef9" ],