1. 程式人生 > >微信jssdk批量新增卡券介面(踩坑經驗)

微信jssdk批量新增卡券介面(踩坑經驗)

1)首先是官方介面文件:

2)坑一:接入準備

  1、需要在微信公眾號平臺裡配置“JS介面安全域名”,位置:公眾號設定-》功能設定-》JS介面安全域名;

  2、配置“網頁授權域名”(獲取openid時需要用到,怎麼獲取這裡就不說了),位置同上:公眾號設定-》功能設定-》網頁授權域名

3)坑二:api_ticket、signature

  1、新增卡券需要的api_ticket和signature(簽名),和預設的 jsapi_ticket、signature 都不同,最坑的是,官方的jssdk裡還沒相關的demo,所以要自己寫,獲取方法如下:

  

  整合進jssdk.php,大概是這樣子

複製程式碼
  
  public function getWxCardApiTicket(){
    // api_ticket 應該全域性儲存與更新,以下程式碼以寫入到檔案中做示例
    $data = json_decode($this->get_php_file("wxcard_api_ticket.php"));
    if ($data->expire_time < time()) {
      $accessToken = $this->getAccessToken();
      // 如果是企業號用以下 URL 獲取 ticket
      $url    = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$accessToken
}&type=wx_card"; $res = json_decode($this->httpGet($url)); $ticket = $res->ticket; if ($ticket) { $data->expire_time = time() + 7000; $data->api_ticket = $ticket; $this->set_php_file("wxcard_api_ticket.php", json_encode($data)); } }
else { $ticket = $data->api_ticket; } return $ticket; }
複製程式碼

  2、卡券簽名大概是這樣子,根據自己專案的邏輯非同步請求計算簽名(假設是xxx.php)

複製程式碼
$jssdk      = new JSSDK("appId", "appSecret");
$api_ticket = $jssdk->getWxCardApiTicket();

$code = '';
$arr = array($api_ticket, $code, $_GET['timestamp'], $_GET['nonceStr'], $_GET['card_id'], $_SESSION['openid']); sort($arr, SORT_STRING); $signature = sha1(implode($arr)); echo json_encode(array('signature'=>$signature)); exit;
複製程式碼

4)坑四:js配置

  1、js的config配置(jsApiList)需要新增 'addCard';

  2、addCard方法裡的cardExt裡需要 'nonce_str' 引數(官方的demo.js裡並沒有nonce_str引數,但親測沒這個引數會報簽名錯誤!);

  3、cardExt裡引數和要後臺計算簽名的引數保持一致(時間戳也要保持一致);

使用card_id非同步計算簽名並呼叫新增卡券方法的示例:

複製程式碼
function addCard(card_id){
    var data={'opendid':'<{$smarty.session.openid}>','card_id':card_id,'timestamp':'<?php echo $signPackage["timestamp"];?>','nonceStr':'<?php echo $signPackage["nonceStr"];?>'};
    $.get('xxxx.php',data,function(res){
        wx.addCard({
            cardList: [
                {
                    cardId: card_id,
                    cardExt: '{"code":"", "openid": "<{$smarty.session.openid}>", "nonce_str":"<?php echo $signPackage["nonceStr"];?>","timestamp": "<?php echo $signPackage["timestamp"]; ?>", "signature":"'+res.signature+'"}'
                }
            ],
            success: function (res) {
                alert('已新增卡券:' + JSON.stringify(res.cardList));
             },
            cancel: function (res) {
                alert(JSON.stringify(res))
            }
        });
    },'json');
}
複製程式碼

5)坑五:注意變數名大小寫,有無下劃線等等

原文出處:http://www.cnblogs.com/tujia/p/6066522.html

相關推薦

jssdk批量新增介面經驗

1)首先是官方介面文件: 2)坑一:接入準備   1、需要在微信公眾號平臺裡配置“JS介面安全域名”,位置:公眾號設定-》功能設定-》JS介面安全域名;   2、配置“網頁授權域名”(獲取openid時需要用到,怎麼獲取這裡就不說了),位置同上:公眾號設定-》功能設定-》網頁授權域名 3)坑二:ap

小程式領取 java

一、開發前準備 1:申請微信公眾號 和 微信小程式,這是兩個不同的東西,都需要單獨申請、不同的帳號; 2:微信公眾號需要開通微信卡券的功能; 3:在微信公眾號裡面去繫結小程式; 4:申請微信開放平臺,並將微信公眾號 和 微信小程式繫結到該開放平臺。(注:繫結到開發平臺下的作用只是為了

導致JSSDK 自定義分享內容介面失效的一種原因

在微信開發者工具上除錯分享介面成功,真機測試的時候卻失敗了。 後來發現是手機反應比較慢 wx.config()還未執行成功後面繫結分享按鈕事件的程式碼就開始執行了導致繫結失敗 因此在頁面載入時需

驚人!公眾平臺新增語義理解介面

微信公眾平臺新增語義理解介面 微信公眾平臺語義理解介面正式對外開放。通過語義介面,接收使用者傳送的自然語言請求,讓系統理解使用者的說話內容。 微信語義理解介面提供從使用者自然語言輸入到結構化解析的

jssdk圖片、語音開發記錄

後臺 pid for item esc 音頻 locals 動態 clas 接著上篇說的,在使用jssdk之前,需要先驗簽,也就是獲取簽名,而獲取簽名就需要幾個參數,時間戳,隨機數,token等,而token一天的獲取次數是有限的, 所以需要在項目中保存獲取到的token,

jsSDK本地除錯流程攻略nodeJs實現獲取access_token等資訊

最近想在微信平臺嵌入一個H5頁面的DEMO,並想要呼叫微信平臺的jsAPI,但這一操作需要獲取微信的認證,經過一天的不斷除錯,終於攻克了這個問題,現將思路和解決方案記錄下來,以供需要的朋友參考。 使用微信js介面需要配置檔案, wx.config({

手把手實現網頁授權和支付,附源代碼VUE and thinkPHP

nec ble 名單 ret 一次 hash 掃一掃 網頁 ada wechat github 手把手實現微信網頁授權和微信支付,附源代碼(VUE and thinkPHP) 概述 公眾號開發是痛苦的,痛苦在好多問題開發者文檔是沒有提到的,是需要你猜的. 在開發過程中翻

小程式之下拉列表實現附完整原始碼

目錄 一、效果圖 二、實現原理 三、原始碼 四、專案下載 同類文章推薦: 更多幹貨關注公眾號:   一、效果圖 二、實現原理 跟網頁的下拉列表實現是一樣的,剛剛開始預設下拉的內容的是不顯示的(display:none),然後通過點選的時

WebApi接收小程式上傳的圖片二進位制檔案流並儲存在伺服器指定路徑

找了好多天都沒找到小程式批量上傳圖片的方法,然後我現在的邏輯是: 取到上傳圖片的集合,迴圈呼叫小程式wx.UploadFile方法,依次上傳 後端取到檔案之後生成唯一MD5碼(相同的檔案生成的MD5碼是唯一的),然後取前兩位後兩位建立資料夾,儲存圖片前判斷下圖片是否存在。(

授權登入及儲存使用者資訊fastadmin開發專案

最近做了一個微信投票系統,這是第一次開發微信專案,所以特此記錄一下 微信投票系統,最優先想到的就是授權登入,以及獲取使用者資訊 1.首先需要申請微信公眾號(此次使用的是服務號) 2.在微信公眾平臺基本配

小程式檔案預覽原始碼可以直接用

微信小程式的檔案預覽 微信小程式的檔案預覽需要先使用wx.downloadFile下載檔案,然後使用下載檔案的臨時路徑通過wx.openDocument進行檔案的預覽 wxml程式碼: <button bindtap='preview'>簡歷預覽&

公眾平臺java開發詳解工程程式碼+解析

說明:本次的教程主要是對微信公眾平臺開發者模式的講解,網路上很多類似文章,但很多都讓初學微信開發的人一頭霧水,所以總結自己的微信開發經驗,將微信開發的整個過程系統的列出,並對主要程式碼進行講解分析,讓初學者儘快上手。在閱讀本文之前,應對微信公眾平臺的官方開發文件有所瞭解,知

開發者工具程式碼編輯區消失程式碼未顯示

當微信開發者工具程式碼編輯區消失,寫的程式碼顯示不了時: 在編輯器控制檯輸入:openVendor 回車            會開啟一個資料夾:C:\Users\Administrator\AppData\Local\微信web開發者工具\User Data\Weapp

小程式之音樂控制播放audio的API

一.小知識 1.wx.getBackgroundAudioPlayerState(OBJECT):獲取後臺音樂播放狀態。 wx.getBackgroundAudioPlayerState({

關於線上客服系統的實現已經證實可用

1.微信線上客服系統需要認證服務號資格,如果沒有認證是沒辦法完成 和大家分享下我實現的方式: 微信前端接入資訊到資料庫->做一個JSP 頁面定時重新整理(或者在有資料插入的時候涮新)->取使用者發來的資料 主要是openid 和內容(也支援語音和圖片)到JSP

小遊戲關係鏈的使用排行榜的顯示

前言 微信小遊戲屬於微信小程式的一個類目,小遊戲對比於普通的h5遊戲,其很大的一個特點是微信提供的關係鏈資料的使用,你可以獲得同玩這個遊戲的微信好友的資料,或者你在某個群的使用者資料 概念 需要了解關係鏈api和開放域,主域等概念。以下著重介紹具體的api使用 w

內分享網頁,顯示圖片PHP+JS版本

1、先登入微信公眾平臺進入“公眾號設定”的“功能設定”裡填寫“JS介面安全域名”。 2、需要指定微信公眾號的ID 和 密碼(後面設定會用到)。 3、需要三個PHP檔案 3.1 jssdk.php <?php class JSSDK {   private $ap

小程式 java服務端記附部署過程

1、檔案上傳,使用springmvc一直不行,後來看到別人有一樣的情況改成了serverlet就可以了2、因為要進行語音識別成文字,上傳的語音檔案是silk格式,需要用到訊飛的語音識別所以必須轉成wav,用到了kn007大神的這個工具https://github.com/kn

小程序性能測試之jmeter秘籍前言

建模 模型 包括 準備 基礎功 round 結果 信息 一定的 最近要做個微信小程序的性能壓測,雖然之前只做過web端的,但想一想都是壓後端的接口,所以果斷答應了下來,之前對jmeter都是小打小鬧,所以趁著這次機會好好擺弄擺弄。 ---------------------

小程序 - 沈浸式抽屜非組件

mage 分享 span img http image https draw 下載 高度有限制,可作為管理界面,點擊下載示例:drawer 微信小程序 - 沈浸式抽屜(非組件)