Django Python Wechat


關於Django開發微信

使用第三方包WeChat-python-sdk

# from wechat_sdk import WechatBasic
# from wechat_sdk.exceptions import ParseError
# from wechat_sdk.messages import EventMessage
# from wechat_sdk.context.framework.django import DatabaseContextStore

wechat_instance = WechatBasic(
    token='spreadassistant.chltec.com',
    appid='wxacbc8e8621b5140e',
    appsecret='11d1e1723475771e958d1252f6ad045a'
)

@csrf_exempt
def portal(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")

    # POST
    # 解析本次請求的 XML 數據
    try:
        wechat_instance.parse_data(data=request.body)
    except ParseError:
        return HttpResponseBadRequest('Invalid XML Data')

    # 獲取解析好的微信請求信息
    message = wechat_instance.get_message()
    if isinstance(message, TextMessage):
        print '收到 文本消息'
    elif isinstance(message, VoiceMessage):
        print '收到 語音消息'
    elif isinstance(message, ImageMessage):
        print '收到 圖片消息'
    elif isinstance(message, VideoMessage):
        print '收到 視頻消息'
    elif isinstance(message, LinkMessage):
        print '收到 鏈接消息'
    elif isinstance(message, LocationMessage):
        print '收到 地理位置消息'
    elif isinstance(message, EventMessage):
        print '收到 事件消息'
        #關注事件(包括普通關注事件和掃描二維碼造成的關注事件)
        #如果 key 和 ticket 均不為空,則是掃描二維碼造成的關注事件

        if message.type == 'subscribe':
            print '這是 關注事件'
        elif message.type == 'unsubscribe':
            print '這是 取消關注事件'
        elif message.type == 'scan':
            print '這是 已關注用戶掃描二維碼!'
        elif message.type == 'location':
            print '這是 上報地理位置'
        elif message.type == 'click':
            print '這是 自定義菜單點擊'
        elif message.type == 'view':
            print '這是 自定義菜單跳轉鏈接'
        elif message.type == 'templatesendjobfinish':
            print '這是 模板消息'

    reply_text = '已經響應了'
    response = wechat_instance.response_text(content=reply_text)
    return HttpResponse(response, content_type="application/xml")

以上代碼思路比較清晰所以做個記錄吧,但是看到https://github.com/doraemonext/wechat-python-sdk表示該項目已經停止開發,推薦使用 https://github.com/jxtech/wechatpy/ 作為替代品。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM