多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[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测试开发圈”,获取更多测试开发分享!***