19

前言

当作为小白,来开发微信的时候,只依据官方文档来开发是很痛苦的,怎么配置,怎么编写代码文件,怎么让映射到外网访问,问题很多,比较痛苦。
下面内容来解决这些痛点,有不懂的问题,可以在下面留言评论哦。
会出一系列的【微信服务号开发】详细文章,敬请关注!

接入指南

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

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服务器启动,自己去下载。

第六步:最后填写好配置

第七步:最后点击接口配置的提交按钮

如果显示配置失败,证明这个接口配置失败

如果出现以下配置,证明配置成功


西树先森
7.1k 声望926 粉丝

从事开发多年,前端、后端(go、Python、php)、服务架构都有涉猎,经历过大公司、创业公司,擅长前端及公司技术选型。