微信开发公众号

一、接入概述
1.开始前的准备

接入微信公众平台开发,开发者需要按照如下步骤完成:

  • 1、填写服务器配置

  • 2、验证服务器地址的有效性

  • 3、依据接口文档实现业务逻辑

登录微信公众平台,找到 开发-》基本配置-》服务器配置

然后需要配置好服务器环境,域名需要备案,并且端口必须是80或者443.

比如使用php,那么需要将你填写的服务器地址导向认证文件,认证写法官方给了例子,下面是我的写法:

<?php
/*** Created by PhpStorm.* User: ycp* Date: 2018/4/22* Time: 21:07*/namespace App\Http\Controllers\Weixin;/*** wechat php test*///define your token
define("TOKEN", "ycp");class TestController
{public function test(){$this->valid();}public function valid(){$echoStr = $_GET["echostr"];//valid signature , optionif($this->checkSignature()){echo $echoStr;exit;}}public function responseMsg(){//get post data, May be due to the different environments$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];//extract post dataif (!empty($postStr)){/* libxml_disable_entity_loader is to prevent XML eXternal Entity Injection,the best way is to check the validity of xml by yourself */libxml_disable_entity_loader(true);$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$fromUsername = $postObj->FromUserName;$toUsername = $postObj->ToUserName;$keyword = trim($postObj->Content);$time = time();$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content><FuncFlag>0</FuncFlag></xml>";if(!empty( $keyword )){$msgType = "text";$contentStr = "Welcome to wechat world!";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);echo $resultStr;}else{echo "Input something...";}}else {echo "";exit;}}private function checkSignature(){// you must define TOKEN by yourselfif (!defined("TOKEN")) {throw new Exception('TOKEN is not defined!');}$signature = $_GET["signature"];$timestamp = $_GET["timestamp"];$nonce = $_GET["nonce"];$token = TOKEN;$tmpArr = array($token, $timestamp, $nonce);// use SORT_STRING rulesort($tmpArr, SORT_STRING);$tmpStr = implode( $tmpArr );$tmpStr = sha1( $tmpStr );if( $tmpStr == $signature ){return true;}else{return false;}}
}

验证通过后这个文件就没什么用了,主要是让微信服务器认证我们的服务器。

然后服务器配置点击启用,那么此后公众号用户的一切事件,微信服务器接受到之后将会推送到我们自己的服务器,就可以开始开发了。

2.获取access_token

access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。

公众平台的API调用所需的access_token的使用及生成方式说明:

  • 1、建议公众号开发者使用中控服务器统一获取和刷新Access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务;

  • 2、目前Access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;

  • 3、Access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。

公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。

接口调用请求说明

https请求方式: GET
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
参数说明

参数 是否必须 说明
grant_type 获取access_token填写client_credential
appid 第三方用户唯一凭证
secret 第三方用户唯一凭证密钥,即appsecret

因为需要定时获取,所以可以设置一个定时任务

//获取access_token并保存到token.txt文件中public static function build_access_token(){$ch = curl_init(); //初始化一个CURL对象curl_setopt($ch, CURLOPT_URL, "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".self::$appId."&secret=".self::$AppSecret);//设置你所需要抓取的URLcurl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置curl参数,要求结果是否输出到屏幕上,为true的时候是不返回到网页中,假设上面的0换成1的话,那么接下来的$data就需要echo一下。curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//跳过证书验证curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);  // 从证书中检查SSL加密算法是否存在$data = json_decode(curl_exec($ch));if($data->access_token){$token_file = fopen("token.txt","w") or die("Unable to open file!");//打开token.txt文件,没有会新建fwrite($token_file,$data->access_token);//重写tken.txt全部内容fclose($token_file);//关闭文件流}else{echo $data->errmsg;}curl_close($ch);}//设置定时器,每两小时执行一次build_access_token()函数获取一次access_tokenpublic static function set_interval(){ignore_user_abort();//关闭浏览器仍然执行set_time_limit(0);//让程序一直执行下去$interval = 7200;//每隔一定时间运行do{self::build_access_token();sleep($interval);//等待时间,进行下一次操作。}while(true);}//读取tokenpublic static function read_token(){$token_file = fopen("token.txt", "r") or die("Unable to open file!");$rs = fgets($token_file);fclose($token_file);return $rs;}

然后每次都可以使用


class TestController
{public function __construct(){$this->access_token = self::read_token();}public function test(){echo $this->access_token;}//读取tokenpublic static function read_token(){$token_file = fopen("token.txt", "r") or die("Unable to open file!");$rs = fgets($token_file);fclose($token_file);return $rs;}
}

微信开发公众号--基础相关推荐

  1. 微信开发------------公众号支付统一下单整个流程

    申请微信支付在这里:https://blog.csdn.net/dmw412724/article/details/82735906 微信支付后台搭建(阅读本文的基础):https://blog.cs ...

  2. 微信开发公众号页面配置JS-SDK调用微信接口

    一:前期准备, 1,首先你需要一台服务器,:阿里云或者腾讯云啥的,最便宜的可以选择类似阿里云这种轻量级服务器,和域名配置好A记录. 2,需要在服务器打架node环境:可以找客服帮忙基本配置环境搭好. ...

  3. 微信开发 - 公众号授权登录方案(含跳转关注公众号)

    公众号授权登录代码(含跳转关注公众号) 注意: 跳转微信公众号页: https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzU5 ...

  4. 公众号php视频教程,微信开发公众号平台视频教程

    微信公众平台,给个人.企业和组织提供业务服务与用户管理能力的全新服务平台.微信公众平台主要有实时交流.消息发送和素材管理.用户可以对公众账户的粉丝分组管理.实时交流,同时也可以使用高级功能-编辑模式和 ...

  5. 微信开发公众号本地调试

    使用vps的ssh端口转发功能,将请求转发到本地. 1. 设置vps 的ngxin server {listen 80;server_name wechat.heartwith.me;location ...

  6. 微信三方代开发公众号消息管理-群发消息

    三方代开发公众号消息管理-群发消息 微信公众平台为订阅号提供了每天1条的群发权限,为服务号提供每月(自然月)4条的群发权限.而对于某些具备开发能力的公众号运营者,可以通过高级群发接口,实现更灵活的群发 ...

  7. 微信jsapi支付获取code_JAVA开发微信支付-公众号支付/微信浏览器支付(JSAPI)

    写这篇文章的目的有2个,一是自己的项目刚开发完微信支付功能,趁热回个炉温习一下,二也是帮助像我这样对微信支付不熟悉,反复看了多天文档还是一知半解,原理都没摸清,更不要说实现了.本以为网上的微信开发教程 ...

  8. 微信公众号文章复制到服务器后台,微信个人公众号开发-打通后台服务器任督二脉...

    上篇文章 和大家分享了如何搭建免费的微信个人公众号开发所需要的后台服务器. 这篇就来继续说说如何让你的公众号与后台服务器交互. 一. 微信公众号接口准备 这里我们要用前面搭建的aws服务器上部署的fl ...

  9. php开发公众号素材管理总结

    微信开发中, 要使用的素材都必须先上传到微信服务器, 才能在你的内容中使用, 素材管理可以说是重要的基础, 后面的开发需要用到这节课程实现的功能, 建议同学们看完后, 一定要跟着视频, 把代码敲一遍- ...

  10. 企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET

    企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET 原文:企业号微信支付 公众号支付 H5调起支付API示例代码 JSSDK C# .NET 先看效果 1.本文演示的是 ...

最新文章

  1. mysql系统变量_MySQL 系统变量(system variables)
  2. SEO -- 搜索引擎优化
  3. 【OpenCV 例程200篇】03. 图像的显示(cv2.imshow)
  4. 机器学习笔记(三)——正则化最小二乘法
  5. 动态规划求解装箱问题(洛谷P1049题题解,Java语言描述)
  6. C ++ 类 | 类的创建和使用_1
  7. java代码运行Python程序
  8. input和button放在同一行_黑龙江作家协会冯殿波散文集《足音》84情系东保卫,魅力采风行...
  9. 小甲鱼python课后题简书_MOOC_Python语言程序设计(嵩天)课后练习_第二周
  10. Zookeeper学习笔记01
  11. [原]解决百度地图多个Marker和InfoWindow时总是打开最后一个InfoWindow的问题
  12. 宝宝专业智力测试软件,儿童医院心理科做智商检测-儿童智力测试仪_儿童注意力测试仪_儿童综合素质测试仪/测评系统...
  13. 研究了1天的ckfinder记录
  14. 2020年“有史以来”全网最全1309道BAT大厂java面试题,mongodb原理知识
  15. Verilog 实现千兆网UDP协议 基于88E1111--数据发送
  16. QGIS基于多期哨兵2影像遥感指数阈值法提取冬小麦分布(1)-数据预处理
  17. Python 中 concurrent.futures 模块使用说明
  18. 我和TiDB的故事 | 遇上你是我的缘
  19. 安卓调用系统截图方法
  20. 爪哇的学习 (一见伊人误终生)

热门文章

  1. cs231n-Lecture1
  2. 信息安全管理制度办法
  3. SpringBoot配置SSL证书HTTPS详细流程
  4. HTML前台时间格式不对,出现英文格式
  5. 你认为量化交易炒股接口能不能替代人工交易?
  6. 【vue-cli3源码解析】02_vue create命令
  7. 利用命名管道方式使主机与虚拟机的串口通讯
  8. go语言调用ipfs进行文件的上传下载
  9. php 车型接口,车型大全API免费接口,车型大全API接口付费定制-进制数据
  10. 圣诞节礼物之——圣诞节主题的免费屏幕保护程序