關(guān)于如何添加卡券到微信卡包的坑

首先,已經(jīng)讀取到了cardId,此時需要去生成簽名,注意,此時已經(jīng)使用config配置,即添加了addCard,openCard等方法,此處略過,本文主要講添加卡包用到的簽名

1.生成簽名

(注:屬于前端模擬,最好由后端生成)

var cardId = 'xxxxxxxxxxxx'
  var timestamp = '1514292155'
  var api_ticket = 'xxxxxxxxxxxxxxxxx'
  var nonceStr = '1qaz2wsx'
  var arr = new Array(api_ticket,nonceStr, timestamp, cardId);

  // 轉(zhuǎn)為字符串
  arr = arr.map(function(n) {
    return n.toString();
  });

  // 字典序排序
  arr = arr.sort();

  // 拼接為字符串
  var str = arr.join("");

  // 進行SHA1加密,sha1算法需自行實現(xiàn)
  var signature = hex_sha1(str)
  console.log('signature:', signature)

總共需要四個參數(shù),其中的api_ticket需要通過接口返回,第一步要獲取token,第二步,通過獲取的token獲取ticket,獲取token通過appid和secret,獲取ticket通過以下的方法

// 獲取ticket
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=xxx&&type=wx_card
// 獲取token
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

然后就可以生成簽名了

2.調(diào)用addCard

 var signature = 'xxxxxxx'
        var timespan = '1514292155'
        var nonceStr ='1qaz2wsx'
        var api_ticket = 'm7RQzjA_ljjEkt-JCoklRB7LfGKT7x8UsKpnVAopKOzvW4eFSq6HSbKKxAOjvlQ0AYy0tq5rprFdtFfy_WsPWw'
        var ext = '{"api_ticket":"'+api_ticket+'","card_id":"'+cardId+'","nonce_str":"'+nonceStr+'","timestamp": "'+timespan+'", "signature":"'+signature+'"}'
        console.log('extextextextextext:', ext)
        wx.addCard({
          cardList: [
            {
              cardId: cardId,
              cardExt:ext
            }
          ],
          success: function (res) {
            
          },
          cancel: function (res) {
            alert(JSON.stringify(res))
          }
        })

這里有一點需要注意,card_id必須和生成簽名的保持一致,timestamp必須和生成簽名的保持一致,nonce_str必須和生成簽名的保持一致,注意是用下劃線連接,另外網(wǎng)上查到timespan必須是以秒為單位,我在這邊遇到的坑就是把nonce_str寫成了nonceStr,一直報簽名錯誤

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 久違的新文章發(fā)布。。我的鍋這篇文章是在寫的太長,可以慢慢看一下,偽代碼,畢竟簡書上面,望大家見諒!!!先看官方文檔...
    wyatt_plus閱讀 1,654評論 0 2
  • 開發(fā)前首先我們要知道一些概念 各公眾號區(qū)別:1、訂閱號:為媒體和個人提供一種信息傳播方式,主要偏于為用戶傳達資訊(...
    CoderZS閱讀 3,227評論 1 19
  • 微信服務(wù)號開發(fā) 整體流程 域名報備,服務(wù)器搭建 Python開發(fā)環(huán)境和項目的初始化搭建; 微信公眾號注冊及開發(fā)模式...
    飛行員suke閱讀 4,593評論 0 14
  • 中央“八項規(guī)定”以來,重拳反腐,倡導(dǎo)儉廉。起初很多單位都會錯了意,好幾年連年終散伙的“尾牙”也沒了,同時把過年過節(jié)...
    疏影橫斜閱讀 669評論 2 2
  • 畢業(yè)之后我留在南京,說這句話的時候就像自己已經(jīng)在南京待了很久一樣,實際上我剛畢業(yè)了一個月。我在一家很小很小的外貿(mào)公...
    Kyoya09閱讀 509評論 0 2