需要传cardExt.code,并同时code需要参加签名。
可以将本系统卡券和微信卡券保持一致,但是无法通过微信渠道发放卡券。
采用微信的卡券体系,不需要传入code和openid
这种是将系统的卡券库存导入微信,可通过微信渠道发放卡券,但是微信小程序领取的时候无法填写cardExt.code。
由于需求是系统卡券已领取,同步到微信卡券,导致系统卡券与微信卡券不一致。
还有一种解决思路是先让微信领取,然后采用微信通知,给本系统用户添加卡券号
自定义code模式需要传入
根据创建卡券bind_openid的填写值来进行处理,即使不指定其实也是当前用户领取
目前未发现用户,可能跟用户领取次数限制有关
可以不填
必填,当前时间戳,精确到秒,nowTimestamp/1000
记住与参加签名的必须一致,不然参数错误
建议必传
设置卡券领取的时间,和本系统保持一致最好
系统卡券在11号被领取,然后用户在12号希望领取到微信卡包,这个时候需要填写11号的时间
场景值,未使用
先排序,后加密,需要参加签名的参数,必须也要在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)
}
})
}