文档章节

自己封装的微信分享类

笨笨小锅锅
 笨笨小锅锅
发布于 2016/06/03 09:17
字数 283
阅读 173
收藏 2
<?php

class WeixinShare{

    public function curlGet($url,$data){

        $ch = curl_init();

        // get的变量

        $getData="";

        foreach($data as $key=>$value){

            $getData.="$key=$value&";

        }

        $getData=substr($getData,0,strlen($getData)-1);

        $url.="?".$getData;


        //设置选项,包括URL

        curl_setopt($ch, CURLOPT_URL, $url);

        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

        curl_setopt($ch, CURLOPT_HEADER, 0);


        //执行并获取HTML文档内容

        $output = curl_exec($ch);

        //释放curl句柄

        curl_close($ch);

        $output=json_decode($output,true);

        return $output;

    }


    private  function getAccesssToken($appId,$appSecret,$force=false){

        $file=sys_get_temp_dir().'/access_token.json';

        @$data=file_get_contents($file);

        if($data)    $data=json_decode($data,true);

        $now=time();

        if(!$data || $data['create_time']+$data['expire_time']<=$now || $force){

            $url="https://api.weixin.qq.com/cgi-bin/token";

            $data=array(

                'grant_type'=>'client_credential',

                'appid'=>$appId,

                'secret'=>$appSecret,

            );

            $result=$this->curlGet($url,$data);


            $data=array(

                'access_token'=>$result['access_token'],

                'expire_time'=>$result['expires_in']-1800,

                'create_time'=>time(),

            );

            $data=json_encode($data);

            file_put_contents($file,$data);

        }

        return $data['access_token'];

    }


    private  function createRandomStr($length=16){

        $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';//62个字符

        $strlen = 62;

            while($length > $strlen){

            $str .= $str;

            $strlen += 62;

        }

        $str = str_shuffle($str);

        return substr($str,0,$length);

    }


    public function configWeixin(){

         $appId="APP_ID";

        $appSecret="APP_SECERT";

        $data=array();

        $data['appId']=$appId;

        $accessToken=$this->getAccesssToken($appId,$appSecret);

        $params=array(

            'access_token'=>$accessToken,

            'type'=>'jsapi'

        );

        $result=$this->curlGet("https://api.weixin.qq.com/cgi-bin/ticket/getticket",$params);

        $jsapiTicket=$result['ticket'];

        $nonceStr=$this->createRandomStr();

        $timestamp=time();

        $url=getgpc('shareUrl');

        $string1=sprintf("jsapi_ticket=%s&noncestr=%s&timestamp=%s&url=%s",$jsapiTicket,$nonceStr,$timestamp,$url);

        $data['signature']=sha1($string1);

        $data['nonceStr']=$nonceStr;

        $data['timestamp']=$timestamp;

        $share=array(

            'title'=>'分享标题',

            'link'=>'分享链接',

            'desc'=>'分享的文字说明',

            'imgUrl'=>'分享图标的地址'

        );

        $data['share']=$share;

        echo json_encode($data);

    }

}

 

© 著作权归作者所有

笨笨小锅锅

笨笨小锅锅

粉丝 4
博文 6
码字总数 1299
作品 0
南京
程序员
私信 提问
艾逗笔/douchat

产品介绍 豆信是一个专注于微信公众号开发的开源框架,具备“简洁、高效、优雅、易扩展”等特点。自主研发的插件扩展机制与视图构建工具能够帮助开发者快速实现微信端功能的开发。对微信接口...

艾逗笔
2016/01/30
0
0
多元日报资讯阅读客户端--DoingDaily

DoingDaily 多元日报,资讯阅读客户端 多元化阅读+深度阅读,为用户提供有价值的信息流,这是“多元日报”的定位和理念,产品从0到1的过程,学习很很多,收获了很多,如无意外地将会持续维护...

守望君
2017/02/24
1K
1
幺鹿/lib-android-Social

我的其他仓库推荐 分类(lib-android) -描述- -仓库链接- LoadingLayout Android 业务开发常用的 loadinglayout 用于封装加载过程中,加载完成&有数据,加载完成&无数据,加载错误的情况。 ht...

幺鹿
2016/07/02
0
0
微信公众号支付【Java版】

微信公众号支付【Java版】 说明: ① 本文主要讲解的是微信公众号内(商城)支付部分,如需了解其他微信公众号开发内容,请访问:http://blog.csdn.net/lyq8479/article/details/8944988 【柳...

大兵瑞恩
2016/05/31
1K
5
github/EasyShare说明文档

EasyShare 一个Android社会化分享脚手架,集成微信,qq,微博分享。 作用 这是个Android社会化分享脚手架,利用抽象工厂,桥接模式封装的一个简单易定制的分享组件,无法代替ShareSDK等商业化...

MichaelX
04/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

可能是国内第一篇全面解读 Java 现状及趋势的文章

作者 | 张晓楠 Dragonwell JDK 最新版本 8.1.1-GA 发布,包括全新特性和更新! 导读:InfoQ 发布《2019 中国 Java 发展趋势报告》,反映 Java 在中国发展的独特性,同时也希望大家对 Java 有...

阿里云官方博客
5分钟前
1
0
Spring Boot 2.x基础教程:Swagger静态文档的生成

前言 通过之前的两篇关于Swagger入门以及具体使用细节的介绍之后,我们已经能够轻松地为Spring MVC的Web项目自动构建出API文档了。如果您还不熟悉这块,可以先阅读: Spring Boot 2.x基础教程...

程序猿DD
9分钟前
1
0
《毅力》读书笔记

1.确信你全身心地投入 2.准备好为目标进行艰难的跋涉 3.通过减少需要使用毅力的情形,为将来的挑战做好准备 4.尽可能具体细致地确定你的目标和实现目标的过程 5.把挑战分解为小而易于管理的小...

lingch
10分钟前
2
0
zk中快速选举FastLeaderElection实现

选举涉及概念 服务器状态 投票 如何选择投票? 协议 选举 如何进行选举? epoch 发送者 接收者 发送队列 接收队列 服务器状态 public enum ServerState { LOOKING,寻找Leader状态,当服务处于...

writeademo
13分钟前
1
0
教你玩转Linux—磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题,Linux磁盘管理常用三个命令为df、du和fdisk。 df df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少...

Linux就该这么学
16分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部