国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 網絡軟件教程 > 詳細頁面

php完成微信sdk分享接口

php完成微信sdk分享接口

更新時間:2025-09-20 文章作者:未知 信息來源:網絡 閱讀次數:

微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,由張小龍所帶領的騰訊廣州研發中心產品團隊打造 [2] 。微信支持跨通信運營商、跨操作系統平臺...
微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務的免費應用程序,由張小龍所帶領的騰訊廣州研發中心產品團隊打造 [2] 。微信支持跨通信運營商、跨操作系統平臺通過網絡快速發送免費(需消耗少量網絡流量)語音短信、視頻、圖片和文字,同時,也可以使用通過共享流媒體內容的資料和基于位置的社交插件“搖一搖”、“漂流瓶”、“朋友圈”、”公眾平臺“、”語音記事本“等服務插件。
軟件開發工具包(外語首字母縮寫:SDK、外語全稱:Software Development Kit)一般都是一些軟件工程師為特定的軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件時的開發工具的集合。本文主要和大家分享php實現微信sdk分享接口,希望能幫助到大家。

<?php
class Wxsdk
{
    private $appId;
    private $appSecret;

    /*
     * 這里為威獅碼的公眾號的openid和appsecret,如果配置到其他的子商家會出現需要關注威獅碼公眾號,
     * 則需要獲取數據庫的vender表里面的openid和appsecret
     * */
    public function __construct($appId = '自己的appid', $appSecret = '自己的appSecret')
    {
        $this->appId = $appId;
        $this->appSecret = $appSecret;
    }


    public function getSignPackage(Request $request)
    {
//接收到前端的轉義url轉義回來
        $url = $_POST;
        $durl = $url['url'];
        $durl = urldecode($durl);

        $jsapiTicket = $this->getJsApiTicket();
        $timestamp = time();
        $nonceStr = $this->createNonceStr();
        // 這里參數的順序要按照 key 值 ASCII 碼升序排序
        $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$durl";


        $signature = sha1($string);


        $signPackage = [
            "appId" => $this->appId,
            "nonceStr" => $nonceStr,
            "timestamp" => $timestamp,
            "url" => $url,
            "signature" => $signature,
            "rawString" => $string
        ];
//        var_dump($signPackage);die;
        throw new SuccessMessage(['msg' => $signPackage]);
    }


    private 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;
    }


    private function getJsApiTicket()
    {
        // jsapi_ticket 應該全局存儲與更新,以下代碼以寫入到文件中做示例
        $data = json_decode(file_get_contents("jssdk/jsapi_ticket.json"));
        if ($data->expire_time < time()) {
            $accessToken = $this->getAccessToken();
            //定義傳遞的參數數組
            $params['type'] = 'jsapi';
            $params['access_token'] = $accessToken;
            $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" . $params['access_token'] . "&type=" . $params['type'] . "";
            $res = json_decode(curl_get($url, $params));
            $ticket = isset($res->ticket) ? $res->ticket : NULL;
            if ($ticket) {
                $res->expire_time = time() + 7000;
                $res->jsapi_ticket = $ticket;
                $fp = fopen("jssdk/jsapi_ticket.json", "w");
                fwrite($fp, json_encode($res));
                fclose($fp);
            }
        } else {
            $ticket = $data->jsapi_ticket;
        }
        return $ticket;
    }


    private function getAccessToken()
    {
        // access_token 應該全局存儲與更新,以下代碼以寫入到文件中做示例
        $data = json_decode(file_get_contents("jssdk/access_token.json"));
        if ($data->expire_time < time()) {
            //定義傳遞的參數數組
            $params['grant_type'] = 'client_credential';
            $params['appid'] = $this->appId;
            $params['secret'] = $this->appSecret;
            $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=" . $params['grant_type'] . "&appid=" . $params['appid'] . "&secret=" . $params['secret'] . "";
            $res = json_decode(curl_post($url, $params));
            $access_token = isset($res->access_token) ? $res->access_token : NULL;
            if ($access_token) {
                $res->expire_time = time() + 7000;
                $res->access_token = $access_token;
                $fp = fopen("jssdk/access_token.json", "w");
                fwrite($fp, json_encode($res));
                fclose($fp);
            }
        } else {
            $access_token = $data->access_token;
        }
        return $access_token;
    }
前端代碼

核對官方步驟,確認簽名算法。

  • 確認簽名算法正確,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 頁面工具進行校驗。

  • 確認config中nonceStr(js中駝峰標準大寫S), timestamp與用以簽名中的對應noncestr, timestamp一致。

  • 確認url是頁面完整的url(請在當前頁面alert(location.href.split('#')[0])確認),包括'http(s)://'部分,以及'?'后面的GET參數部分,但不包括'#'hash后面的部分。

  • 確認 config 中的 appid 與用來獲取 jsapi_ticket 的 appid 一致。

  • 確保一定緩存access_token和jsapi_ticket。

  • 確保你獲取用來簽名的url是動態獲取的,動態頁面可參見實例代碼中php的實現方式。如果是html的靜態頁面在前端通過ajax將url傳到后臺簽名,前端需要用js獲取當前頁面除去'#'hash部分的鏈接(可用location.href.split('#')[0]獲取,而且需要encodeURIComponent,后臺decodeURIComponent解碼),因為頁面一旦分享,微信客戶端會在你的鏈接末尾加入其它參數,如果不是動態獲取當前鏈接,將導致分享后的頁面簽名失敗。

簽名是正確,上面的步驟還沒能解決你的問題(invalid signature)那就用是url的問題,注意:微信公眾號必須配置了你調試的安全域名(可以配置二級域名:xxx.com,而不用配置多個a.xxx.com/b.xxx.com等)。

原因:微信分享時候會給你當前頁面添加多個參數,你sha1時候必須保證url地址是微信給你加了參數之后的地址,這樣才不會報config:invalid signature.

解決方案:sha1之前url必須是解碼之后的正常的肉眼直接能識別的url,如果你用的是靜態頁面,在你配置wx.config之前,先通過encodeURIComponent(location.href.split('#')[0])把當前url編碼傳遞到后臺,后臺通過decodeURIComponent解碼,核心代碼如下:

前臺html頁面,編碼傳遞url:

jQuery.post("/xxx", {"url": encodeURIComponent(window.location.href.split('#')[0]),"t": new Date().getTime()}, function (result) {
    if (result.errno != 0) {
        alert("您當前的網絡不穩定請稍后再試!");
        return;
    }
    var shareUrl = result.data.url;
    wx.config({
        debug: true, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
        appId: 'xxx', // 必填,公眾號的唯一標識
        timestamp: result.data.timestamp, // 必填,生成簽名的時間戳
        nonceStr: result.data.nonceStr, // 必填,生成簽名的隨機串
        signature: result.data.signature,// 必填,簽名,見附錄1
        jsApiList: ['onMenuShareAppMessage','onMenuShareTimeline','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表見附錄2
    });

以上就是php實現微信sdk分享接口的詳細內容,更多請關注php中文網其它相關文章!


微信提供公眾平臺、朋友圈、消息推送等功能,用戶可以通過“搖一搖”、“搜索號碼”、“附近的人”、掃二維碼方式添加好友和關注公眾平臺,同時微信將內容分享給好友以及將用戶看到的精彩內容分享到微信朋友圈。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        99久久精品免费| 一区二区三区中文字幕精品精品| 91精品欧美久久久久久动漫 | 人禽交欧美网站| 欧美系列日韩一区| 午夜欧美电影在线观看| 欧美一二三区精品| 国产一区二区女| 国产欧美一区二区三区在线老狼| 国产精品12区| 亚洲美女免费视频| 欧美日韩成人综合在线一区二区| 奇米色777欧美一区二区| 欧美精品一区二区在线观看| 成人午夜视频福利| 亚洲图片有声小说| 久久蜜臀中文字幕| 99国产精品99久久久久久| 亚洲一区二区三区视频在线播放| 91精品国产综合久久小美女| 看电影不卡的网站| 中文字幕日本乱码精品影院| 欧美欧美午夜aⅴ在线观看| 国产一区二区三区日韩| 成人免费在线观看入口| 99久久久久久99| 日韩电影在线一区二区三区| 国产欧美久久久精品影院| 欧美亚洲尤物久久| 国产一区二区精品在线观看| 亚洲线精品一区二区三区| 精品国产123| 欧美三级电影在线看| 国产成人在线视频播放| 日日嗨av一区二区三区四区| 国产精品不卡视频| 日韩一区二区精品| 欧美亚洲综合色| 成人激情开心网| 蜜桃精品视频在线| 亚洲一区二区三区四区五区黄| 国产亚洲人成网站| 91精品国产色综合久久ai换脸| 91色综合久久久久婷婷| 国产麻豆一精品一av一免费| 亚洲一区二区在线观看视频| 国产精品久久毛片| 久久这里只有精品首页| 91精品国产美女浴室洗澡无遮挡| 在线日韩国产精品| 91网站黄www| av爱爱亚洲一区| 处破女av一区二区| 国产一区二区精品久久91| 日韩电影在线观看电影| 亚洲h动漫在线| 一区二区三区视频在线观看 | 在线播放视频一区| 色视频一区二区| 91在线视频18| 色综合夜色一区| 欧美日本乱大交xxxxx| 国产一区二区三区最好精华液| 蜜桃视频一区二区| 麻豆国产精品777777在线| 丝瓜av网站精品一区二区| 亚洲国产你懂的| 亚洲男同性恋视频| 亚洲区小说区图片区qvod| 亚洲视频香蕉人妖| 亚洲国产wwwccc36天堂| 亚洲成人免费影院| 日本不卡视频在线观看| 激情综合色丁香一区二区| 国产一区二区三区在线观看免费| 国产91精品一区二区麻豆网站| 懂色一区二区三区免费观看| 成人av在线网站| 91成人在线免费观看| 欧美高清视频不卡网| 欧美精品精品一区| 正在播放亚洲一区| 久久网这里都是精品| 国产精品久久久久精k8| 亚洲欧美日韩在线不卡| 日韩国产高清影视| 国产成人综合自拍| 日本丶国产丶欧美色综合| 69久久99精品久久久久婷婷| 久久女同精品一区二区| 亚洲免费观看视频| 狠狠色综合日日| 91激情五月电影| 久久综合九色综合97婷婷| 亚洲欧美一区二区三区孕妇| 国内精品写真在线观看| 国产伦精品一区二区三区免费 | 在线视频综合导航| 欧美本精品男人aⅴ天堂| 国产精品不卡在线观看| 蜜臀久久久久久久| 91美女片黄在线| 久久久午夜电影| 亚洲成av人**亚洲成av**| 国产99久久久国产精品潘金| 6080yy午夜一二三区久久| 国产精品成人免费| 国产一区二区三区免费在线观看| 欧美一区三区四区| 日本一区二区动态图| 日韩高清不卡在线| 91麻豆福利精品推荐| 国产亚洲欧洲997久久综合| 三级一区在线视频先锋| 色婷婷狠狠综合| 国产精品毛片无遮挡高清| 免费的国产精品| 欧美日韩色综合| 一区二区三区在线观看国产| 国产成人精品免费看| 欧美电影免费观看高清完整版 | 亚洲色大成网站www久久九九| 国内久久婷婷综合| 日韩丝袜美女视频| 日韩av午夜在线观看| 日本丰满少妇一区二区三区| 1024成人网| 99re成人在线| 亚洲色图一区二区三区| 99久久久免费精品国产一区二区| 欧美激情资源网| 国产91精品久久久久久久网曝门 | 天天综合网 天天综合色| 99精品欧美一区二区三区小说 | 亚洲第一成年网| 在线精品视频免费播放| 亚洲欧美另类小说视频| 91小视频免费观看| 一区二区三区电影在线播| 欧洲国内综合视频| 亚洲一二三四在线观看| 欧美日韩小视频| 午夜视频一区在线观看| 欧美一级艳片视频免费观看| 日韩不卡手机在线v区| 欧美一级国产精品| 裸体健美xxxx欧美裸体表演| 精品国产91乱码一区二区三区| 加勒比av一区二区| 国产色产综合色产在线视频| 国产成人免费视| 亚洲人一二三区| 欧美日韩夫妻久久| 黑人精品欧美一区二区蜜桃| 国产婷婷一区二区| 成人性生交大片| 亚洲自拍欧美精品| 日韩精品一区二区三区四区| 成人综合日日夜夜| 亚洲一区二区三区四区在线观看 | 在线一区二区视频| 丝袜a∨在线一区二区三区不卡| 欧美tickling挠脚心丨vk| 国产精品中文字幕欧美| 日韩码欧中文字| 91精品在线免费观看| 国内精品久久久久影院色| 亚洲国产精品99久久久久久久久| 色哟哟在线观看一区二区三区| 日韩激情中文字幕| 国产日韩综合av| 欧美日韩精品三区| 国产成人精品亚洲777人妖| 亚洲1区2区3区4区| 国产精品剧情在线亚洲| 日韩三级免费观看| 色香蕉久久蜜桃| 国产老肥熟一区二区三区| 亚洲一区国产视频| 国产精品三级在线观看| 欧美一卡二卡在线| 在线观看国产日韩| 成人丝袜18视频在线观看| 免费成人性网站| 亚洲一二三专区| 亚洲欧美日韩国产综合在线| 不卡电影一区二区三区| 天天影视涩香欲综合网| 综合精品久久久| 欧美精品一区二| 宅男在线国产精品| 在线视频一区二区三| 波多野结衣的一区二区三区| 麻豆精品新av中文字幕| 亚洲成av人**亚洲成av**| 一区二区三区高清在线| 亚洲三级在线播放| 国产精品卡一卡二卡三| 国产农村妇女精品| 久久久91精品国产一区二区精品 |