按照提示注冊即可
注意:本文樣例使用個人公眾號,由于個人公眾號沒有接口權(quán)限,自定義菜單無法進(jìn)行開發(fā),同學(xué)們不要注冊錯!


申" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > Python進(jìn)行微信公眾號開發(fā)

Python進(jìn)行微信公眾號開發(fā)

時間:2023-05-28 13:18:02 | 來源:網(wǎng)站運營

時間:2023-05-28 13:18:02 來源:網(wǎng)站運營

Python進(jìn)行微信公眾號開發(fā):

一、微信公眾號的準(zhǔn)備:

1. 注冊

訪問地址:https://mp.weixin.qq.com/
按照提示注冊即可
注意:本文樣例使用個人公眾號,由于個人公眾號沒有接口權(quán)限,自定義菜單無法進(jìn)行開發(fā),同學(xué)們不要注冊錯!


申請公眾號信息如下,也可掃碼關(guān)注

此微信公眾號致力于AI、開發(fā)、安全、數(shù)據(jù)、運維方向技術(shù)推廣和技術(shù)傳播,期待傳播技術(shù)和知識推廣的您加入。點擊掃描二維碼:

2. 配置

需要準(zhǔn)備好自己的服務(wù)器地址,可以使用騰訊云阿里云京東云等等皆可,沒有域名用IP也可以。
在公眾平臺官網(wǎng)的開發(fā)-基本設(shè)置頁面,勾選協(xié)議成為開發(fā)者,點擊“修改配置”按鈕,填寫服務(wù)器地址(URL)、Token和EncodingAESKey,其中URL是開發(fā)者用來接收微信消息和事件的接口URL。Token可由開發(fā)者可以任意填寫,用作生成簽名(該Token會和接口URL中包含的Token進(jìn)行比對,從而驗證安全性)。EncodingAESKey由開發(fā)者手動填寫或隨機(jī)生成,將用作消息體加解密密鑰。

按照要求對開發(fā)基本信息配置,如下:

3. 連接

服務(wù)器配置提交后,微信服務(wù)器發(fā)送GET請求到填寫的服務(wù)器地址URL上,GET請求攜帶參數(shù)包括signature、timestamp、nonce、echostr,服務(wù)端程序通過檢驗signature對請求進(jìn)行校驗(下面有校驗方式)。若確認(rèn)此次GET請求來自微信服務(wù)器,請原樣返回echostr參數(shù)內(nèi)容給微信服務(wù)器確認(rèn)后接入生效。加密/校驗流程如下,下文中有代碼具體實現(xiàn):
1)將token、timestamp、nonce三個參數(shù)進(jìn)行字典序排序
2)將三個參數(shù)字符串拼接成一個字符串進(jìn)行sha1加密
3)開發(fā)者獲得加密后的字符串可與signature對比,標(biāo)識該請求來源于微信

二、基于Django開發(fā)微信公眾號后臺的步驟:

1.準(zhǔn)備工作

django-admin.py startproject weixinpython manage.py startapp weixin

django-admin.py startapp weixinINSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'weixin',)urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^weixin/', include('weixin.urls',namespace="weixin")), ]

2.編寫weixin應(yīng)用的urls.py

修改app weixin內(nèi)的urls.py,添加針對視圖函數(shù)的解析,默認(rèn)訪問指向視圖函數(shù)的weixin_index方法。

app_name = 'weixin'urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^$', views.index, name='weixin_index'), ]

3.編寫weinxin應(yīng)用的views.py

get方法做校驗,post方法傳xml數(shù)據(jù),解析和拼湊xml數(shù)據(jù)實現(xiàn)自動回復(fù)功能

from django.http.response import HttpResponse, HttpResponseBadRequestfrom django.views.decorators.csrf import csrf_exemptfrom wechat_sdk import WechatBasicfrom wechat_sdk.exceptions import ParseErrorfrom wechat_sdk.messages import TextMessage# Create your views here.wechat_instance = WechatBasic( token='您設(shè)置的token', appid='您的公眾號id', appsecret='您的公眾號的秘鑰')@csrf_exemptdef index(request): if request.method == 'GET': # 檢驗合法性 # 從 request 中提取基本信息 (signature, timestamp, nonce, xml) signature = request.GET.get('signature') timestamp = request.GET.get('timestamp') nonce = request.GET.get('nonce') if not wechat_instance.check_signature( signature=signature, timestamp=timestamp, nonce=nonce): return HttpResponseBadRequest('Verify Failed') return HttpResponse( request.GET.get('echostr', ''), content_type="text/plain") # 解析本次請求的 XML 數(shù)據(jù) else: try: print(request.body) wechat_instance.parse_data(data=request.body) except ParseError: return HttpResponseBadRequest('Invalid XML Data') # 獲取解析好的微信請求信息 message = wechat_instance.get_message() # 關(guān)注事件以及不匹配時的默認(rèn)回復(fù) response = wechat_instance.response_text( content=( '感謝您的關(guān)注!/n回復(fù)【功能】兩個字查看支持的功能,還可以回復(fù)任意內(nèi)容開始聊天' )) if isinstance(message, TextMessage): # 當(dāng)前會話內(nèi)容 content = message.content.strip() if content == '功能': reply_text = ( '目前支持的功能:/n1. 關(guān)鍵詞后面加上【教程】兩個字可以搜索教程,' '比如回復(fù) "Django 后臺教程"/n' '2.回復(fù)任意詞語,查天氣,陪聊天,講故事,無所不能!/n' '還有更多功能正在開發(fā)中哦 ^_^/n' ) response = wechat_instance.response_text(content=reply_text) print(response) return HttpResponse(response, content_type="application/xml")

3.配置公網(wǎng)域名映射后,運行程序,效果展示

python manage.py runserver 0.0.0.0:80發(fā)現(xiàn)不能正常使用,提示“該公眾號提供的服務(wù)出現(xiàn)故障,請稍后再試”。

于是百度里各種找資料,又是查看微信公眾號開發(fā)文檔,各種百度和google,都沒有解決。微信公眾平臺關(guān)閉啟用,重置密鑰。仔細(xì)核對填寫,都沒有問題。沒有填寫錯誤。

我開啟了開發(fā)-運維中心-接口報警-告警規(guī)則全部調(diào)到“1次/5分鐘”,偶爾會收到這樣的報錯:302網(wǎng)頁重定向出錯。

最后,我就查到微信公眾平臺-開發(fā)-基本配置-服務(wù)器配置-服務(wù)器地址(url),這里的http://頭改成https://。

再試自動回復(fù)真的可以了。


如果對您有幫助,不如給個鼓勵,點個贊。歡迎大家有空時翻下我牌子(本站號:布道 ),看看“開發(fā)運維”專欄的文章!

關(guān)鍵詞:公眾

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關(guān)閉