手机版

谈谈卡卷签名的坑

时间:2021-12-11 来源:互联网 编辑:宝哥软件园 浏览:

最近在做小程序卡卷,真的是一个接一个。不仅网上信息不多,官方文件更让人摸不着头脑。花了几天时间才完成。这里谈一谈在这个过程中遇到的坑。基本上,90%的坑都在签名上。卡卷签名中主要使用了以下参数:api_ticket(临时票证调用与卡卷凭证相关的接口)时间戳(时间戳,单位:秒)card_id(创建卡卷后获得的卡卷id)代码(卡卷凭证代码代码,相当于用户收到的卡卷的卡卷号)openid(指定接收用户的opeind)nonce_str (32位随机字符串)由于我是在微信公众平台上创建的卡卷,所以不需要代码和openid,所以api_ticket,时间戳在公共平台上创建卡卷时,可以看到Card_id。不用说,时间戳、nonce_str和随机数的生成非常简单。这里强调的是api_ticket。获取api_ticket很麻烦。首先,我们需要获取access_token,然后用access_token交换api_ticket。access_token的接口地址如下聊一聊卡卷签名的那些坑(图1)

重点是。我在这里被困了几天。我们需要在请求界面添加appid和secret,但是这里使用的是微信官方账号的appid和secret!微信官方账号的!微信官方账号的!重要的事情说三遍,记住是微信官方账号的appid,不是小程序的!还有一点,要获取access_token的服务器地址,必须先加入微信官方账号白名单,否则会提示无法获取。在微信公众平台点击【安全中心】,看到ip白名单选项,在里面添加你服务器的ip地址。哦,对了,开发者密码要在启用Ip白名单之前启用。这是在【基本配置】中,IP白名单只能在启用开发者密码后添加地址。好的,通常我们应该能够获得access_token,然后我们需要把它换成api_ticket。api_ticket的接口地址如下聊一聊卡卷签名的那些坑(图2)

这里值得注意的是,短时间内频繁调用两个接口可能会受到限制,所以api_ticket在获取后要进行缓存,避免重复调用接口,api_ticket的有效期为2小时。好了,这里用来签名的参数全部完成,然后生成签名。官方说明如下聊一聊卡卷签名的那些坑(图3)

贴自己的代码,PHP端聊一聊卡卷签名的那些坑(图4)

最后三个参数将作为wx的值返回给applet。addcard()-card list-card XT。当然,在赋值之前,我们必须将这三个参数json序列化为字符串。Cardext接收字符串而不是对象。所以在这里,卡卷的过程基本是这样的。总结几个需要注意的点:获取access_token时,使用的appid是微信官方账号的,而不是小程序的服务器ip地址,需要添加到微信公众平台的ip白名单api_ticket中。获取之后,应该缓存API _ ticket,因为频繁调用接口可能会受到限制。在小程序wx.addCard()中,cardExt参数是一个字符串而不是一个对象,所以签名和其他参数应该转换成字符串,然后赋值。cardExt字符串中的字段参数必须与签名中涉及的字段参数一致(除了card_id,用wx写。addcard ()-cardlist-cardid)。基本上就是这样。最后,吐槽官方开发文件真的很乱,有些地方还不清楚!

版权声明:谈谈卡卷签名的坑是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。