微信分享朋友圈以及朋友

微信分享功能

微信官方文档地址
1.这里切记 JS接口安全域名 要填写域名 不是url链接 比如 www.baidu.com 而不是 ~http://www.baidu.com ~
2.分享的链接地址即 link参数 要写本js接口安全域名能访问的link

详细可参考JSSDK自定义分享接口的策略调整

贴代码

后台逻辑部分 (php)
 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;
    }

    //微信分享功能
    public function wxShare()
    {
        //获取jsapi_ticket
        $jsapi_ticket = getWxJsApiTicket();
        // 注意 URL 一定要动态获取,不能 hardcode.
        $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
        $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
        $timestamp = time();
        $noncestr = $this->createNonceStr();
        // 这里参数的顺序要按照 key 值 ASCII 码升序排序
        $string = "jsapi_ticket=$jsapi_ticket&noncestr=$noncestr&timestamp=$timestamp&url=$url";

        $signature = sha1($string);

        $signPackage = array(
            "appId" => config('zhifan.appId'),
            "nonceStr" => $noncestr,
            "timestamp" => $timestamp,
            "url" => $url,
            "signature" => $signature,
            "rawString" => $string
        );
        return view("wx.wxShare",['signPackage'=>$signPackage]);
    }
前端页面展示部分
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<p>分享测试</p>
</body>
<script src="http://res.wx.qq.com/open/js/jweixin-1.2.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-常见错误及解决办法”解决,如仍未能解决可通过以下渠道反馈:
     * 邮箱地址:weixin-open@qq.com
     * 邮件主题:【微信JS-SDK反馈】具体问题
     * 邮件内容说明:用简明的语言描述问题所在,并交代清楚遇到该问题的场景,可附上截屏图片,微信团队会尽快处理你的反馈。
     */
    wx.config({
        debug: false,
        appId: '<?php echo $signPackage["appId"];?>',
        timestamp: '<?php echo $signPackage["timestamp"];?>',
        nonceStr: '<?php echo $signPackage["nonceStr"];?>',
        signature: '<?php echo $signPackage["signature"];?>',
        jsApiList: [
            'onMenuShareTimeline',
            'onMenuShareAppMessage',
            // 所有要调用的 API 都要加到这个列表中
        ]
    });
    wx.ready(function () {

        // 在这里调用 API
        wx.onMenuShareTimeline({
            title: '分享标题', // 分享标题
            link: 'http://wx.renzhifan.cn', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: 'http://www.qqma.com/imgpic2/cpimagenew/2018/4/5/6e1de60ce43d4bf4b9671d7661024e7a.jpg', // 分享图标
            success: function () {
                alert("分享成功")
            },
            cancel: function () {
                alert("请重新分享")
            }
        });
        wx.onMenuShareAppMessage({
            title: '分享标题', // 分享标题
            desc: '分享描述', // 分享描述
            link: 'http://wx.renzhifan.cn', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
            imgUrl: 'http://www.qqma.com/imgpic2/cpimagenew/2018/4/5/6e1de60ce43d4bf4b9671d7661024e7a.jpg', // 分享图标
            type: 'link', // 分享类型,music、video或link,不填默认为link
            dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
            success: function () {
// 用户点击了分享后执行的回调函数
                alert("分享成功")
            },
            cancel: function () {
                alert("请重新分享")
            }
        });
    });
    wx.error(function (res) {
        alert("分享出错")

    });
</script>
</html>

任志帆博客
请先登录后发表评论
  • 最新评论
  • 总共0条评论
  • v1.0- renzhifan.cn 版权所有 ICP证:京ICP备18035965号
  • 联系邮箱:zhifan6797@163.com