1. 程式人生 > >微信JSSDK開發資訊配置

微信JSSDK開發資訊配置

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

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

但是很多人在配置和使用的時候,老是出各種錯誤。最近專案也涉及到這個,就記錄一下過程,並對方法進行封裝。

基本步驟如下:
1.繫結域名
先確保你使用的是認證的賬號(訂閱號,服務號),因為沒認證的號是沒有JS安全域名配置許可權的。建議開發前先看看。
登入微信公眾平臺進入“公眾號設定”的“功能設定”裡填寫“JS介面安全域名”。


2.引入JS檔案
在需要呼叫JS介面的頁面引入如下JS檔案,(支援https):http://res.wx.qq.com/open/js/jweixin-1.0.0.js
請注意,如果你的頁面啟用了https,務必引入 https://res.wx.qq.com/open/js/jweixin-1.0.0.js ,否則將無法在iOS9.0以上系統中成功使用JSSDK
如需使用搖一搖周邊功能,請引入 jweixin-1.1.0.js

3.通過config介面注入許可權驗證配置
所有需要使用JS-SDK的頁面必須先注入配置資訊,否則將無法呼叫。

wx.config({
    debug: true,  // 開啟除錯模式
    appId: '',    // 必填,公眾號的唯一標識
    timestamp: ,  // 必填,生成簽名的時間戳
    nonceStr: '', // 必填,生成簽名的隨機串
    signature: '',// 必填,簽名,見附錄1
    jsApiList: [] // 必填,需要使用的JS介面列表,所有JS介面列表見附錄2
});

4.通過ready介面處理成功驗證
config資訊驗證後會執行ready方法,所有介面呼叫都必須在config介面獲得結果之後,config是一個客戶端的非同步操作,所以如果需要在頁面載入時就呼叫相關介面,則須把相關介面放在ready函式中呼叫來確保正確執行。
wx.ready(function(){

    // 對於使用者觸發時才呼叫的介面,則可以直接呼叫,不需要放在ready函式中。
});

這些基本步驟在 裡邊講的很清楚了。但很多人在開發的時候用自己伺服器不知道上邊第3步配置資訊該如何配置,我就具體說說方法吧。

1.下載jssdk的demo
下載地址:http://demo.open.weixin.qq.com/jssdk/sample.zip

2.解壓demo,獲取JSSDK的驗證類
將jssdk.php放到自己的伺服器上引入自己的程式。


3.獲取簽名信息
初始化JSSDK類之後,獲取簽名信息,然後將簽名信息填寫到上邊步驟3中配置項中就OK了。

require_once "jssdk.php";
$jssdk = new JSSDK("yourAppID", "yourAppSecret");
$signPackage = $jssdk->GetSignPackage();
 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 都要加到這個列表中
    ]
});

方法的封裝:

用法: 
前端頁面嵌入程式碼 <php>echo register_jssdk(true);</php> 或者{php echo register_jssdk(true);}根據自己使用的框架而定。

/**
 * 微信jssdk
 * @param  [bool]   $debug [是否是使用debug模式]
 * @return [string] 微信jssdk程式碼
 */
function register_jssdk($debug=false){
	require_once APP_ROOT.'/Api/jssdk.php';
	$appid = 'wechat_appid';
	$secret = 'wechat_secret';
	$jssdk = new JSSDK($appid,$secret);
	$signPackage = $jssdk->GetSignPackage();
	if($debug){
		$debug = 'true';
	}else{
		$debug = 'false';
	}
	$js = "<script src='http://res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>
	<script>
	wx.config({
    debug: ".$debug.",
    appId: '".$signPackage["appId"]."',
    timestamp: ".$signPackage["timestamp"].",
    nonceStr: '".$signPackage["nonceStr"]."',
    signature: '".$signPackage["signature"]."',
    jsApiList: [
	    'checkJsApi',    
		'onMenuShareTimeline',    
		'onMenuShareAppMessage',    
		'onMenuShareQQ',    
		'onMenuShareWeibo',    
		'hideMenuItems',    
		'showMenuItems',    
		'hideAllNonBaseMenuItem',    
		'showAllNonBaseMenuItem',    
		'translateVoice',    
		'startRecord',    
		'stopRecord',    
		'onRecordEnd',    
		'playVoice',    
		'pauseVoice',    
		'stopVoice',    
		'uploadVoice',    
		'downloadVoice',    
		'chooseImage',    
		'previewImage',    
		'uploadImage',    
		'downloadImage',    
		'getNetworkType',    
		'openLocation',    
		'getLocation',    
		'hideOptionMenu',    
		'showOptionMenu',    
		'closeWindow',    
		'scanQRCode',    
		'chooseWXPay',    
		'openProductSpecificView',    
		'addCard',    
		'chooseCard',    
		'openCard'    
    ]
  });</script>";
  
  return $js;
}
微笑就是這麼簡單!