微信小程序领取激活会员卡

7,299 阅读2分钟

引言

好不容易从添加卡券中跳坑出来了(详见上一篇微信小程序添加卡券跳坑),甲方爸爸才说,这不是他们要的(what??说好的只是领取卡券呢??)他们想要的是在小程序领了会员卡,还能让用户激活去填写信息。行吧,谁让你是爸爸。

需求

要实现在小程序点击了领取会员卡之后,用户跳转去激活会员卡并且填写信息的功能,流程如下图。

正文

微信小程序文档中虽然没有说到这个功能,但是查看公众号文档,在卡券-小程序打通做了介绍。

微信提供了一个开卡组件,我们只需要跳转到官方的开卡小程序就可以了。

wx.navigateToMiniProgram({
    appId: ‘wxeb490c6f9b154ef9’, // 固定为此appid,不可改动
    extraData: data, // 包括encrypt_card_id outer_str biz三个字段,须从step3中获得的链接中获取参数
    success: function() {    },
    fail: function() {   },
    complete: function() {   } 
})

哟吼,这一看挺简单的呀,不就是小程序间的跳转吗。且慢,extraData要传的data是什么?你知道吗?

当然,文档中的接口说明对这些开卡参数怎么获取也做了说明。

文档的介绍也比较清晰了,这里就不赘述了。通过这一步,我们能得到以下的url https://mp.weixin.qq.com/bizmall/activatemembercard?action=preshow&&encrypt_card_id=xxx&&outer_str=xxx&biz=xxx&#wechat_redirect

这不就有了我们需要的encrypt_card_id outer_str biz三个字段了吗。然后把上面到的url做urldecode处理之后,拿到这三个参数,原封不动填入data里面,就可以啦~

还有个地方需要注意的是,文档规定开卡的小程序appid必须为’wxeb490c6f9b154ef9’,这个小程序并不是我们自己的小程序,所以需要进行绑定

做完这一步就能成功跳转到开卡组件啦~

当用户跳转操作完跳转回到我们自己小程序之后,可以通过在App.onShow里判断从会员开卡小程序返回的数据data

1.判断data.referrerInfo.appId是否为开卡小程序appId 'wxeb490c6f9b154ef9',如果不是则中止判断
2.判断是否有data.referrerInfo.extraData是否有数据,如果没有,表示用户未激活直接左滑/点返回键返回,或者用户已经激活
3.若用户激活成功,可以从data.referrerInfo.extraData中获取activate_ticket card_id code参数用于下一步操作

做到这一步之后,这个方案又被毙了,果然还是那个不会让我们失望的甲方爸爸。