基本配置——开启公众号开发者模式
微wx笑 2019-09-25【入门】 11 0关键字: 微信公众号 php
要进行微信公众号开发,首先要进行一些配置;我自己是订阅号(未通过微信认证,个人账号无法开通微信认证),使用 php 开发;如果你希望使用 Python 的话,建议参考官方帮助:开启公众号开发
要进行微信公众号开发,首先要进行一些配置;我自己是订阅号(未通过微信认证,个人账号无法开通微信认证),使用 php 开发;如果你希望使用 Python 的话,建议参考官方帮助:开启公众号开发者模式
前提/依赖项
1、微信公众号,没有的话先注册一个,或者申请一个测试账号(测试账号的好处是:无需申请公众帐号、可在测试帐号中体验并测试微信公众平台所有高级接口)。
2、域名及服务器(云虚拟主机/云服务器),我使用的阿里云服务器;先领券再购买。
3、网站后台编程语言知识,php/.NET/Java/Python/go/swift/nodejs/cgi(c/c++/perl)。
基本原理
注:此部分内容引用自:微信开发学习总结(二)——微信开发入门
微信服务器就相当于一个转发服务器,终端(手机、Pad等)发起请求至微信服务器,微信服务器然后将请求转发给我们的应用服务器。应用服务器处理完毕后,将响应数据回发给微信服务器,微信服务器再将具体响应信息回复到微信App终端。
通信协议为:HTTP
数据传输格式为:XML
具体的流程如下图所示:
来一张更加直观的图吧:
我们需要做的事情,就是对微信服务器转发的HTTP请求做出响应。具体的请求内容,我们按照特定的XML格式去解析,处理完毕后,也要按照特定的XML格式返回。
基本配置
登录微信公众平台,包括:订阅号,服务号,企业号;
找到左侧菜单最下面的:基本配置
可以看到右侧显示如下界面:
开发者ID(AppID),开发者密码就是调用API时证明自己身份的凭据;
IP白名单,是用来告诉微信接口服务器,哪些IP是你的服务器所使用的IP,这样即使是你的开发者ID(AppID),开发者密码都被别人获取到了,它也没办法假冒你来成功调用接口。
把自己的服务器ip白名单配置上。
服务器配置
服务器地址(URL),这是一个回调URL,也就是有什么消息(比如关注你的人给你的订阅号发消息)、事件(比如有人关注你,有人取关),微信都会向你这个URL发请求(POST),这样你就可以接收到并自主进行处理。
Token就是用来计算和验证签名的,内容自己随意定。
消息加解密密钥(EncodingAESKey)用来加密消息内容,参考下面的例子:
加密后: <xml> <Encrypt><![CDATA[5T/eo802wuriimeVw84zbJgiL7crV84eecv615nzogjqTSbOLuuSCzIm7EojsIZxq8gboTvq/9H2cPSnN7p/vv7zoyt8OdYIyWoSmTy/hYzwxzDqHex5zOZm2jLpxv9NHL4z6rWCqdxroYGjOYys1CKCXVfpUzX2s9LCj02iDhscPTg3drZn1B3MUeDzmTFvuxnXAAsKgtycGO9q29/AqI6EeKhDPRu6XVcdE9Tg2Sg4c6cXZbJCjYmYCyxw0ycf5761NRc1ahWucQ9zZbDuyI65q/xfrJfe60KXeXa6R8mYAZsyfnEJ31Gaq/wEh3ktRo9Vzd8QzMLxaC49UUCiVNtV4GCZ0fcmWapWapc7DfuRMuP5kEc9R4dKE4pyn9pmamduirEM4IqdxEvUGp9OT897CiMfFbJppqClG0E1q/09qd4sNwLdrdhZEtKeGKxaLqWWwekKFMs8uEP3t0m6rAL19LX5eaJRquubh8m7i8wU1CQgVgIt0P+96wyEJfB/bJ/+ohx+pC3KWgrYxLngIZ1RjRTgPOyXX1VI5wws92dfbsB5hX4nX03UetmnyxnBeaNYC58CJ0QJQVCVgV0l5C1Oexe1tLq+LTsESsujpnXHSyfAezz+VvTiicIdsVky]]></Encrypt> <MsgSignature><![CDATA[2833c5dc4cb248f8b16a42afc94443ca189085e0]]></MsgSignature> <TimeStamp>1409304348</TimeStamp> <Nonce><![CDATA[xxxxxx]]></Nonce> </xml> 解密后: <xml><ToUserName><![CDATA[oia2Tj我是中文jewbmiOUlr6X-1crbLOvLw]]></ToUserName><FromUserName><![CDATA[gh_7f083739789a]]></FromUserName><CreateTime>1407743423</CreateTime><MsgType><![CDATA[video]]></MsgType><Video><MediaId><![CDATA[eYJ1MbwPRJtOvIEabaxHs7TX2D-HV71s79GUxqdUkjm6Gs2Ed1KF3ulAOA9H1xG0]]></MediaId><Title><![CDATA[testCallBackReplyVideo]]></Title><Description><![CDATA[testCallBackReplyVideo]]></Description></Video></xml>
服务器地址(URL)配置
比如你的网站域名是:https://ivu4e.com/,你可以在网站根目录下为其单独创建一个目录,比如“weixin”来存放相关的文件(当然,有条件你也可以为其单独设置一个域名,比如:wx.ivu4e.com,单独一个站点,文件直接放在根目录);
在“weixin”文件夹下创建一个 index.php,代码如下:
<?php> define("TOKEN", "你自己定义的Token"); $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest { public function valid() { $echoStr = $_GET["echostr"]; if($this->checkSignature()){ echo $echoStr; exit; } } private function checkSignature() { $signature = $_GET["signature"]; $timestamp = $_GET["timestamp"]; $nonce = $_GET["nonce"]; $token = TOKEN; $tmpArr = array($token, $timestamp, $nonce); sort($tmpArr); $tmpStr = implode( $tmpArr ); $tmpStr = sha1( $tmpStr ); if( $tmpStr == $signature ){ return true; }else{ return false; } } } ?>
“你自己定义的Token”记得修改哦!
这样,服务器地址(URL)就填写:https://ivu4e.com/weixin/index.php,记得换成你的域名哦。
消息加解密方式先使用明文模式,方便查看调试;
然后就可以提交,启用服务器配置了。
注意:服务器配置启用成功后,上面 index.php 中的代码就没用了,你可以替换为实际的业务代码了!
逻辑流程图:
参考:
本文由 微wx笑 创作,采用 署名-非商业性使用-相同方式共享 4.0 许可协议,转载请附上原文出处链接及本声明。
原文链接:https://www.ivu4e.cn/collection/mp-weixin/started/2019-09-25/227.html