用户
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,登录网站

小程序社区 首页 教程 实战教程 查看内容

微信小程序添加卡券跳坑

Rolan 2020-5-18 00:31

引言应公司业务需求,用户可以在我方小程序里面领取合作方卡券到卡包。开发过程中发现,微信对于卡券的文档说明过于简单凌乱,以至于中间遇到了很多坑,这里做一个整理记录一下。需求这次需求主要是,合作方创建卡券 ...

引言

应公司业务需求,用户可以在我方小程序里面领取合作方卡券到卡包。开发过程中发现,微信对于卡券的文档说明过于简单凌乱,以至于中间遇到了很多坑,这里做一个整理记录一下。

需求

这次需求主要是,合作方创建卡券,在我方小程序进行领取。这篇文章是基于卡券已经成功创建的基础上进行开发的。如何创建卡券,请参考 微信文档-创建卡券

正文

刚接到这个需求的时候,查看了一下微信文档,发现微信提供了一个添加卡券的API

wx.addCard({
  cardList: [
    {
      cardId: '',
      cardExt: '{"code": "", "openid": "", "timestamp": "", "signature":""}'
    }, {
      cardId: '',
      cardExt: '{"code": "", "openid": "", "timestamp": "", "signature":""}'
    }
  ],
  success (res) {
    console.log(res.cardList) // 卡券添加结果
  }
})
复制代码

乍一看,感觉很简单,只要传cardId和cardExt就好了。

但是cardExt是什么呢?文档只是提了一句cardExt 是卡券的扩展参数,其值是一个 JSON 字符串。

看得我一脸懵逼,于是去找了公众号的官方文档,在 附录4 找到了cardExt的说明。

其他字段都比较好理解,但是signature怎么获取呢?别急,文档也做了说明

# 签名说明

1.将 api_ticket、timestamp、card_id、code、openid、nonce_str的value值进行字符串的字典序排序。

2.将所有参数字符串拼接成一个字符串进行sha1加密,得到signature。

3.signature中的timestamp,nonce字段和card_ext中的timestamp,nonce_str字段必须保持一致。
复制代码

好不容易知道签名怎么生成,结果又出现了 api_ticket 这个不知道从哪里冒出来的参数。好在文档也进行了说明

卡券 api_ticket 是用于调用卡券相关接口的临时票据,有效期为 7200 秒,通过 access_token 来获取。这里要注意与 jsapi_ticket 区分开来。由于获取卡券 api_ticket 的 api 调用次数非常有限,频繁刷新卡券 api_ticket 会导致 api 调用受限,影响自身业务,开发者必须在自己的服务全局缓存卡券 api_ticket 。

1.参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):../15/54ce45d8d30b6bf6758f68d2e95bc627.html

2.用第一步拿到的access_token 采用http GET方式请求获得卡券 api_ticket(有效期7200秒,开发者必须在自己的服务全局缓存卡券 api_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card
复制代码

简单来说就是get请求这个地址获取api_ticket

https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=创建卡券公众号的ACCESSTOKEN&type=wx_card ,

ok,api_ticket已经拿到了,下面就是生成签名了。这里微信提供了一个 官方校验工具 做调试,把参数 (这里注意,timestamp的单位是秒,不是毫秒) 都填进去就可以生成签名了

拿到签名之后,再把它套进 cardExt 对象进行序列化,然后再放入 wx.addCard 里面就可以了

到这里基本添加卡券所需要的参数就都能获取到了,顺利的话,应该可以在小程序顺利调用添加卡券的API,得到以下页面

常见错误

如果按照以上步骤进行依旧不能成功调用的话,别急,微信还出了一个文档总结了常见错误: 卡券签名错误排查方法 大家跟着文章说到的问题慢慢排查,基本都能成功的。

鲜花
鲜花
鸡蛋
鸡蛋
分享至 : QQ空间
收藏
原作者: 火锅爱好者 来自: 掘金