微信分享配置與實例

微信公衆平臺服務器配置

以下就是wx_check.php 的代碼,將這個文件放於你服務器域名下新建的【wx_check】文件夾內。

<?php
define("TOKEN", "你的token(任意字符串,與服務器上相同)");
$wechatObj = new wechatCallbackapiTest();
$wechatObj->valid();


class wechatCallbackapiTest
{
    public function valid()
    {
        $echoStr = $_GET["echostr"];
        if($this->checkSignature()){
            echo $echoStr;
            exit;
        }
    }


    public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
        if (!empty($postStr)){
                $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
                $fromUsername = $postObj->FromUserName;
                $toUsername = $postObj->ToUserName;
                $keyword = trim($postObj->Content);
                $time = time();
                $textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";
                if(!empty( $keyword ))
                {
                      $msgType = "text";
                    $contentStr = "Welcome to wechat world!";
                    $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
                    echo $resultStr;
                }else{
                    echo "Input something...";
                }
        }else {
            echo "";
            exit;
        }
    }
        
    private function checkSignature()
    {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];    
        $token = TOKEN;
        $tmpArr = array($token, $timestamp, $nonce);
        sort($tmpArr);
        $tmpStr = implode( $tmpArr );
        $tmpStr = sha1( $tmpStr );
        if( $tmpStr == $signature ){
            return true;
        }else{
            return false;
        }
    }
}
?>

在這裏插入圖片描述
發現一個奇怪現象 在文件夾以及文件名前加上 wx_ 前綴之後秒通過驗證,所以我這裏把名字命名爲這個wx_xxx

微信公衆號分享開發

開發過程

下載微信示例
裏面包含有
在這裏插入圖片描述
示例代碼在sample.php上。
打開sample.php 刪除html代碼,最後剩下
在這裏插入圖片描述
上面這一步主要是起到代碼與數據分離
然後把sample改一個很牛逼的名字,父文件夾 【PHP】 也改一個。注意,最好用英文
將其放入服務器域名文件夾內根目錄t
在這裏插入圖片描述
新建測試項目,
share.png 爲分享時展示的圖片,最好爲200*200像素尺寸
testshare.php爲代碼
在這裏插入圖片描述
然後在你的代碼中這樣寫

<?php
require_once "../牛逼名字/牛逼名字.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
TEST share
</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-常見錯誤及解決辦法”解決,如仍未能解決可通過以下渠道反饋:
     * 郵箱地址:[email protected]
     * 郵件主題:【微信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 都要加到這個列表中
        'checkJsApi',
        'onMenuShareTimeline',
        'onMenuShareAppMessage'
    ]
    });

    //當前鏈接地址
    var gameUrl = 'http://你的域名/testshare/testshare.html';
    var imgUrl = 'http://你的域名/testshare/share.png';
    //分享到朋友數據
    var sharedata = {
        title: '分享測試',
        desc: '分享測試,分享測試,分享測試,分享測試,分享測試,分享測試',
        link: gameUrl,
        imgUrl: imgUrl
    };
    //分享到朋友圈數據 默認和分享朋友一樣
    var timelinedata = {
        title: "分享測試",
        link: sharedata.link,
        imgUrl: sharedata.imgUrl
    };
    wx.ready(function () {
        //分享朋友圈
        wx.onMenuShareTimeline(timelinedata);
        //分享給朋友
        wx.onMenuShareAppMessage(sharedata);
    });
</script>
</body>
</html>

將其放入服務器域名內根目錄
在這裏插入圖片描述
瀏覽器訪問這個文件,然後將鏈接發到微信。微信再打開點擊左上角分享到朋友以及分享到朋友圈
在這裏插入圖片描述
在這裏插入圖片描述

錯誤解決

錯誤1 url domain

開發過程中會碰到無法分享的情況,報錯

errmsg config;invalid url domain

這個是因爲沒有配置好js安全域名

解決方法

  1. 打開微信公衆平臺
    在這裏插入圖片描述
  2. 找到【設置】
    在這裏插入圖片描述
  3. 找到【功能設置】-》【js接口安全域名】-》【設置】
    在這裏插入圖片描述
  4. 保存
    在這裏插入圖片描述

錯誤2 40164 invalid ip xxx

errMsg:config :invalid signature

這是提示非法簽名。點擊調試

解決辦法

輸入appid 和 secret。看會不會提示這個問題。如果會則是需要將提示的ip地址加入微信白名單
在這裏插入圖片描述
(奇怪的是,我之前一直用的好好的,然後服務器的環境從 laragon 換成 phpstudy 就出現這個問題)

錯誤3 get方法獲取不到res

官方的 sample.php的 get方法獲取不到res.
在這裏插入圖片描述

解決辦法

如圖,把驗證改爲不驗證(有一個問題待驗證,就是true改爲false之後,是不是白名單就不需要設置了?)
在這裏插入圖片描述

錯誤4 找不到文件

在這裏插入圖片描述
打開鏈接時,仍然提示非法簽名

errMsg:config :invalid signature

解決辦法

查看sample.php 的代碼
在這裏插入圖片描述
看看上圖所示url是否寫對。
上面註釋掉的那個url,在調用時不會自動生成上圖那兩個文件。需要拷貝到項目工程裏。且不能是空的。必須有有效內容。
獲取有效內容有兩種方式
1 用微信的在線調試工具獲取相應的值
2 用下圖所示的url,沒有這兩個文件,也能自動生成。這樣就有一份文件了
一般我都是用上圖那個未註釋的url,方便,智能。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章