前言
当作为小白,来开发微信的时候,只依据官方文档来开发是很痛苦的,怎么配置,怎么编写代码文件,怎么让映射到外网访问,问题很多,比较痛苦。
下面内容来解决这些痛点,有不懂的问题,可以在下面留言评论哦。
会出一系列的【微信服务号开发】详细文章,敬请关注!
接入指南
接入微信公众平台开发,开发者需要按照如下步骤完成:
1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑
详细实现
第一步:填写服务器配置
登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。
同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。
第二步:微信开发测试号登陆地址
- 登录测试号
http://mp.weixin.qq.com/debug...
http://stark.ngrok.wdevelop.c...
stark
第三步: 填写接口配置信息
填写 URL
此处填写一个外网可以访问的接口,必须是80端口,就是url后面不能跟其他自定义端口。
当我们点击底下提交按钮的时候,微信会像这接口发送一个get请求
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序
2)将三个参数字符串拼接成一个字符串进行sha1加密
3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
填写 token
token 随便填写,但是要和代码中的token保持一致
第四步 验证的URL接口php代码实现
我们创建一个wx.php 文件,最后把这个文件外网映射出去,可以让微信访问。
- 注意 :
$token = 'stark'; //这的token 和 上面填写的保持一致
- wx.php 文件实现
<?php
function checkSignature()
{
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = 'stark'; //这的token 和 上面填写的保持一致
$tmpArr = array($token,$timestamp, $nonce);
// 1)将token、timestamp、nonce三个参数进行字典序排序
sort($tmpArr, SORT_STRING);
// 2)将三个参数字符串拼接成一个字符串进行sha1加密
$tmpStr = implode( $tmpArr );
$tmpStr = sha1( $tmpStr );
// 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
if( $signature == $tmpStr ){
//成功后输出一个随机字符串
echo $_GET['echostr'];
return true;
}else{
echo 'faild';
return false;
}
}
checkSignature();
第五步:让上面的文件外网映射
使用ngrok
下面提供ngrok服务文件
加入qq群号码:205366897 下载ngrok服务
把下载的ngrok文件解压,进入文件里面
安装shift 右键 会出现 在此处打开命令行(就是打开了cmd 一定要在 在cmd 里面执行 不能使用 git bash)
在打开的窗口里面输入 :
ngrok -config=ngrok.cfg -subdomain stark 80
如果出现这个错误,说明这个子域名 被别人占用
如果出现这个图片,证明 开启成功
其中 stark 是子域名,只能唯一,你要改成自己定义的,如果别人使用了这个域名你就不能使用了
这样就把本地的80端口映射到外网
映射之前,必须在本地启动一个80端口
我们使用xampp 工具做本地的web服务器启动,自己去下载。
第六步:最后填写好配置
第七步:最后点击接口配置的提交按钮
如果显示配置失败,证明这个接口配置失败
如果出现以下配置,证明配置成功
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。