微信公众号开发--接入

微信公众号开发

  微信开发者工具:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

  需要绑定开发者账号:微信公众平台--开发者工具--web开发者工具--绑定开发者微信号

  微信公众平台接口调试工具:https://mp.weixin.qq.com/debug/

  接口调试需要使用“access_token”,access_token的获取需要从在基本设置中的url访问获取,其他终端基本无法获取

1.公众号类型

  (1)订阅号:主要偏于为用户传达资讯(类似报纸杂志),认证前后都是每天只可以群发一条消息;

  (2)服务号:主要偏于服务交互(类似银行,114,提供服务查询),认证前后都是每个月 可群发4条消息;

  (3)企业号:主要用于公司内部通讯使用,需要先验证身份才可以关注成功企业号。

2.微信公众号开发类型:

·设置模式:无需认证,无代码需求,完全依据微信官方管理平台,小白操作,功能有限

·浅交互模式:无需认证,需对接自己的服务器,可在服务器上部署自定义的消息规则,可实现以下接口的自定义交互

·深度交互模式:微信认证,获取更高级权限

3.微信公众号接入

(1)微信公众平台--开发--基本配置

APPID:公众号唯一标识,连接服务的基本账号,例如:“wx123456”

appsecret:标识密码,例如:“abcdefg”

url:填写自己服务器目录下接收微信消息的文件,例如:http://服务器域名/../wechatMsgAction.php

token:任意字符串,例如“token”

EncodingAESKey:随机生成密钥,例如:“aaaaaaaaaaaaaaaaaaa”

(2)接入操作

·民间接入方式

https://www.cnblogs.com/ganwenjun/p/7143254.html

编辑wechatMsgAction.php文件

 1 <?php
 2 define("APPID","wx123456");//填写自己的APPID
 3 define("APPSECRET","abcdefg");//填写自己的APPSECRET
 4 define("TOKEN", "token");//token随便填,只要一致就行。
 5 $wechat = new wechat();
 6 $wechat->valid();//微信公众号安全验证
 7
 8 class wechat{
 9     private $_appid;
10     private $_appsecret;
11     private $_token;
12     public function __construct(){
13         $this->_appid =APPID;
14         $this->_appsecret =APPSECRET;
15         $this->_token =TOKEN;
16     }
17     /**
18       *接入微信平台时验证
19     **/
20     public function valid()//检查安全性
21     {
22         $echoStr = $_GET["echostr"];
23
24         //valid signature , option
25         if($this->checkSignature()){//检查签名是否一致
26             echo $echoStr;//验证成功后,输出
27             exit;
28         }
29     }
30     /**
31       *验证签名
32     **/
33     private function checkSignature()
34     {
35         $signature = $_GET["signature"];
36         $timestamp = $_GET["timestamp"];
37         $nonce = $_GET["nonce"];
38         $token = TOKEN;
39         $tmpArr = array($token, $timestamp, $nonce);
40         sort($tmpArr, SORT_STRING);
41         $tmpStr = implode( $tmpArr );
42         $tmpStr = sha1( $tmpStr );
43
44         if( $tmpStr == $signature ){
45             return true;
46         }else{
47             return false;
48         }
49     }
50 }

官方接入方式:

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421135319

官方接入demo:

PHP示例代码下载:下载

(3)接入

确认将wechatMsgAction.php文件放在服务器配置中url所写的对应位置(如http://服务器域名/../wechatMsgAction.php)后,点击“提交”,若提示成功,则配置成功,否则自行排错

(4)验证URL有效性成功后即接入生效,成为开发者。你可以在公众平台网站中申请微信认证,认证成功后,将获得更多接口权限,满足更多业务需求。

成为开发者后,用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应,如回复消息。

4.接收推送

微信服务器在发给己方服务器的xml中的参数“MsgType”负责告诉己方服务器,用户操作的类型。


MsgType

Event

信息类型

text

 

用户发送了文本消息

image

 

用户发送了图片消息

voice

 

用户发送了语音消息

video

 

用户发送了视频消息

shortvideo

 

用户发送了小视频消息

location

 

用户发送了地理位置消息

link

 

用户发送了连接消息

event

subscribe

用户关注了公众号

event

unsubscribe

用户取消关注了公众号

event

subscribe+ EventKey

用户通过扫描带参二维码关注了公众号

event

SCAN

已关注公众号的用户扫描了带参数二维码

event

LOCATION

用户进入公众号时上报地理位置

event

CLICK

用户点击菜单拉取消息

event

VIEW

用户点击菜单跳转链接

具体参考

用户发送消息:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140453

用户操作事件:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140454

在微信服务器推送的消息中的关键字段:


ToUserName

开发者微信号,是接收推送的开发者

FromUserName

发送方帐号(一个OpenID),用户相对于公众号的唯一标识

5.事件处理

直接修改wechatMsgAction.php,添加事件处理函数,并使微信公众号推送事件调用该函数。

 1 define("APPID","wx123456");//填写自己的APPID
 2 define("APPSECRET","abcdefg");//填写自己的APPSECRET
 3 define("TOKEN", "token");//token随便填,只要一致就行。
 4 $wechat = new wechat();
 5 $WeChatMessage->Action();//不同于第三步的调用,此处是处理事件的函数
 6 class WeChatMessage{
 7     public function Action(){
 8   /*获得请求时POST:XML字符串不能用$_POST获取,因为没有key*/
 9         $xml_str = $GLOBALS[‘HTTP_RAW_POST_DATA‘];
10         if(empty($xml_str)){
11             die(‘‘);
12         }
13         if(!empty($xml_str)){
14             // 解析该xml字符串,利用simpleXML
15             libxml_disable_entity_loader(true);
16             //禁止xml实体解析,防止xml注入
17               $request_xml = simplexml_load_string($xml_str, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
18             //判断该消息的类型,通过元素MsgType
19             switch ($request_xml->MsgType){
20                 case ‘event‘:
21                     //判断具体的时间类型(关注、取消、点击)
22                     $event = $request_xml->Event;
23                     $Ticket = $request_xml->Ticket;
24                       if ($event==‘subscribe‘&&$Ticket==‘‘) { // 普通关注事件
25                           $this->_doSubscribe($request_xml);
26                       }
27                       if ($event==‘subscribe‘&&$Ticket!=‘‘) {//扫描渠道二维码关注
28                           $this->_doQRSubscribe($request_xml);
29                       }
30                       if ($event==‘SCAN‘&&$Ticket!=‘‘) {//已关注公众号扫描渠道二维码事件
31                           $this->_doSCAN($request_xml);
32                       }
33                       break;
34                 case ‘text‘://文本消息
35                     $this->_doText($request_xml);
36                     break;
37                 case ‘image‘://图片消息
38                     $this->_doImage($request_xml);
39                     break;
40                 case ‘voice‘://语音消息
41                     $this->_doVoice($request_xml);
42                     break;
43                 case ‘video‘://视频消息
44                     $this->_doVideo($request_xml);
45                     break;
46                 case ‘shortvideo‘://短视频消息
47                     $this->_doShortvideo($request_xml);
48                     break;
49                 case ‘location‘://位置消息
50                     $this->_doLocation($request_xml);
51                     break;
52                 case ‘link‘://链接消息
53                     $this->_doLink($request_xml);
54                     break;
55               }
56          }
57     }
58 }

根据MsgType,判断事件类型进行处理(_do*()是对应的处理函数,自行编写),当然,也可以依据其他信息处理事件(此代码为网上摘来的,如果知道原著线索,请联系我)

5.常用概念

access_token:

·access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用 access_token。

·开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。

·access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效

· 公众号和小程序均可以使用AppID和AppSecret调用本接口来获取access_token。

· access_token只能通过在IP白名单中的服务器调用接口才能被获取到

OpenID:

·在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID

·它加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同。

·公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。

6.回复消息模板

己方服务器向用户回复(发送)消息时,遵循一定的xml格式

具体参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140543

7.请求方式

根据接口请求需要,使用curl函数调用接口

参考:https://www.cnblogs.com/CHEUNGKAMING/p/5717429.html

get请求:

 1 //初始化
 2     $curl = curl_init();
 3     //设置抓取的url
 4     curl_setopt($curl, CURLOPT_URL, ‘http://www.baidu.com‘);
 5     //设置头文件的信息作为数据流输出
 6     curl_setopt($curl, CURLOPT_HEADER, 1);
 7     //设置获取的信息以文件流的形式返回,而不是直接输出。
 8     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 9     //执行命令
10     $data = curl_exec($curl);
11     //关闭URL请求
12     curl_close($curl);
13     //显示获得的数据
14     print_r($data);

post请求:

 1 //初始化
 2     $curl = curl_init();
 3     //设置抓取的url
 4     curl_setopt($curl, CURLOPT_URL, ‘http://www.baidu.com‘);
 5     //设置头文件的信息作为数据流输出
 6     curl_setopt($curl, CURLOPT_HEADER, 1);
 7     //设置获取的信息以文件流的形式返回,而不是直接输出。
 8     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 9     //设置post方式提交
10     curl_setopt($curl, CURLOPT_POST, 1);
11     //设置post数据
12     $post_data = array(
13         "username" => "coder",
14         "password" => "12345"
15         );
16     curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
17     //执行命令
18     $data = curl_exec($curl);
19     //关闭URL请求
20     curl_close($curl);
21     //显示获得的数据
22     print_r($data);

8.主动推送消息

需认证,调用客服消息接口

具体参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140547

现在只是模糊向的开发操作,如果有错误,请联系我。

在完成这些操作时,参考了一些其他博文,但当时没有好习惯,用完就找不到了,如果有知道线索的请联系我。

原文地址:https://www.cnblogs.com/mudaoyuye/p/9673986.html

时间: 2024-10-16 13:14:15

微信公众号开发--接入的相关文章

C#微信公众号开发系列教程二(新手接入指南)

http://www.cnblogs.com/zskbll/p/4093954.html 此系列前面已经更新了两篇博文了,都是微信开发的前期准备工作,现在切入正题,本篇讲解新手接入的步骤与方法,大神可直接跳过,也欢迎大神吐槽. 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) 微信公众平台消息接口的工作原理大概可以这样理解:从用户端到公众号端一个流程是这样的,用户发送消息到微信服务器,微

[.NET] 简单接入微信公众号开发:实现自动回复

简单接入微信公众号开发:实现自动回复 一.前提 先申请微信公众号的授权,找到或配置几个关键的信息(开发者ID.开发者密码.IP白名单.令牌和消息加解密密钥等). 二.基本配置信息解读 开发者ID:固定的: 开发者密码:自己扫一下就可以看到: IP白名单:设置自己配置服务器的地址: 服务器地址(URL):稍后详解: 令牌:随便写,按规则: 消息加解密密钥:随便写,或者随机生成: 三.配置服务器地址(URL) 服务器地址(URL)应该怎么配置呢?图片上的配置的地址是:http://www.nidie

微信公众号开发纪要(2)-微信公众号接入

当搭建好微信公众号开发环境后,先要和微信公众号建立联系.从本质上来说,微信公众号开发就是如何让自己的服务器与微信服务器进行交互的一个过程. 微信服务器就相当于一个转发服务器,终端(手机.Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器.应用服务器处理完毕后,将响应数据回发给微信服务器,微信服务器再将具体响应信息回复到微信App终端. 通信协议为:HTTP 数据传输格式为:XML 具体的流程如下图所示: 来一张更加直观的图吧: 我们需要做的事情,就是对微信服务器转发的HT

网络架构、云平台和微信公众平台开发接入

版权声明:本文为博主原创文章,未经博主允许不得转载. 云与后端相关的技术似乎并不属于嵌入式和物联智能硬件开发工程师的范畴,但是嵌入式开发工程师有必要认识成熟的网络架构和相关的云技术,以拓展自己在系统架构方面的视野.大数据分析是物联网背后的核心价值,物联智能硬件是物联大系统的终端,开发工程师不仅要深入精通物联技术,也应该去理解大系统,甚至整个生态领域的相关技术. 作为嵌入式开发工程师,也许并不需要熟悉云和后端的技术开发,但至少要对其中用到的技术和接口有一定的认识. 一.网络架构 常见的网络架构分为

利用OpenShift托管Node.js Web服务进行微信公众号开发

最近写了一个微信的翻译机器人.用户只要关注该微信号,发送英文的消息,就能收到中文翻译的回复.后台是用Node.js写的,托管在OpenShift的Paas平台上.翻译过程实际上是调用微软的Bing translation API做的,代码中用到了alexu84的bing-translate和JacksonTian的wechat这两个npm模块.下面把做的过程详细说一下. 1. 微信公众号开发 首先是要到https://mp.weixin.qq.com 申请一个公众号,并申请成为开发者.目前个人只

nodejs + BAE 搭建微信公众号开发平台

闲来无事创建了一个微信公众账号,名曰“深圳生活小助手”, 关注的人不多,平时发一些深圳新闻,趣事啥的,为了丰富公众号的内容,准备添加一些便民查询功能,例如天气预报.快递查询等等. 于是就有了本文的内容. 深圳的读者扫描关注支持下啊... 闲话不多说,本文主要介绍的就是如何基于nodejs和百度云搭建微信公众号开发平台,下一节介绍如何基于该平台实现了一个简单的天气预报查询功能的小例子. 1. 使用Express搭建本地站点 Express 是一个简洁.灵活的 node.js Web 应用开发框架,

微信公众号开发模式开启总结

一直没想过要开个微信公众号,想到经营公众号估计跟经营微博一样,像我这种素质的,肯定没有这种基因. 师兄推荐了一个学经济的妹纸过来请教我微信公众号开发者模式如何开启,妹纸请教,那必须上刀山下火海哇. 稍作研究了一下,其实并不复杂,妹纸被卡到的地方是输入URL和Token的地方,其实这个URL和Token想明白了还是很容易理解的.微信的开发者模式的意义在于,当订阅者通过菜单栏或者发送消息等方式向公众号发送请求的时候,请求会首先到达微信服务器,然后微信服务器需要把这个请求再转发给开发者自己的网站服务器

微信公众号开发系列教程一(调试环境部署)

原文:微信公众号开发系列教程一(调试环境部署) 目录 C#微信公众号开发系列教程一(调试环境部署) C#微信公众号开发系列教程一(调试环境部署续:vs远程调试) C#微信公众号开发系列教程二(新手接入指南) 微信公众号火了好一阵子了,笔者算是比较早接触微信公众号开发的了,大概做了一年半了,从最开始的到处网上找demo到现在也开发一些公众号.园子里关于微信开发的教程已经数不胜数了,我也准备来凑凑热闹.一是梳理下这段时间开发的经验,二是希望能帮到想做微信开发的小伙伴们,希望大大神们吐槽的时候悠着点,

微信公众号开发前期准备工作

随着移动互联网越来越普及,众多企业都注册了微信公众号,于是微信公众号的开发也越来越多,为了不被世界所淘汰,特地学习下微信公众号的开发,已备不时之需! 按照惯例,学习一门新技术或者新框架,咱们还是从官方提供的文档开始,于是找到微信公众平台开发者文档(http://mp.weixin.qq.com/wiki/home/index.html) 1.微信公众平台接口测试号申请 按照文档指引,咱们得先申请一个微信公众平台接口测试账号(http://mp.weixin.qq.com/debug/cgi-bi