美文网首页
微信内部浏览器 分享网页 自定义 分享标题,文案,图片(php快

微信内部浏览器 分享网页 自定义 分享标题,文案,图片(php快

作者: 阿_莫西林 | 来源:发表于2020-05-12 15:41 被阅读0次

    1、“公众号设置”的功能设置里面填写js接口安全域名,ip不可以。(微信开发不熟的可以阅读下微信文档)

    2、引入js https://res.wx.qq.com/open/js/jweixin-1.0.0.js

    3、调用js 方法(需要各种参数可接口获得,快速版直接php插入)
    以下是所需代码

    index.php(当前页面引用)

    <script type="text/javascript">
        window.shareData = {
            'imgUrl': "**",
            'timeLineLink': "*",//后台添加域名的网址
            'tTitle': '***',
            'tContent': '***',
        };
    </script>
    <?php include_once('wx_share.php');?>
    

    wx_share.php(封装php获取签名以及其他参数)

    <?php
    include_once ('wx_js_sdk.php');
    $jssdk = new JSSDK(APPID,APPSECRET);
    $signPackage = $jssdk->getSignPackage();
    ?>
    <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
    <script type="text/javascript">
    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','onMenuShareQQ']
    });
    wx.ready(function(){
         wx.onMenuShareAppMessage({
             title:window.shareData.tTitle,
             link:window.shareData.timeLineLink,
             imgUrl:window.shareData.imgUrl,
             desc:window.shareData.tContent,
             success: function(){shareWxAdd();}
        });
        wx.onMenuShareQQ({
            title:window.shareData.tTitle,
            link:window.shareData.timeLineLink,
            imgUrl:window.shareData.imgUrl,
            desc:window.shareData.tContent,
            success: function(){shareWxAdd();}
        });
        wx.onMenuShareTimeline({
            title:window.shareData.tTitle,
            link:window.shareData.timeLineLink,
            imgUrl:window.shareData.imgUrl,
            success: function(){shareWxAdd();}
        });
    });
    </script>
     
    

    wx_js_sdk.php(后台处理信息 类)

    <?php
    if (!defined("APPID")) {
        define("APPID", "wx***bc");//认证过的微信appid
        define("APPSECRET", "98***9");
    }
    if (!class_exists('M')) {
        include_once('*******/memcache.php');
    }
     
    class JSSDK
    {
        private $appId;
        private $appSecret;
     
        public function __construct($appId, $appSecret)
        {
            $this->appId = $appId;
            $this->appSecret = $appSecret;
        }
     
        public function getSignPackage()
        {
            $jsapiTicket = $this->getJsApiTicket();
     
            // 注意 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=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
     
            $signature = sha1($string);
     
            $signPackage = array(
                "appId"     => $this->appId,
                "nonceStr"  => $nonceStr,
                "timestamp" => $timestamp,
                "url"       => $url,
                "signature" => $signature,
                "rawString" => $string
            );
            return $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()
        {
            $key = "JSAPI_TICKET";
            $mdata = M::Get($key);
            if ($mdata)
            //if(0)
            {
                return $mdata['ticket'];
            } else {
                $accessToken = $this->getAccessToken();
                $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
                $res = json_decode($this->httpGet($url), true);
                if ($res) {
                    M::Set($key, $res, 7000);
                    $this->doSpecialMem($res['ticket'], 1, 7000);
                    return $res['ticket'];
                }
            }
        }
     
        private function getAccessToken()
        {
            return $this->httpGet('http://*****/get_access_token.php?from=****');
        }
     
        private function httpGet($url)
        {
            $curl = curl_init();
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($curl, CURLOPT_TIMEOUT, 500);
            curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
            curl_setopt($curl, CURLOPT_URL, $url);
     
            $res = curl_exec($curl);
            curl_close($curl);
     
            return $res;
        }
     
        private function doSpecialMem($value = "", $type, $expire = 7200)
        {
            $key = "d****f4"; //秘钥
            $url = "http://****spl_mem.php";
     
            $data = array(
                "value" => $value,
                "type" => $type,
                "code" => md5($value . ',' . $key),
                "expire" => $expire
            );
     
            return $this->httpGet($url . '?' . http_build_query($data));
        }
    }
    

    相关文章

      网友评论

          本文标题:微信内部浏览器 分享网页 自定义 分享标题,文案,图片(php快

          本文链接:https://www.haomeiwen.com/subject/icwbnhtx.html