• PHP微信分享


    注意 : 分享需要认证微信订阅号或者服务号。

    php 代码(thinkphp):

    $appid='xxx';
     $appsecret='xxxx';
     
     $timestamp = time();
     $noncestr = $this->getRandStr(15);
     
     // dump();
     
     $url = 'https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token='. $this->get_token($appid,$appsecret) .'&type=jsapi';
     $ret_json = $this->curl_get_contents($url);
     $ret = json_decode($ret_json);
     $ticket = $ret-> ticket;
     //var_dump($ret);
     $strvalue = 'jsapi_ticket='.$ticket.'&noncestr='.$noncestr.'&timestamp='.$timestamp.'&url=http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
     $signature = sha1($strvalue);
     
     $this->assign('timestamp',$timestamp);
     $this->assign('nonceStr',$noncestr);
     $this->assign('signature',$signature);
     
     
    function get_token($appid,$appsecret){
     if(S('access_token')) return S('access_token');
     $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
     $ret_json = $this->curl_get_contents($url);
     $ret = json_decode($ret_json);
     if($ret -> access_token){
     S('access_token',$ret -> access_token,7200);
     return $ret -> access_token;
     }
    }
     
     
    function is_weixin(){
    if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) {
    return true;
    }
    return false;
    }
     
    function getRandStr($length){
     $str = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
     $randString = '';
     $len = strlen($str)-1;
     for($i = 0;$i < $length;$i ++){
     $num = mt_rand(0, $len);
     $randString .= $str[$num];
     }
     return $randString;
    }
     
    &nbsp;
     
    function curl_get_contents($url){
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_TIMEOUT, 1);
     curl_setopt($ch, CURLOPT_MAXREDIRS, 200);
     curl_setopt($ch, CURLOPT_USERAGENT, _USERAGENT_);
     curl_setopt($ch, CURLOPT_REFERER, _REFERER_);
     @curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
     $r = curl_exec($ch);
     curl_close($ch);
     return $r;
    }
     
    js代码:

    需要引入: http://res.wx.qq.com/open/js/jweixin-1.0.0.js
     
    wx.config({
     debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
     appId: 'wxae7c36a1349c5868', // 必填,公众号的唯一标识
     timestamp: '{$timestamp}', // 必填,生成签名的时间戳
     nonceStr: '{$nonceStr}', // 必填,生成签名的随机串
     signature: '{$signature}',// 必填,签名,见附录1
     jsApiList: ['onMenuShareTimeline','onMenuShareAppMessage'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
    });
     
    wx.ready(function(){
    wx.onMenuShareTimeline({
     title: '{$contentInfo.title}', // 分享标题
     link: window.location.href, // 分享链接
     imgUrl: 'http://'+window.location.host+'{$categoryInfo.image}', // 分享图标
     success: function () {
     // 用户确认分享后执行的回调函数
     //alert(1111);
     //fxfunc();
     },
     cancel: function () {
     // 用户取消分享后执行的回调函数
     //alert("您取消了分享");
     }
    });
     
    &nbsp;
     
    wx.onMenuShareAppMessage({
     title: '{$contentInfo.title}', // 分享标题
     desc: removeHTMLTag('{$contentInfo.content}'), // 分享描述
     link: window.location.href, // 分享链接
     imgUrl: 'http://'+window.location.host+'{$categoryInfo.image}', // 分享图标
     type: '', // 分享类型,music、video或link,不填默认为link
     dataUrl: '', // 如果type是music或video,则要提供数据链接,默认为空
     success: function () {
     // 用户确认分享后执行的回调函数
     //fxfunc();
     },
     cancel: function () {
     //alert("您取消了分享");
     // 用户取消分享后执行的回调函数
     }
    });
     // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在 页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready 函数中。
    });
     
    function removeHTMLTag(str) {
     str = str.replace(/</?[^>]*>/g,''); //去除HTML tag
     str = str.replace(/[ | ]* /g,' '); //去除行尾空白
     //str = str.replace(/ [s| | ]* /g,' '); //去除多余空行
     str=str.replace(/&nbsp;/ig,'');//去掉&nbsp;
     return str;

  • 相关阅读:
    自己的思考
    spring MVC整合freemarker
    手把手教你搭建SpringMVC——最小化配置
    深入hibernate的三种状态
    maven 构建slf4j1.7.7之简单测试与源码解析
    maven 构建slf4j1.7.7之简单测试与源码解析
    (转)URI和URL的区别
    Spring缓存机制的理解
    (转)oracle 高水位线详解
    (转)PL/SQL Developer使用技巧、快捷键
  • 原文地址:https://www.cnblogs.com/webph/p/5965651.html
Copyright © 2020-2023  润新知