微信JS-SDK應用DEMO

首先須要將如下函數寫入TinkPHP的公用function.php文件中以便調用php

// 基於ThinkPHP
 /**
 * php curl 請求連接
 * 當$post_data爲空時使用GET方式發送
 * @param unknown $url
 * @param string $post_data
 * @return mixed
 */
function curlSend($url,$post_data=""){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    if($post_data != ""){
        curl_setopt($ch,CURLOPT_POST,1);
        curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data);
    }
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;
}


/**
 * 調用接口獲取 $ACCESS_TOKEN
 * 微信緩存 7200 秒,這裏使用thinkphp的緩存方法
 * @param unknown $APP_ID
 * @param unknown $APP_SECRET
 * @return Ambigous <mixed, Thinkmixed, object>
 */
function get_accesstoken($APP_ID,$APP_SECRET){
    $ACCESS_TOKEN = S($APP_ID);
    if($ACCESS_TOKEN == false){
        $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$APP_ID."&secret=".$APP_SECRET;
        $json = curlSend($url);
        $data=json_decode($json,true);
        S($APP_ID,$data[access_token],7000);
        $ACCESS_TOKEN = S($APP_ID);
    }

    return $ACCESS_TOKEN;
}

/**
 * 微信網頁JSSDK  調用接口獲取 $jsapi_ticket
 * 微信緩存 7200 秒,這裏使用thinkphp的緩存方法
 * @param unknown $ACCESS_TOKEN
 * @return Ambigous <mixed, Thinkmixed, object>
 */
function get_jsapi_ticket($ACCESS_TOKEN){
    $jsapi_ticket = S($ACCESS_TOKEN);
    if($jsapi_ticket == false){
        $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$ACCESS_TOKEN."&type=jsapi";
        $json = curlSend($url);
        $data = json_decode($json,true);
        
        S($ACCESS_TOKEN,$data[ticket],7000);
        $jsapi_ticket = S($ACCESS_TOKEN);
    }
    return $jsapi_ticket;
}

/**
 * 微信網頁JSSDK 獲取簽名字符串
 * 全部參數名均爲小寫字符
 * @param unknown $nonceStr 隨機字符串
 * @param unknown $timestamp 時間戳
 * @param unknown $jsapi_ticket
 * @param unknown $url 調用JS接口頁面的完整URL,不包含#及其後面部分
 */
function get_js_sdk($APP_ID,$APP_SECRET){
    $protocol = (!empty($_SERVER[HTTPS]) && $_SERVER[HTTPS] !== off || $_SERVER[SERVER_PORT] == 443) ? "https://" : "http://";
    $url = $protocol.$_SERVER[HTTP_HOST].$_SERVER[REQUEST_URI];
    
    $argu = array();
    $argu[appId] = $APP_ID;
    $argu[url] = $url;
    $argu[nonceStr] = createNonceStr();
    $argu[timestamp] = time();
    
    $ACCESS_TOKEN = get_accesstoken($APP_ID, $APP_SECRET);
    $argu[jsapi_ticket] = get_jsapi_ticket($ACCESS_TOKEN);

    $string = "jsapi_ticket=".$argu[jsapi_ticket]."&noncestr=".$argu[nonceStr]."&timestamp=".$argu[timestamp]."&url=".$argu[url];
    $argu[signature] = sha1(trim($string));
    return $argu;
}

/**
 * 獲取隨機字符串
 * @param number $length
 * @return string
 */
function createNonceStr($length = 16) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    $str = "";
    for ($i = 0; $i < $length; $i++) {
        $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
    }
    return $str;
}

其次在程序裏面調用JSSDK的配置信息,以下:html

$confinfo = get_js_sdk("你的APPID","你的APP_SECRET");
$this->assign("confinfo",$confinfo);

最後建立html文件,其中JS內容以下:thinkphp

//引入微信JS支持文件//=============這裏博主用的是SMARTY引擎,因此代碼天然就是smarty代碼 var timestamp = "{$confinfo[timestamp]}"; var nonceStr = "{$confinfo[nonceStr]}"; var signature = "{$confinfo[signature]}"; var appId = "{$confinfo[appId]}"; /*******如下JS僅僅在微信瀏覽器下有效*********/ wx.config({ debug:false, appId:appId, timestamp:timestamp, nonceStr:nonceStr, signature:signature, jsApiList:[onMenuShareTimeline,onMenuShareAppMessage,onMenuShareQQ] }); wx.ready(function(){ 這個地方就是你的分享代碼了,具體您能夠去微信官網看看那個讓人蛋疼的JSSDK文檔吧,最主要的內容在上面,仔細看哦! });
相關文章
相關標籤/搜索