[TOC]
## 訂閱號服務開發環境
### 開通訂閱號
1. 首先,有興趣的朋友可以先到`微信公眾平臺`[注冊]([https://mp.weixin.qq.com/](https://mp.weixin.qq.com/))一個訂閱號即可

本項目直接使用測試工作號進行開發,微信公眾平臺接口測試帳號申請地址如:
[https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login](https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)

2. 微信掃一掃授權后,可打開測試號管理頁面如下

>紅色圈住的地方是重點,后面再介紹怎么用

到了這里,我們先了解下微信服務的數據流,這樣我們就可以了解上圖紅圈中的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/)

>[info] 到這里,我們已經創建好開發者服務,但是,微信服務是不能夠推送消息到我們開發本地的,它只能推送到一個公網能訪問的服務,因此,我們需要將我們的服務部署到公網上。
### 將本地服務映射到公網
顯然,將本地服務部署到公網上,對很多朋友來說都不是很現實,就算能夠部署,也不方便調試本地代碼,這里介紹一個工具**ngrok**,可以滿足我們通過公網訪問本地服務。
1. 首先我們訪問地址 https://dashboard.ngrok.com/get-started, 如下提示進行操作

操作成功后,我這邊使用的是8000端口,而不是80端口。

到這里,我們上面創建的django服務,不僅僅只能通過本地localhost訪問了,已經將我們的本地8000端口映射到了公網,如

已經表明映射成功,只是我們還需要在setting.py 的ALLOWED_HOSTS設置中,將域名添加即可。
setting.py `ALLOWED_HOSTS = ['df5a54a7.ngrok.io']`
### 配置微信URL與Token

配置后,提交,即可進行接入驗證,注意,這里可能需要多提交幾次。

提示“配置成功”即證明已經接入成功!同時觀察到,本地控制臺中會輸出“微信簽名驗證通過!”

---
到這里,已經完成了開發者服務接入到微信公眾號中了,下一步,就是開始開發我們的服務啦~~
<hr style="margin-top:100px">
:-: 
***微信掃一掃,關注“python測試開發圈”,獲取更多測試開發分享!***