码迷,mamicode.com
首页 > 微信 > 详细

PHP 微信分享

时间:2016-10-24 23:34:15      阅读:340      评论:0      收藏:0      [点我收藏+]

标签:异步   encode   arch   pos   判断   class   desc   微信   安全   

share.php

<?php
//公众号设置一下 JS接口安全域名,不要http,www的一级域名,比如http://www.baidu.com域名下的某个路径要分享,js安全域名中只需填上 baidu.com 即可

//因为微信分享出去后的地址结尾带有from和isappinstalled参数。分享后再分享就会失效,所以前端判断获取这两参数,给后端动态添加到分享地址后面
$urlend = ‘‘;
if($_POST[‘from‘] == ‘timeline‘ || $_POST[‘from‘] == ‘singlemessage‘){
    $urlend = "?from=".$_POST[‘from‘] . "&isappinstalled=".$_POST[‘isappinstalled‘];
}

$data[‘ticket‘]    = ‘bxLdikRXVbTPdHSM05e5u7AnbMMI4rNIxqVt3BVCv-JyYcjsM0DdvwuHhd69qZ3-EzyQnuaEawwfTUdJMumb6A‘;//假设已获取到ticket,具体获取方法格外查询
$data[‘timestamp‘] = time();//当前时间戳
$data[‘noncestr‘]  = ‘suijiwenzi‘;//自定义随机字符串
$data[‘url‘]       = ‘http://www.baidu.com/test/index.html‘.$urlend;//分享地址,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

<!DOCTYPE html>
<html>
<head>
<title>测试html</title>
</head>
<body>
    <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");

        $.post(share.php, {
            from : from,
            isappinstalled : isappinstalled
        }, 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>

 

PHP 微信分享

标签:异步   encode   arch   pos   判断   class   desc   微信   安全   

原文地址:http://www.cnblogs.com/dreamhome/p/5994660.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!