小程序领取微信卡券到卡包

Updated on with 0 views and 0 comments

微信卡券相关文档

由于微信卡券的文档部分对开发者无帮助,整理以下地址方便查找

创建卡券文档

小程序领取卡券详细文档

卡券签名测试地址

领取错误排查地址

个人详解

前置知识

code模式

image.png

自定义code模式

需要传cardExt.code,并同时code需要参加签名。

可以将本系统卡券和微信卡券保持一致,但是无法通过微信渠道发放卡券。

非自定义code模式

采用微信的卡券体系,不需要传入code和openid

预存code模式 | 导入code模式

这种是将系统的卡券库存导入微信,可通过微信渠道发放卡券,但是微信小程序领取的时候无法填写cardExt.code。

由于需求是系统卡券已领取,同步到微信卡券,导致系统卡券与微信卡券不一致。

还有一种解决思路是先让微信领取,然后采用微信通知,给本系统用户添加卡券号

cardExt

1608693442778.jpg

code

自定义code模式需要传入

openid

根据创建卡券bind_openid的填写值来进行处理,即使不指定其实也是当前用户领取

目前未发现用户,可能跟用户领取次数限制有关

可以不填

timestamp

必填,当前时间戳,精确到秒,nowTimestamp/1000

记住与参加签名的必须一致,不然参数错误

nonce_str

建议必传

fixed_begintimestamp

设置卡券领取的时间,和本系统保持一致最好

系统卡券在11号被领取,然后用户在12号希望领取到微信卡包,这个时候需要填写11号的时间

outer_str

场景值,未使用

signature

先排序,后加密,需要参加签名的参数,必须也要在cardExt传入。

当然cardId和apiTicket不需要在cardExt里面

代码片段

          if (productPromoCodeId && cardId && apiTicket) {
            generateCardSignature_option.body.apiTicket = apiTicket
            //generateCardSignature_option.body.cardId = "piDWO5i3zLNWFeuvxCi4BdG8N9nA"
            generateCardSignature_option.body.cardId = cardId
            generateCardSignature_option.body.code = productPromoCodeId
            generateCardSignature_option.body.nonceStr = nonceStr
            //generateCardSignature_option.body.openId = WeChatOfficialAccountsOpenId
            generateCardSignature_option.body.timestamp = '' + parseInt(new Date().getTime() / 1000)

            let generateCardSignature_result = await O3Odata.submit(generateCardSignature_option)
            if (generateCardSignature_result.statusCode < 300) {
              signature = util.Array_get(generateCardSignature_result, 'generateCardSignature_result.body.value')
              let timestamp = generateCardSignature_option.body.timestamp
              console.log(productPromoCodeId,"我的领取卡券")
              let cardExt111 = {
                code:productPromoCodeId,
                //openid:WeChatOfficialAccountsOpenId,
                fixed_begintimestamp:timestamp,
                timestamp:timestamp,
                nonce_str:nonceStr,
                signature:signature
              }
              let cardExtStr = JSON.stringify(cardExt111);
              wx.addCard({
                cardList: [
                  {
                    cardId:cardId,
                    //cardId: "piDWO5i3zLNWFeuvxCi4BdG8N9nA",
                    cardExt: cardExtStr
                  }
                ],
                success: async add_res => {
                  console.log(add_res.cardList) // 卡券添加结果
                },
                fail: async fail_res => {
                  console.log(fail_res)
                }
              })
            }

支持作者或白嫖

WechatIMG28.jpeg


标题:小程序领取微信卡券到卡包
作者:Zcoin
地址:https://zzzerp.cn/articles/2020/12/23/1608696334599.html