[TOC]
## 订阅号服务开发环境
### 开通订阅号
1. 首先,有兴趣的朋友可以先到`微信公众平台`[注册]([https://mp.weixin.qq.com/](https://mp.weixin.qq.com/))一个订阅号即可
![](https://box.kancloud.cn/45118af57defe462d25886b7072a543c_774x501.png)
本项目直接使用测试工作号进行开发,微信公众平台接口测试帐号申请地址如:
[https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login](https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)
![](https://box.kancloud.cn/c038b7f09aa72a287a4aa036fc9eaf4c_477x313.png)
2. 微信扫一扫授权后,可打开测试号管理页面如下
![](https://box.kancloud.cn/c602e5b3ca34f046b6fd65bfc5349d2b_865x897.png)
>红色圈住的地方是重点,后面再介绍怎么用
![](https://box.kancloud.cn/e66a1a408b7ff17714c6c1c23e0d0a1a_965x306.png)
到了这里,我们先了解下微信服务的数据流,这样我们就可以了解上图红圈中的URL代表的含义了,URL和Token先不用急着填,看到后面就明白了。
### 创建开发者服务
创建一个django项目,提供服务,假设你是有django基础
一、安装依赖包:`pip install wechatpy`
wechat-sdk文档见:https://wechatpy.readthedocs.io/zh_CN/master/index.html
二、django项目代码:
views.py:
```
from django.http import HttpResponse
from wechatpy.exceptions import InvalidSignatureException
from wechatpy.utils import check_signature
def wechat(request):
# GET 方式用于微信公众平台绑定验证
if request.method == 'GET':
signature = request.GET.get('signature', "")
timestamp = request.GET.get('timestamp', "")
nonce = request.GET.get('nonce', "")
echo_str = request.GET.get('echostr', "")
token = 'MiltonGuan'
try:
check_signature(token, signature, timestamp, nonce)
print("微信签名验证通过")
except InvalidSignatureException:
echo_str = '微信签名验证失败'
return HttpResponse(echo_str)
```
url.py:
```
from django.contrib import admin
from django.urls import path
from wxapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('wx/', views.wechat),
]
```
启动服务后,访问浏览器[http://127.0.0.1:8000/wx/](http://127.0.0.1:8000/wx/)
![](https://box.kancloud.cn/886508465ae45e290947627e88913dcb_648x305.png)
>[info] 到这里,我们已经创建好开发者服务,但是,微信服务是不能够推送消息到我们开发本地的,它只能推送到一个公网能访问的服务,因此,我们需要将我们的服务部署到公网上。
### 将本地服务映射到公网
显然,将本地服务部署到公网上,对很多朋友来说都不是很现实,就算能够部署,也不方便调试本地代码,这里介绍一个工具**ngrok**,可以满足我们通过公网访问本地服务。
1. 首先我们访问地址 https://dashboard.ngrok.com/get-started, 如下提示进行操作
![](https://box.kancloud.cn/83fa5c4864f39994e0b96bce7de7afc8_753x570.png)
操作成功后,我这边使用的是8000端口,而不是80端口。
![](https://box.kancloud.cn/95308ed4928b278f0bf74fe683d189eb_750x402.png)
到这里,我们上面创建的django服务,不仅仅只能通过本地localhost访问了,已经将我们的本地8000端口映射到了公网,如
![](https://box.kancloud.cn/c4de6126de78e0c90c2ff0926e7ee864_1066x274.png)
已经表明映射成功,只是我们还需要在setting.py 的ALLOWED_HOSTS设置中,将域名添加即可。
setting.py `ALLOWED_HOSTS = ['df5a54a7.ngrok.io']`
### 配置微信URL与Token
![](https://box.kancloud.cn/95d8180f36f133e15df4f48fcf1e63e7_1111x536.png)
配置后,提交,即可进行接入验证,注意,这里可能需要多提交几次。
![](https://box.kancloud.cn/eb83e0302af482a43c304c6d03c3c83f_906x469.png)
提示“配置成功”即证明已经接入成功!同时观察到,本地控制台中会输出“微信签名验证通过!”
![](https://box.kancloud.cn/b78c424dfe9ed0e075075ba90d5cc5ef_573x424.png)
---
到这里,已经完成了开发者服务接入到微信公众号中了,下一步,就是开始开发我们的服务啦~~
<hr style="margin-top:100px">
:-: ![](https://box.kancloud.cn/331f659e8e6cddb0d9f182e00e32803f_258x258.jpg)
***微信扫一扫,关注“python测试开发圈”,获取更多测试开发分享!***