PHP 微信分享

share.php頁面javascript

<?php
//公衆號設置一下 JS接口安全域名,不要http,www的一級域名,好比http://www.baidu.com域名下的某個路徑要分享,js安全域名中只需填上 baidu.com 便可


//關於分享地址,有兩種狀況
//第一種由後端固定分享地址,可是由於微信分享出去後的地址結尾帶有from和isappinstalled參數。分享後再分享就會失效,因此前端判斷獲取這兩參數,給後端動態添加到分享地址後面
$urlend = '';
if(!empty($_POST['from']) && ($_POST['from'] == 'timeline' || $_POST['from'] == 'singlemessage')){
    $urlend = "?from=".$_POST['from'] . "&isappinstalled=".$_POST['isappinstalled'];
}
$shareurl = 'http://www.baidu.com/test/index.html'.$urlend;
//第二種,由前端 window.location.href 獲取當前頁,傳給後端
if(!empty($_POST['shareurl'])){
    $shareurl = $_POST['shareurl'];
}



$data['ticket']    = 'bxLdikRXVbTPdHSM05e5u7AnbMMI4rNIxqVt3BVCv-JyYcjsM0DdvwuHhd69qZ3-EzyQnuaEawwfTUdJMumb6A';//假設已獲取到ticket,具體獲取方法格外查詢
$data['timestamp'] = time();//當前時間戳
$data['noncestr']  = 'suijiwenzi';//自定義隨機字符串
$data['url']       = $shareurl;//分享地址,url路徑後面詳細到文件擴展名時結尾不須要加/,不然詳細到文件夾名則須要加/
//包括一些特殊路徑好比 'http://www.baidu.com/test/index.php?s=home/index/test2' 其中有文件擴展名,則結尾也不須要加/
//說白了就是必須和當前瀏覽器路徑徹底一致
$data['appId']     = 'wxb71ed5a23a86e594';
$data['imgUrl']    = 'http://www.baidu.com/test/shareImg.jpg';
//生成簽名
$string1           = "jsapi_ticket=".$data['ticket']."&noncestr=".$data['noncestr']."&timestamp=".$data['timestamp']."&url=".$data['url'];
$data['signature'] = sha1($string1);
// 顯示得到的數據
echo json_encode($data);
exit;
?>

test_share.html頁面php

<!DOCTYPE html>
<html>
<head>
<title>測試html</title>
</head>
<body>
    <!-- 如下jquery文件應換成實際js文件路徑,不然報錯 -->
    <!-- <script type="text/javascript" src="js/jquery.min.js"></script> -->
    <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script type="text/javascript">
        //var from           = GetQueryStringS("from");
        //var isappinstalled = GetQueryStringS("isappinstalled");
        var shareurl       = window.location.href;

        $.post('share.php', {
            //若是前端能直接獲取當前頁地址並傳給後端,則 from 與 isappinstalled 能夠不傳
            //'from' : from,
            //'isappinstalled' : isappinstalled,
            'shareurl' : shareurl
        }, function(data) {
            console.log(data);
            var appId     = data['appId'];
            var timestamp = data['timestamp'];
            var noncestr  = data['noncestr'];
            var signature = data['signature'];

            var url       = data['url'];
            var imgUrl    = 'http://www.fotile.com/Video/html/img/shareImg1.jpg';

            wx.config({
                debug : true, // 開啓調試模式,調用的全部api的返回值會在客戶端alert出來,若要查看傳入的參數,能夠在pc端打開,參數信息會經過log打出,僅在pc端時纔會打印。
                appId : appId, // 必填,公衆號的惟一標識
                timestamp : timestamp, // 必填,生成簽名的時間戳
                nonceStr : noncestr, // 必填,生成簽名的隨機串
                signature : signature,// 必填,簽名,見附錄1
                jsApiList : [ 'onMenuShareTimeline', 'onMenuShareAppMessage' ]
            // 必填,須要使用的JS接口列表,全部JS接口列表見附錄2
            });

            wx.ready(function() {
                wx.onMenuShareTimeline({
                    title : '你敢信麼?家裏煙齡最長的竟是媽媽!', // 分享標題
                    desc : '最怕你被煙傷害的人,倒是被煙傷害最久的人', // 分享描述
                    link : url, // 分享連接
                    imgUrl : imgUrl, // 分享圖標
                    success : function() {
                        //alert('分享成功');
                    },
                    cancel : function() {
                        // 用戶取消分享後執行的回調函數
                    }
                });
                // config信息驗證後會執行ready方法,全部接口調用都必須在config接口得到結果以後,config是一個客戶端的異步操做,因此若是須要在頁面加載時就調用相關接口,則須把相關接口放在ready函數中調用來確保正確執行。對於用戶觸發時才調用的接口,則能夠直接調用,不須要放在ready函數中。
                wx.onMenuShareAppMessage({
                    title : '你敢信麼?家裏煙齡最長的竟是媽媽!', // 分享標題
                    desc : '最怕你被煙傷害的人,倒是被煙傷害最久的人', // 分享描述
                    link : url, // 分享連接
                    imgUrl : imgUrl, // 分享圖標
                    type : 'link', // 分享類型,music、video或link,不填默認爲link
                    dataUrl : '', // 若是type是music或video,則要提供數據連接,默認爲空
                    success : function() {
                        // 用戶確認分享後執行的回調函數
                    },
                    cancel : function() {
                        // 用戶取消分享後執行的回調函數
                    }
                });
            });
        }, "json")

        function GetQueryStringS(name) {
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            var r = window.location.search.substr(1).match(reg);
            if (r != null)
                return unescape(r[2]);
            return null;
        }
    </script>
</body>
</html>
相關文章
相關標籤/搜索