国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

微信公眾號開發(fā)小記——2.80端口上的服務(wù)

frank_fun / 868人閱讀

摘要:微信在做一些操作是需要用到生成二維碼等而每天接口的調(diào)用上限為,需要自己做緩存文檔講了幾種方式,我覺得放在中拿比較妥當(dāng)。微信菜單會緩存分鐘,你可以取消關(guān)注,然后在關(guān)注查看菜單變化效果。

描述

微信公眾號開發(fā)基本分為2大種類型

1.用戶直接做了某些操作(回復(fù)信息、訂閱、掃碼、發(fā)語音、點按鈕等),此時這些信息微信會發(fā)送到微信服務(wù)器的80端口,這是一種開發(fā)類型;
2.通過連接(按鈕、文章)引導(dǎo)用戶到另一個網(wǎng)站,網(wǎng)站通過oauth實現(xiàn)微信的三方登錄做到用戶打通,然后提供更多服務(wù)

注意第二種類型的其他網(wǎng)站可以跟第一種類型(只提供80端口服務(wù))的網(wǎng)站是一個server

80端口的服務(wù)開發(fā)

代碼位置weixin_server tag:80-port-20160415

wechat對象以及緩存access_token

wechat sdk操作都需要一個wechat的東西,生成這玩意兒需要加載一個wechat_config,config里面包含了你的appid,appsecret,以及你消息加密解密的配置,為了簡少根據(jù)加密方式造成的代碼變更,我在配置里面添加了settings.WEIXIN_ENCRYPT_MODE,這樣直接填寫你的加密模式,就可以在任何用到wechat的地方直接import一個wechat變量,之所以要用get_wechat的方式實時生成是為了做access_token的緩存,下面會講。

from .wechat import get_wechat

wechat = get_wechat()

微信在做一些操作是需要用到access_token(生成二維碼等),而每天access_token接口的調(diào)用上限為2000,需要自己做緩存, sdk文檔講了幾種方式,我覺得放在cache中拿比較妥當(dāng)。

代碼我不貼了,這是位置
weixin/config.py
weixin/wechat.py

handler各種微信post到80的事件

微信會在用戶對公眾號交互時像我們的服務(wù)器80端口post一些事件,sdk文檔 message源碼,大體看了下我寫了個mixin

# -*- coding: utf-8 -*-
from weixin.wechat import get_wechat
from wechat_sdk.messages import MESSAGE_TYPES, EventMessage

wechat = get_wechat()

REVERSED_MESSAGE_TYPES = {value:key for key, value in MESSAGE_TYPES.iteritems()}

class WeixinDispatchMixin(object):

    def dispatch_weixin(self, request, *args, **kwargs):
        content = request.body
        signature = request.GET.get("signature", "")
        msg_signature = request.GET.get("msg_signature", "")
        timestamp = request.GET.get("timestamp", "")
        nonce = request.GET.get("nonce", "")
        try:
            wechat.parse_data(
                    content,
                    msg_signature=msg_signature,
                    timestamp=timestamp,
                    nonce=nonce)
        except ParseError:
            return HttpResponse("Invalid Body Text")
        handler_name = self.get_weixin_handler_name(request, wechat, *args, **kwargs)
        handler = getattr(self, handler_name, self.http_method_not_allowed)
        return handler(request, wechat, *args, **kwargs)

    def get_weixin_handler_name(self, request, parsed_wechat, *args, **kwargs):
        message = parsed_wechat.message
        if isinstance(message, EventMessage):
            event_name = REVERSED_MESSAGE_TYPES[type(message)]
            event_detail_name = "weixin_handler_{}_{}".format(event_name, message.type)
            if hasattr(self, event_detail_name):
                event_name = event_detail_name
                return event_name
        return u"weixin_handler_{}".format(REVERSED_MESSAGE_TYPES.get(type(message), "unsupport"))
        

mixin參考django的dispatch,這樣在繼承的類里面直接實現(xiàn)weixin_handler_xxx方法即可,然而event有更多的類型,如果是通用處理則直接實現(xiàn)weixin_handler_event,如果要更加細(xì)化,例如掃碼的event,則實現(xiàn)weixin_handler_event_scan方法,可以參考weixin_server/views.py

菜單兒

菜單可以直接在admin定制,由于菜單類似一種配置,同一時間最多且只有1個,我就把edx的config_model拿過來了,自己定制了下admin,這樣你可以直接在admin里面修改菜單,微信會生效。微信菜單會緩存5分鐘,你可以取消關(guān)注,然后在關(guān)注查看菜單變化效果。

菜單這塊兒的代碼有點意思,感興趣的可以看下。

weixin/models.py
weixin/admin.py

生成二維碼

二維碼的邏輯略有不同(相對于sdk的其他response_xxx),所以我寫了個qrcode.py封裝了一下,注意永久二維碼只能生產(chǎn)10萬張,業(yè)務(wù)場景不要亂用,二維碼的這些id、url都是需要做本地存儲的,我沒接model就丟到緩存里了。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/45421.html

相關(guān)文章

  • 微信公眾開發(fā)小記——4.兩種邀請用戶的方式 掃碼&&鏈接

    摘要:借著這個需求體會了下微信開發(fā)的兩種不同類型非端口的兩種開發(fā),以及的一些正確姿勢。關(guān)于用戶微信登錄的事情我們通過已經(jīng)解決了參考我的上一篇博客微信公眾號開發(fā)小記接入三方登錄,所以可以直接用的裝飾器完成這種事情。 描述 假設(shè)的我們的服務(wù)號有這么一些功能,比如底部有按鈕,點擊會有一些復(fù)雜的功能,這時候可能就需要一個用戶系統(tǒng),有用戶系統(tǒng)就經(jīng)常想要做什么分享邀請新用戶之類的,這時候就又有幾種方式,...

    BDEEFE 評論0 收藏0
  • 微信公眾開發(fā)小記——1.接入微信服務(wù)

    摘要:描述由于馬上要做一波公眾號開發(fā),今天先調(diào)研,把基本的服務(wù)器接起來。手腳架地址文檔微信公眾號公眾號開發(fā)首先你要有個公眾號,這里就不說了按照流程申請。腳手架的說明微信公眾號接入的時候要做很多事情,為了簡化開發(fā),提供一個版本的服務(wù)器。 描述 由于馬上要做一波公眾號開發(fā),今天先調(diào)研,把基本的服務(wù)器接起來。微信公眾號服務(wù)器在接入的時候要做一些煩躁的事情,改配置的時候要進(jìn)行握手,api調(diào)用要做一些...

    sshe 評論0 收藏0
  • 微信公眾開發(fā)小記——3.接入三方登錄

    摘要:我接觸已經(jīng)很久了,其中微信的就是我貢獻(xiàn)的代碼,然而當(dāng)時做的時候比較年輕,而且這個項目處于一個很大的代碼重構(gòu)中,借這次機(jī)會重新用正確的姿勢接入了一下三方登錄,可以當(dāng)做一個學(xué)習(xí)接入三方的。 為什么要接入三方登錄 如果你的微信服務(wù)器要做復(fù)雜的邏輯,比如html5、給用戶提供高級的服務(wù),并且有很好看的頁面等等,這種時候你就需要一個正常的web服務(wù)器,用戶打通就需要做三方登錄了。 而如果你決定直...

    aisuhua 評論0 收藏0
  • 微信公眾開發(fā)小記——5.python微信紅包

    摘要:微信各個服務(wù)是獨立的,比較蛋疼,要用紅包功能,首先你需要注冊一個微信商戶平臺賬號。首先是微信證書,用的是,與這兩個。寫在最后微信開發(fā)者工具挺好用的,服務(wù)號里把自己加為開發(fā)者就能用了。 描述 有時候產(chǎn)品有這么一些需求,當(dāng)用戶滿足一定條件時,給他發(fā)一定金額的紅包。 微信各個服務(wù)是獨立的,比較蛋疼,要用紅包功能,首先你需要注冊一個微信商戶平臺賬號。 代碼位置 分支pay-20160802 微...

    JerryZou 評論0 收藏0
  • 騰訊云Codeigniter小記

    摘要:前段時間為了抓取網(wǎng)絡(luò)文本數(shù)據(jù),申請了騰訊云學(xué)生機(jī),用的框架弄了一段時間。這個用戶既是不可登錄的操作系統(tǒng)用戶,也是數(shù)據(jù)庫用戶。設(shè)置數(shù)據(jù)庫用戶密碼為了能夠讓和數(shù)據(jù)庫相連接,需要設(shè)置數(shù)據(jù)庫用戶密碼。 打讀研之后,更加關(guān)注算法的學(xué)習(xí),Web開發(fā)這一塊便落下了,平時也通過微信公眾號關(guān)注了些,常常感慨,技術(shù)的更迭真是日新月異。 前段時間為了抓取網(wǎng)絡(luò)文本數(shù)據(jù),申請了騰訊云學(xué)生機(jī),用Python的Sc...

    Ocean 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<