微信公眾號--JS-SDK


JS-SDK

微信JS-SDK是微信公眾平台 面向網頁開發者提供的基於微信內的網頁開發工具包。

通過使用微信JS-SDK,網頁開發者可借助微信高效地使用拍照、選圖、語音、位置等手機系統的能力,同時可以直接使用微信分享、掃一掃、卡券、支付等微信特有的能力,為微信用戶提供更優質的網頁體驗。

JS-SDK使用步驟

步驟一:綁定域名

先登錄微信公眾平台進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”。

備注:登錄后可在“開發者中心”查看對應的接口權限。

步驟二:引入JS文件

在需要調用JS接口的頁面引入如下JS文件, http://res.wx.qq.com/open/js/jweixin-1.2.0.js

備注:支持使用 AMD/CMD 標准模塊加載方法加載

步驟三:通過config接口注入權限驗證配置

所有需要使用JS-SDK的頁面必須先注入配置信息,否則將無法調用。

wx.config({
    debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
    appId: '', // 必填,公眾號的唯一標識
    timestamp: , // 必填,生成簽名的時間戳
    nonceStr: '', // 必填,生成簽名的隨機串
    signature: '',// 必填,簽名
    jsApiList: [] // 必填,需要使用的JS接口列表
});

步驟四:通過ready接口處理成功驗證

wx.ready(function(){
    // config信息驗證后會執行ready方法,所有接口調用都必須在config接口獲得結果之后,config是一個客戶端的異步操作,所以如果需要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對於用戶觸發時才調用的接口,則可以直接調用,不需要放在ready函數中。
});

步驟五:通過error接口處理失敗驗證

wx.error(function(res){
    // config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開configdebug模式查看,也可以在返回的res參數中查看,對於SPA可以在這里更新簽名。
});

接口調用說明

所有接口通過wx對象(也可使用jWeixin對象)來調用,參數是一個對象,除了每個接口本身需要傳的參數之外,還有以下通用參數:

  1. success:接口調用成功時執行的回調函數。
  2. fail:接口調用失敗時執行的回調函數。
  3. complete:接口調用完成時執行的回調函數,無論成功或失敗都會執行。
  4. cancel:用戶點擊取消時的回調函數,僅部分有用戶取消操作的api才會用到。
  5. trigger: 監聽Menu中的按鈕點擊時觸發的方法,該方法僅支持Menu中的相關接口。

以上幾個函數都帶有一個參數,類型為對象,其中除了每個接口本身返回的數據之外,還有一個通用屬性errMsg,其值格式如下:

調用成功時:"xxx:ok" ,其中xxx為調用的接口名

用戶取消時:"xxx:cancel",其中xxx為調用的接口名

調用失敗時:其值為具體錯誤信息

 

具體調用接口信息請參考

微信公眾平台(https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115)

代碼示例

<?php

    $appId="your appid";

    $appSecret="your appSecret";

    // 獲取 access_token

    $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".appId."&secret=".appSecret;

    $res = json_decode(httpGet($url));

    $accessToken = $res->access_token;

 

    // 獲取 jsapi_ticket 

    $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=".$accessToken;

    $res = json_decode(httpGet($url));

    $jsapiTicket = $res->ticket;

 

    // 注意 URL 一定要動態獲取,不能 hardcode.

    $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";

    $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

 

    $timestamp = time();

 

    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

    $nonceStr = "";

    for ($i = 0; $i < $length; $i++) {

      $nonceStr .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);

    }

 

    // 這里參數的順序要按照 key 值 ASCII 碼升序排序

    $string = "jsapi_ticket=".$jsapiTicket."&noncestr=".$nonceStr."&timestamp=".$timestamp."&url=".$url;

 

    $signature = sha1($string);

 

    $signPackage = array(

      "appId"     => appId,

      "nonceStr"  => $nonceStr,

      "timestamp" => $timestamp,

      "signature" => $signature

    );

?>

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title></title>

</head>

<body>

 

</body>

<script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>

<script>

  /*

   * 注意:

   * 1. 所有的JS接口只能在公眾號綁定的域名下調用,公眾號開發者需要先登錄微信公眾平台進入“公眾號設置”的“功能設置”里填寫“JS接口安全域名”。

   * 2. 如果發現在 Android 不能分享自定義內容,請到官網下載最新的包覆蓋安裝,Android 自定義分享接口需升級至 6.0.2.58 版本及以上。

   * 3. 常見問題及完整 JS-SDK 文檔地址:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html

   *

   * 開發中遇到問題詳見文檔“附錄5-常見錯誤及解決辦法”解決,如仍未能解決可通過以下渠道反饋:

   * 郵箱地址:weixin-open@qq.com

   * 郵件主題:【微信JS-SDK反饋】具體問題

   * 郵件內容說明:用簡明的語言描述問題所在,並交代清楚遇到該問題的場景,可附上截屏圖片,微信團隊會盡快處理你的反饋。

   */

  wx.config({

    debug: true,

    appId: '<?php echo $signPackage["appId"];?>',

    timestamp: <?php echo $signPackage["timestamp"];?>,

    nonceStr: '<?php echo $signPackage["nonceStr"];?>',

    signature: '<?php echo $signPackage["signature"];?>',

    jsApiList: [

      // 所有要調用的 API 都要加到這個列表中

    ]

  });

  wx.ready(function () {

    // 在這里調用 API

  });

 

  wx.error(function(res){

    // config信息驗證失敗會執行error函數

});

</script>

</html>

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM