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 = "http://$_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() {
    // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
    $data = json_decode(file_get_contents("jsapi_ticket.json"));
    if ($data->expire_time < time()) {
      $accessToken = $this->getAccessToken();
      $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
      $res = json_decode($this->httpGet($url));
      $ticket = $res->ticket;
      if ($ticket) {
        $data->expire_time = time() + 7000;
        $data->jsapi_ticket = $ticket;
        $fp = fopen("jsapi_ticket.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $ticket = $data->jsapi_ticket;
    }
    return $ticket;
  }

  private function getAccessToken() {
    // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
    $data = json_decode(file_get_contents("access_token.json"));
    if ($data->expire_time < time()) {
      $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appId}&secret={$this->appSecret}";
      $res = json_decode($this->httpGet($url));
      $access_token = $res->access_token;
      if ($access_token) {
        $data->expire_time = time() + 7000;
        $data->access_token = $access_token;
        $fp = fopen("access_token.json", "w");
        fwrite($fp, json_encode($data));
        fclose($fp);
      }
    } else {
      $access_token = $data->access_token;
    }
    return $access_token;
  }

  private function httpGet($url) {
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_TIMEOUT, 500);
    curl_setopt($curl, CURLOPT_URL, $url);

    $res = curl_exec($curl);
    curl_close($curl);

    return $res;
  }
}
$appid = ‘wx8304ad33eda1cbfe‘;
$appsecret = ‘48f9a8342d4db04cb7b9abe1d4bc99b7‘;
$jssdk = new JSSDK($appid,$appsecret);
$signPackage = $jssdk->GetSignPackage();
extract(array("signPackage"=>$signPackage));
include("./wxindex2.html");


前端js实现

             <script>

                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: [
                    // 所有要调用的 API 都要加到这个列表中
                         ‘onMenuShareTimeline‘,
                         ‘onMenuShareAppMessage‘
                  ]
                });

            wx.ready(function(){
                     wx.onMenuShareTimeline({
                        title:‘看了我的购物车,马云都给跪了!‘, // 分享标题
                        link: ‘http://www.flyinjoy.com/wxcallback/share.php?preview=‘+‘<?php echo $preview; ?>‘+‘&inname=‘+‘<?php echo $_GET[‘inname‘] ?>‘+‘&bg_img=‘+‘<?php echo $bg_img; ?>‘, // 分享链接
                        imgUrl: ‘http://www.flyinjoy.com/wxcallback/imges/LOGO.jpg‘, // 分享图标
                        desc:‘扫扫二维码,微信关注“飞享购”,你也可以晒出属于你的购物车!‘,
                        success: function () {
                            // 用户确认分享后执行的回调函数
                            alert("分享成功");
                        },
                        cancel: function () {
                            // 用户取消分享后执行的回调函数
                        }
                    });
                     wx.onMenuShareAppMessage({
                        title: ‘看了我的购物车,马云都给跪了!‘, // 分享标题
                        desc: ‘扫扫二维码,微信关注“飞享购”,你也可以晒出属于你的购物车!‘, // 分享描述
                        link: ‘http://www.flyinjoy.com/wxcallback/share.php?preview=‘+‘<?php echo $preview; ?>‘+‘&inname=‘+‘<?php echo $_GET[‘inname‘] ?>‘+‘&bg_img=‘+‘<?php echo $bg_img; ?>‘, // 分享链接
                        imgUrl: ‘http://www.flyinjoy.com/wxcallback/imges/LOGO.jpg‘, // 分享图标
                        type: ‘‘, // 分享类型,music、video或link,不填默认为link
                        dataUrl: ‘‘, // 如果type是music或video,则要提供数据链接,默认为空
                        success: function () {
                            // 用户确认分享后执行的回调函数
                            alert("分享成功");
                        },
                        cancel: function () {
                            // 用户取消分享后执行的回调函数
                        }
                    });

    })

     </script>
时间: 2024-08-29 09:48:20

php实现微信分享朋友圈的相关文章

php微信分享朋友圈模板

<html > <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" />

微信分享朋友圈的标题和图片

定义分享时的缩略图.链接.标题.摘要确实是通过WeixinJSBridge实现的. 参考腾讯微生活的页面:(略去了跟此需求无关的代码,仅供参考) <script> var imgUrl = 'http://qqfood.tc.qq.com/meishio/16/4585bf7c-be04-420f-ac8a-2dba61a7561f/0'; var lineLink = 'http://life.qq.com/weixin/r/lottery/13826036970196242008#wech

iOS 微信分享 朋友圈(2016.3.17) - 王彬分享,越分享,越快乐

一,先配置 1.首先去微信开放平台注册账号(是微信开放平台 不是腾讯开放平台,两者不一样) https://open.weixin.qq.com 注册完成之后记得创建应用,后边会用到.只需要注册就行, 拿到AppID 就行,不用上传app 2.下来我们在 微信开放平台的资源中心中下载sdk 下载完成后 里面有我们需要的工具包 3.接下来我们讲刚才下载的三个工具包拖入我们的项目 拖入后的效果如下: 4.导入我们需要的framwork: 5.接下里 一定记得在 Build Settings->Sea

微信分享朋友圈的链接被屏蔽(已停止访问该网页)怎么办?

朋友圈链接已停止访问的原因 很多时候微信屏蔽分享链接并不是起因于网页的内容违规了,而是被同行或其他用户恶意投诉举报导致的,致使分享到微信朋友圈的链接无法打开并提示“已停止访问该网页”. 那么当大家遇到这个问题的时候应该怎么办呢?不用急,下面给大家分享一种技术方案. 技术方案 当我们知道了网页被封的原因,然后再去针对性的解决就没那么难了. 被同行或者用户恶意投诉导致网页被微信拦截的情况下,我们可以直接用技术手段让别人无法举报你的网页.给大家推荐一种技术叫“屏蔽网页投诉功能”,用户打开网页是看不见投

微信 分享朋友圈 发送好友 js代码

function loadBless(){ document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { var redirectsingleurl = encodeMyStr("http://10.3.172.189:8080/OlaPushHtml/publish/wx/bless/homepage?from=singlemessage&isappinstalled=0"); var

分享到微信分享朋友圈链接被屏蔽(停止访问)怎么办?

微信这款软件是禁止营销的,但是大家都知道微信的最大价值就是所带来的社交圈营销,官方一直在打击这些营销行为 只要发现网站内容有问题,马上就封你,你的微信营销就已经已经已经失败了, 我今天谈的就是微信怎么做这些防封防屏蔽的的措施! 基本概念: 微信中营销活动百分百防封是做不到的的,这点要知道,网络上有着<不死域名>的概念, 主要的技术原理是利用腾讯认证的原理.通过认证有了一层白名单.比普通域名经用一点. 腾讯也一直增加技术封锁,防屏蔽是一个长期对抗的过程. 有什么好的预防措施呢: 1.域名监测接口

微信及朋友圈分享

微信分享代码相对来说比较简单,因为已经给我们提供了SDK Demo,代码部分就不再赘述了. 这边有一篇文章写的挺好,把整个流程以及过程中遇到的问题都描述了一遍: http://blog.csdn.net/freesonhp/article/details/10756663 另外微信官方已经提供了一些经常遇到问题的解决方案 https://open.weixin.qq.com/cgi-bin/frame?t=resource/res_main_tmpl&lang=zh_CN 微信及朋友圈分享,布布

长按微信公众号文章内容可分享朋友圈且附带二维码

就在刚刚,有朋友无意间发现长按住微信公众号文章内容的某一句话,将会出现“分享”的选项,一旦分享之后,微信将会自动将选中的内容,形成一段话分享在朋友圈,而且会在分享的文末,附上该篇文章的二维码.ytkah觉得这个非常文艺范,一小句话自动生成图片,很唯美,在朋友圈容易疯转,附带的二维码也利于公众号的宣传,整个有点像前段时间那个很火的宽图小应用 长按住微信公众号文章内容的某一句话,将会出现“分享”的选项 长按微信公众号文章可以分享朋友圈且附带二维码 目前,经过测试,仅有苹果手机可以使用这一功能.有了这

微信js分享朋友圈

1.绑定域名 先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”. 备注:登录后可在“开发者中心”查看对应的接口权限. 2.引入js文件 <script type="text/javascript" src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/javascript" src=