自己封装的微信分享类

<?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);
    }
}
时间: 2024-07-31 14:23:00

自己封装的微信分享类的相关文章

微信分享类

<?php /** * 微信分享相关 * * @since 2017-07-15 */ use Yaf\Registry; class Service_WxShare{ private $appId; private $appSecret; public function __construct($appId, $appSecret) { $this->appId = $appId; $this->appSecret = $appSecret; } public function get

2.微信公众号开发:简单封装基本微信基本操作类

<?php /** * 微信公众平台操作类 */ class WeChat { private $_appid; private $_appsecret; //微信公众平台请求开发者的服务器需要token private $_token; //标识qrcodeticket的类型,是永久还是临时 const QRCODE_TYPE_TEMP = 1; const QRCODE_TYPE_TEMP_STR = 2; const QRCODE_TYPE_LIMIT = 3; const QRCODE_

Vue+Vue-router微信分享功能

在使用vue和vue-router路由框架已经开发过好几个项目了,其中也遇到不少坑,有些坑各种搜也没有找到非常理想的答案. vue学习相对来说还是比较简单,官方文档说明非常清楚(https://cn.vuejs.org/v2/guide/),多做一些Demo就可以熟练上手了,并且现在也有好多框架(vuex,MintUI,Element,iView等),根据项目需要自行学则,因此本人也就没有怎么写过关于vue这方面的文章. 这次主要是把自己在微信中分享遇到的问题分享一下,Android机器中分享不

接入微信分享过程的喜和泪

背景故事: 4月份从公司回到学校.要開始着手做大四的毕业设计.然而毕设的当中一个功能模块便是--心情分享模块,在记录心情的同一时候能够把心情分享到朋友圈.空间.微博等.因此,便開始了微信分享的学习之旅. 准备工作: 1.在微信开发平台注冊一个开发人员账号. 2.在管理中心创建一个移动应用 泪:当时我在填写应用签名时,是直接将签名文件里的内容复制,粘贴到该输入框中.由于这个.我走了一天的弯路啊!在这重点提醒大家.该应用签名,应该是使用MD5签名生成器.apk.输入你的应用包名.然后生成出来的MD5

Android实现微信分享及注意事项

一.获取帮助文档并下载相关资料 首先打开微信开放平台:https://open.weixin.qq.com/ 如果没有注册,请先注册并上传开发者资料等待审核. 资源中心----移动应用开发----分享与收藏功能----Android开发手册 开发手册链接地址:https://open.weixin.qq.com/zh_CN/htmledition/res/dev/document/sdk/android/index.html 资源中心----移动应用开发----接入指南---Android接入指

Android集成微信分享的要点及源码示例

如今,社会化分享成了App必不可少的一个功能,而其中最重要的莫过于微信分享,由于微信庞大的用户群及活跃度,因此我们的App往往都需要集成微信分享,微信开放平台也提供了相应的分享SDK.鉴于看到很多人说调不起微信分享,下面就来分享下自己的经验以及在集成微信分享过程中需要注意的地方,最终会提供自己封装好的微信分享源码示例. 其实集成的步骤在微信开放平台的文档指南中已经写的很清楚了: 1.申请AppID.这一步需要在微信开放平台注册你的App就可以了,注意的是需要使用正式的keystore签名你的Ap

block传值以及利用block封装一个网络请求类

1.block在俩个UIViewController间传值 最近刚学了几招block 的高级用法,其实就是利用block语法在俩个UIViewController之间传值,在这里分享给初学者,同时也方便我自己理解.我们知道UINavigationController类管理UIViewController的时候,利用的是"栈"的思想,在这里不做过多解释,切入正题,假设我们现在有俩个UIViewController,viewC1和viewC2,viewC1比viewC2先进入到UINavi

asp.net core 微信支付工具类(H5支付,扫码支付,公众号支付,app支付)之2-H5支付

上一篇说到微信扫码支付,今天来分享下微信H5支付,适用场景为手机端非微信浏览器调用微信H5支付惊醒网站支付业务处理.申请开通微信H5支付工作不多做介绍,直接上代码. 首先是微信支付业务类(WxPayService)中的方法,传上必要的参数,该方法将会构造请求XML字符串到微信api接口,H5支付用到的是返回XML参数的mweb_url的值,控制器中的Aciton方法调用该业务层方法得到mweb_url的值,此时,前端ajax调用控制器返回mweb_url值,直接将window.localtion

React Native之微信分享(iOS Android)

React Native之微信分享(iOS Android) 在使用React Native开发项目的时候,基本都会使用到微信好友或者微信朋友圈分享功能吧,那么今天我就带大家实现以下RN微信好友以及朋友圈的分享功能. 一,应用申请审核 大家需要去微信开发平台去注册账号并且创建一个移动应用.(地址:https://open.weixin.qq.com),然后根据流程申请即可.但是需要注意的是Android需要获取签名信息: 下载安装上面的签名信息包apk,然后在上面输入android项目的包名,点