罗田县升平网络工作室,一家专业从事网站建设的工作室

资讯论坛

 找回密码
 加入论坛

快捷登录

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。
查看: 926|回复: 0

静态html调用微信sdk实现分享.

[复制链接]
发表于 2019-9-24 20:25:11 | 显示全部楼层 |阅读模式

微信已出新的分享Api ,自己去看官网.

引入 js 文件
  1. <script src="https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>
  2. <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script>
复制代码


html 页 写 js

  1.     <script>   
  2.   var url=encodeURIComponent(window.location.href.split('#')[0]);
  3.   $.ajax({   
  4.     type : "get",   
  5.     url : "http://xxx/jssdk.php?url="+url,//替换网址,xxx根据自己jssdk文件位置修改   
  6.     dataType : "jsonp",   
  7.     jsonp: "callback",   
  8.     jsonpCallback:"success_jsonpCallback",   
  9.     success : function(data){
  10.         console.log(data);
  11.         wx.config({   
  12.             debug:true,   //debug 生产环境改为 false
  13.             appId:data.appId,   
  14.             timestamp:data.timestamp,   
  15.             nonceStr:data.nonceStr,   
  16.             signature:data.signature,  
  17.             jsApiList: [   
  18.                "onMenuShareTimeline", //分享给好友   
  19.                "onMenuShareAppMessage", //分享到朋友圈   
  20.                "onMenuShareQQ",  //分享到QQ   
  21.                "onMenuShareWeibo" //分享到微博   
  22.             ]   
  23.         });
  24. },   
  25.     error:function(data){   
  26.         alert("连接失败!");   
  27.     }   
  28. });
  29. wx.ready(function (){
  30.   var shareData = {
  31.   title: '测试',
  32.   desc: '测试简介.',//这里请特别注意是要去除html
  33.   link: 'http://www.baidu.com',//分享链接
  34.   imgUrl:'图片路径'
  35.   };
  36.   wx.onMenuShareAppMessage(shareData);
  37.   wx.onMenuShareTimeline(shareData);
  38.   wx.onMenuShareQQ(shareData);
  39.   wx.onMenuShareWeibo(shareData);
  40. });
  41. </script>
复制代码

jssdk.php
  1. <?php
  2. $url = $_GET['url'];
  3. class JSSDK {
  4.   private $appId;
  5.   private $appSecret;
  6.   private $url;
  7.   public function __construct($appId, $appSecret,$url) {
  8.     $this->appId = $appId;
  9.     $this->appSecret = $appSecret;
  10. $this->url = $url;
  11.   }
  12.   public function getSignPackage() {
  13.     $jsapiTicket = $this->getJsApiTicket();
  14.     $protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
  15.    // $url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
  16. $url =$this->url;
  17.     $timestamp = time();
  18.     $nonceStr = $this->createNonceStr();
  19.     // 这里参数的顺序要按照 key 值 ASCII 码升序排序
  20.     $string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
  21.     $signature = sha1($string);
  22.     $signPackage = array(
  23.       "appId"     => $this->appId,
  24.       "nonceStr"  => $nonceStr,
  25.       "timestamp" => $timestamp,
  26.       "signature" => $signature,
  27.       "rawString" => $string
  28.     );
  29.     return $signPackage;
  30.   }
  31.   private function createNonceStr($length = 16) {
  32.     $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  33.     $str = "";
  34.     for ($i = 0; $i < $length; $i++) {
  35.       $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
  36.     }
  37.     return $str;
  38.   }
  39.   private function getJsApiTicket() {
  40.     // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
  41.     $data = json_decode(file_get_contents("jsapi_ticket.json"));

  42.     if ($data->expire_time < time()) {
  43.         
  44.       $accessToken = $this->getAccessToken();
  45.       
  46.       // 如果是企业号用以下 URL 获取 ticket
  47.       // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken";
  48.       $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
  49.       $res = json_decode($this->httpGet($url));
  50.       $ticket = $res->ticket;
  51.       if ($ticket) {
  52.         $data->expire_time = time() + 7000;
  53.         $data->jsapi_ticket = $ticket;
  54.         $fp = fopen("jsapi_ticket.json", "w");
  55.         fwrite($fp, json_encode($data));
  56.         fclose($fp);
  57.       }
  58.     } else {
  59.         
  60.       $ticket = $data->jsapi_ticket;
  61.     }
  62.    
  63.     return $ticket;
  64.   }
  65.   private function getAccessToken() {
  66.     // access_token 应该全局存储与更新,以下代码以写入到文件中做示例
  67.     $data = json_decode(file_get_contents("access_token.json"));
  68.     if ($data->expire_time < time()) {
  69.         
  70.       // 如果是企业号用以下URL获取access_token
  71.       // $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$this->appId&corpsecret=$this->appSecret";
  72.       
  73.       $url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$this->appId&secret=$this->appSecret";
  74.       $res = json_decode($this->httpGet($url));
  75.       $access_token = $res->access_token;
  76.       if ($access_token) {
  77.         $data->expire_time = time() + 7000;
  78.         $data->access_token = $access_token;
  79.         $fp = fopen("access_token.json", "w");
  80.         fwrite($fp, json_encode($data));
  81.         fclose($fp);
  82.       }
  83.     } else {
  84.       $access_token = $data->access_token;
  85.     }
  86.     return $access_token;
  87.   }
  88.   

  89.   
  90.   private function httpGet($url) {
  91.     $curl = curl_init();
  92.     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  93.     curl_setopt($curl, CURLOPT_TIMEOUT, 500);
  94.     curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
  95.     curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
  96.     curl_setopt($curl, CURLOPT_URL, $url);
  97.     $res = curl_exec($curl);
  98.     curl_close($curl);
  99.     return $res;
  100.   }
  101. }
  102. $jssdk = new JSSDK("AppId", "AppSecret",$url);//按照自己的公众号填写
  103. $signPackage = $jssdk->GetSignPackage();
  104. $tmp=json_encode(array ('appId'=>$signPackage["appId"],'timestamp'=>$signPackage["timestamp"],'nonceStr'=>$signPackage["nonceStr"],'signature'=>$signPackage["signature"]));
  105. $callback = $_GET['callback'];
  106. echo $callback.'('.$tmp.')';
  107. exit;
  108. ?>
复制代码

提示
4.1 公众号设置js域名.
4.2 MP_verify_1PD63C7oVxdoEKCF.txt 传到相应目录.
4.3 白名单设置.

其他问题请留言.
打赏鼓励一下!
回复

使用道具 举报

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。

浏览排行

(38463)2019-11-5 公共云钱包资金盘骗局揭秘: 网络传销+原始股骗局合体!

(22233)2019-12-20 12月17日 邓智天法院直播庭审疑问全解答!

(20722)2019-12-1 环保币GEC资金盘骗局最新消息: 即将崩盘!

(17244)2019-11-9 巨胸肥臀大长腿,嫩模糯美子真人COS不知火舞福利污图

(15868)2018-12-24 罗田县人民法院公布【第五批失信被执行人名单】 ...

(14972)2019-11-3 曝光!PTFX已经崩盘跑路,投资者血流成河!

(13018)2019-8-7 湖北电力网上缴费,支付宝绑定户号的初始密码是什么?

(12480)2018-10-17 罗田县人民政府“12345”市民服务热线服务指南

(11170)2019-12-11 公安定性了, 趣码是非法传销! 趣码怎么退回365元?

(11081)2019-12-15 满足你对女同事的幻想 风骚秘书阿朱销魂眼神勾魂摄魄

最新发表

[升平网络工作室]2025-8-23 [2025-08-23]罗田天气预报

[升平网络工作室]2025-8-23 西藏自治区成立60周年庆祝大会隆重举行 习近平出席大会

[升平网络工作室]2025-8-23 县委委员会召开查摆问题整改整治情况汇报会

[爱查小程序]2025-8-22 [爱查]在线听音乐操作说明

[升平网络工作室]2025-8-22 [2025-08-22]罗田天气预报

[升平网络工作室]2025-8-22 习近平率中央代表团抵达拉萨出席西藏自治区成立60周年庆祝活动

[升平网络工作室]2025-8-22 县关工委联合经济开发区开展“情系学子”助学活动 助力职工子女圆梦大学

[升平网络工作室]2025-8-21 2025年罗田县卫健系统赴高校公开招聘事业单位工作人员拟聘用人员公示公告

[升平网络工作室]2025-8-21 [2025-08-21]罗田天气预报

[升平网络工作室]2025-8-21 县安防委2025年度第三次全体(扩大)会召开

QQ|Archiver|手机版|小黑屋|资讯论坛BBS.SPW8.CN ( 鄂ICP备2021011341号-3 )|网站地图


手机扫一扫继续访问
[免责声明]
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。

进入社区 | 发表新帖 | 百度收录 |
技术提供:罗田县升平网络工作室
站长Email:admin@spw8.cn
投诉电话(刮开查看):15374567400

GMT+8, 2025-8-23 20:21 , Processed in 0.442496 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表