问题:在开发者工具上,sucess回调cardExt是正常,但是在真机预览上就都是空的。如果只领取一张,回调是正常的,多张就不可以,但是返回的isSuccess都是true。微信卡包中也能看到刚领取的卡券。再次打开addCard显示的都是已领取。异常都在这个真机cardExt返回为空。
真机:iphone 8, iphone 7p, 小米(型号不详)
需求:后端需要用cardExt里面的code 去做后台确认卡券已被领取。现在想到的就是拿返回的加密code去解密出原来的code,终究不是上策。有其他发方案吗。
返回的数据截图:
前端代码:
// 一键领取全部优惠券 collectAllCoupons(){ let wxCardList = []; let idList = [];
this .canCollectCouponList.forEach(item => { let { timestamp, nonce_str, card_id, code, openid, signature } = item.wx_info;
wxCardList.push({ cardId: card_id, cardExt: JSON.stringify({ timestamp, nonce_str, card_id, code, openid, signature, }), });
idList.push({id: item.id});
}); console.log( 'wxCardList' ); console.log(wxCardList); this .addWxCard(wxCardList, idList);
// 添加到微信卡包 addWxCard(wxCardList, idList){ wx.addCard({ cardList: wxCardList, success: (res) => { console.log('res'); console.log(res); let cardList = res.cardList; let toUpdateCouponsList = []; cardList.forEach((item, index)=>{ let cardExt = JSON.parse(item.cardExt); wxCardList.forEach(item2 =>{ if(cardExt.code == JSON.parse(item2.cardExt).code && item.isSuccess){ toUpdateCouponsList.push({ code: cardExt.code, id: idList[index].id, }); } }) });
console.log('toUpdateCouponsList'); console.log(toUpdateCouponsList); if(toUpdateCouponsList.length > 0){ console.log('核销'); this.$api.coupon_sureGot(toUpdateCouponsList).then(res => { this.getCoupon(); //刷新卡券 //正式 wx.showToast({ title: res.data.msg, icon: 'none', duration: 1500, }); }); } }, fail: (err) => { console.log(err) }, }); }, |
plan B:把微信返回的加密后的code,传给后端,后端去找微信接口换回原来的code。
plan C: addCard success返回的cardList 中的cardExt跟我前端post给微信后台的cardExt的顺序是一致的, 不太严谨的话,依次按顺序把加密前的code拿出来也是可以的。