• 微信JS-SDK应用DEMO


    首先需要将以下函数写入TinkPHP的公用function.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的配置信息,如下:

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

    最后创建html文件,其中JS内容如下:

    //引入微信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文档吧,最主要的内容在上面,仔细看哦! });
  • 相关阅读:
    geoserver源码maven编译相关问题
    openlayers2地图控件扩展:要素删除DeleteFeature
    openlayers2地图控件扩展:图例控件LegendControl
    [小游戏资源] 微信小游戏开发资源目录
    【转】利用 three.js 开发微信小游戏的尝试
    微信小游戏开发之四:使用three.js引擎
    【转】微信小游戏开发源码_教程_工具_资源最新集合
    【转】微信小游戏学习
    微信小游戏开发Canvas资源汇总
    【转】微信小游戏开发总结
  • 原文地址:https://www.cnblogs.com/3body/p/5417019.html
Copyright © 2020-2023  润新知