php微信公众号开发

一、Introduction

微信公众号是一个平台。目前,提供了4类帐号,订阅号、服务号、小程序、企业微信。具体区别在官网有说明。

二、使用接口测试号开发

1.        申请接口测试号

平台提供了接口测试号。到公众平台开发者文档,可以申请测试号开发。申请后提供appID和appsecret等,以供开发使用。

2.        access_token

access_token是公众号的全局唯一接口调用凭证,调用接口时都需使用access_token,以提高安全性。access_token的请求方式,通过客户端,或通过企业服务器。获取方式三种,

第一种,通过浏览器访问url,https请求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

第二种,通过微信平台获取,在开发者文档获取access_token,点击使用网页调试工具调试该接口;

第三种,编写php程序来获取,使用cURL函数库,client  url library。使用curl,先在php.ini开启curl的扩展。

<?php

/**

 * 使用curl函数

 */

function_request($curl, $https=true, $method='get', $data=null)

{

         //初始化

         $ch = curl_init();

         //设置url

         curl_setopt($ch, CURLOPT_URL, $curl);

         //设置不需要头信息

         curl_setopt($ch, CURLOPT_HEADER,false);

         //至获取页面内容,但不输出

         curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);

         if($https)

         {

                   //设置不做服务器认证

                   curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);

                   //不做客户端认证

                   curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);

         }

         if($method == 'post')

         {

                   //设置请求方式为post

                   curl_setopt($ch,CURLOPT_POST, true);

                   //设置请求数据

                   curl_setopt($ch,CURLOPT_POSTFIELDS, $data);

         }

         //执行并接收输出

         $str = curl_exec($ch);

         //释放资源

         curl_close($ch);

         return $str;

}

echo _request("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx49119aeb8923abfd&secret=96e13016d1cb24026545e5ed7c133fac");

/**

 * 获取access_token

 */

function_getAccesstoken()

{

         $file = './accessToken.txt';

         //判断文件是否存在

         if(file_exists($file))

         {

                   $content =file_get_contents($file);

                   //json解码文件的内容

                   $content =json_decode($content);

                   //判断是否过期

                   if(time() - filemtime($file)< $content->expires_in)

                   {

                            return$content->access_token;

                   }                

         }

         $content =_request("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=wx49119aeb8923abfd&secret=96e13016d1cb24026545e5ed7c133fac");

         file_put_contents($file, $content);

         $content = json_decode($content);

         return $content->access_token;

}



echo_getAccesstoken();

3.        使用php封装一个获取access_token的工具类

<?php

/**

 * 定义微信工具类

 */

class WeChat

{

         //appid

         private $_appid;

         //appsecret

         private $_appsecret;

         //token

         private $_token;



         /**********************************************************/



         /**

          * 构造函数

          */

         public function __construct($appid,$appsecret, $token)

         {

                   $this->_appid = $appid;

                   $this->_appsecret =$appsecret;

                   $this->_token = $token;

         }



         /**

          * 使用curl函数抓取url内容

          */

         private function _request($curl,$https=true, $method='get', $data=null)

         {

                   //初始化

                   $ch = curl_init();

                   //设置url

                   curl_setopt($ch, CURLOPT_URL,$curl);

                   //设置不需要头信息

                   curl_setopt($ch,CURLOPT_HEADER, false);

                   //至获取页面内容,但不输出

                   curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);

                   if($https)

                   {

                            //设置不做服务器认证

                            curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);

                            //不做客户端认证

                            curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);

                   }

                   if($method == 'post')

                   {

                            //设置请求方式为post

                            curl_setopt($ch,CURLOPT_POST, true);

                            //设置请求数据

                            curl_setopt($ch,CURLOPT_POSTFIELDS, $data);

                   }

                   //执行并接收输出

                   $str = curl_exec($ch);

                   //释放资源

                   curl_close($ch);

                   return $str;

         }



         /**

          * 获取access_token

          */

         private function _getAccesstoken()

         {

                   $file = './accessToken.txt';

                   //判断文件是否存在

                   if(file_exists($file))

                   {

                            $content =file_get_contents($file);

                            //json解码文件的内容

                            $content =json_decode($content);

                            //判断是否过期

                            if(time() -filemtime($file) < $content->expires_in)

                            {

                                      return $content->access_token;

                            }                

                   }

                   $content =_request("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$this->_appid."&secret=".$this->_appsecret);

                   file_put_contents($file,$content);

                   $content = json_decode($content);

                   return$content->access_token;

         }



}

4.        生成带参数的二维码

QR Code,Quick  Response Code。用于用户渠道推广分析和用户帐号绑定等场景。分为临时二维码和永久二维码。获取的步骤,创建二维码ticket,凭借ticket到指定url获取二维码。

获取ticket

在工具类中添加获取ticket的方法

         /**

          * 获取ticket

          * expires_seconds,int,二维码的有效期,单位s;

          * type,str,二维码的类型,永久或临时;

          * scene,int,使用二维码场景编号;

          */

         public function_getTicket($expires_seconds = 604800, $type = "temp", $scene = 1)

         {

                   if($type == "temp")

                   {

                            $data ='{"expire_seconds": '.$expires_seconds.', "action_name":"QR_STR_SCENE", "action_info": {"scene":{"scene_str": "'.$scene.'"}}}';



                            return$this->_request("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->_getAccesstoken(),true, "post", $data);

                   }

                   else

                   {

                            $data ='{"action_name": "QR_LIMIT_STR_SCENE","action_info": {"scene": {"scene_str":"'.$scene.'"}}}';

                            return$this->_request("https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=".$this->_getAccesstoken(),true, "post", $data);

                   }



         }

通过ticket获取二维码

在类中添加获取二维码的方法

         /**

          * 获取二维码的方法

          */

         public function_getQRCode($expires_seconds = '604800', $type = 'temp', $scene = 1)

         {

                   $content =$this->_getTicket($expires_seconds, $type, $scene);

                   $content =json_decode($content);

                   $ticket =$content->ticket;

                   $image =$this->_request("https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=".urlencode($ticket));

                   $file ="./".date("Y-m-d").'_'.$type.$scene.".jpg";

                   file_put_contents($file,$image);

                   return $image;

         }

测试获取二维码的方法

<?php

define("APPID","wx49119aeb8923abfd");

define("APPSECRET","96e13016d1cb24026545e5ed7c133fac");

define("TOKEN","");

require'./Wechat.class.php';

header('Content-type:image/jpg');

$wechat = newWeChat(APPID, APPSECRET, TOKEN);

// echo $wechat->_getTicket($expires_seconds= 604800, $type = "yongjiu", $scene = 2);

echo$wechat->_getQRCode(604800, 'temp', 5);

5.        接口配置

接入校验,就是微信服务器地址是否正确。在接收消息时,要验证消息真实性。

平台官网提供了验证的样本代码,可以修改token为自己需要的。

<?php

/**

  * wechat php test

  * update time: 20141008

  */



//define your token

define("TOKEN"
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
phpWechat 是由一个具有多年行业开发经验的前端 UI 设计师、PHP开发工程师组成的团队设计、研发的一套的微信公众平台管理系统,您可以瞬间完成一个公共号或者PC站或者两者皆有的平台搭建。 phpWeChat 微信+网站开发框架功能亮点: 1、100%开源,没有任何加密文件 phpWeChat核心文件100%开源,没有任何加密文件,开发者可以放心使用而无需担心留有后门程序等。 2、程序轻量级,一天读完所有代码 核心框架压缩包只有2.66M,十分利于开发者迅速阅读全部代码。 3、代码严谨,结构清晰 phpWeChat使用MVC开发模式,各个功能模块之间独立并目录结构统一。开发者可迅速掌握phpWeChat的框架结构。 4、二次开发文档十分完善 我们提供了完善的phpWeChat二次开发文档,便于开发者学习与查阅。 5、高度集成微信接口 phpWeChat高度集成了微信公共号的自动回复、菜单管理、素材管理、模板消息、粉丝管理、微信支付等常用接口,您只需一个函数或2/3行代码即可实现原本需要很费时费力才能开发的功能。 6、phpWeChat也是一个PC(网站)开发框架和CMS 慢慢您会发现,phpWeChat是一个更接近CMS功能的框架。 7、高度封装常用开发功能 只需一两行固定的代码,您便可以写出列表分页、微信支付、文件上传、邮件发送、短信发送等功能。 8、数据结构合理,负载强劲 phpWeChat集成了常见的内存级缓存(MemCache)、文件缓存处理方案,使得系统更符合大数据、大并发的公共号或网站使用。 9、集成应用市场,功能拓展一瞬间 phpWeChat集成了应用市场并在线安装应用的功能,您可以在一瞬间安装完成其他开发开发的功能模块。 phpWeChat安装方法: 将下载的程序压缩包(zip格式)解压后,将全部文件和文件夹上传至网站根目录。然后输入域名/install.php 即可进入安装程序。 注意:安装phpWeChat前请先创建好phpWeChat所需的数据库。 phpWeChat 目录结构: addons 功能模块目录 admin 公用后台目录 api 插件目录 data 数据缓存目录 install 安装程序目录,安装后请改名或删除 include 公用操作类目录 statics 静态文件目录 template 视图(模板)目录 upload 上传文件存放目录 phpWeChat 更新日志: 新版v1.0.3发布: phpWeChat PC+微信公众号开发核心框架v1.0.3针对v1.0.2版本出现的问题,主要修复了和增加了以下功能: 1、优化自定义模块操作; 2、优化安装过程; 3、修复一处在线支付的PHP版本兼容问题; 4、修复一处自定义模块的问题; 5、修复后台模块管理显示未知版本的bug; 6、修复粉丝行为IP报错的Bug; 7、删除一些冗余代码; 8、修复消息模板不存在时,一直提示[同步中]的bug。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值