wx.addCard 卡券添加显示签名错误
wx.addCard能够正常显示卡卷,但是领取按钮显示 “签名错误”
签名算法如下:
public function getCard( $card_id , $sessionId ){ //获取openid $openid = $this ->openId( $sessionId ); //获取ticket $res = $this ->getApiTicket(); //生成签名 $now =time(); $timestamp = $now ; $nonceStr = $this ->createNonceStr(8); $arr = array ( $card_id , $res [ 'ticket' ], $nonceStr , $openid , $timestamp ); //组装参数 asort( $arr , SORT_STRING); $sortString = "" ; foreach ( $arr as $temp ){ $sortString = $sortString . $temp ; } $signature = sha1( $sortString ); $card = array ( 'timestamp' => $timestamp , 'signature' => $signature , 'cardId' => $card_id , 'ticket' => $res [ 'ticket' ], 'nonce_str' => $nonceStr ); return $card ; } |
小程序js
wx.request({ url: url + '/api/app/getAppCard' , data:{ session_id : sessionId, card_id: 'pwJno0xiCS3HfuSpQoJtTCtEXODU' }, success: function (res) { var card_info = res.data.cardArray console.log(res.data.cardArray) wx.addCard({ cardList: [ { cardId: card_info.cardId, cardExt: '{"code": "", "openid": "", "timestamp": "' +card_info.timestamp+ '", "signature":"' +card_info.signature+ '"}' } ], success: function (res) { console.log(res) // 卡券添加结果 }, fail: function (res) { console.log(res) }, complete: function (res) { console.log(res) } }) } }) |