1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        太強(qiáng)了!基于公眾號(hào)用 Python 開(kāi)發(fā)一個(gè)抽獎(jiǎng)程序

        共 1624字,需瀏覽 4分鐘

         ·

        2020-07-27 19:31

        大家好

        上周在公眾號(hào)做了個(gè)抽象的活動(dòng),程序是自己臨時(shí)寫(xiě)的,就是下面這種效果?;貜?fù)指定關(guān)鍵字系統(tǒng)會(huì)自動(dòng)給你分配一個(gè)抽獎(jiǎng)號(hào)碼


        回復(fù)另一個(gè)關(guān)鍵字可以查看當(dāng)前有沒(méi)有中獎(jiǎng),功能可以說(shuō)非常簡(jiǎn)單。


        有些小伙伴拿到代碼之后,問(wèn)有沒(méi)有詳細(xì)的教程,光是看代碼不知道怎么運(yùn)行。

        于是就有了這篇文章。

        本文假設(shè)你已經(jīng)有一個(gè)自己的公眾號(hào),還沒(méi)有公眾號(hào)的可以在平臺(tái)注冊(cè)一個(gè),地址是:http://mp.weixin.qq.com 。

        首先登錄公眾號(hào)平臺(tái),填寫(xiě)服務(wù)器配置


        URL 不能亂填,這個(gè)是你的服務(wù)器地址, 比如:http://123.33.44.55/wx ,IP 地址是服務(wù)器的公網(wǎng)IP,所以前提你還得有一臺(tái)服務(wù)器。


        你可以選擇國(guó)內(nèi)的虛擬主機(jī)服務(wù)商,比如阿里云、騰訊云或者Ucloud(三位廠商記得給我廣告費(fèi)啊)都可以


        填寫(xiě)完直接提交會(huì)驗(yàn)證失敗的,因?yàn)榉?wù)器還沒(méi)接入進(jìn)來(lái)。

        所以要先驗(yàn)證服務(wù)器地址的有效性。

        驗(yàn)證服務(wù)器地址的有效性就是下面的處理邏輯,我這里是用的flask框架。


        微信服務(wù)器請(qǐng)求URL的時(shí)候,會(huì)傳4個(gè)參數(shù)給你,分別是


        所謂驗(yàn)證服務(wù)器地址的有效性,就是要確認(rèn)請(qǐng)求是否來(lái)自微信服務(wù)器,因?yàn)榘l(fā)起請(qǐng)求的也有可能是某個(gè)黑客。我們可以通過(guò)檢驗(yàn)signature對(duì)請(qǐng)求進(jìn)行校驗(yàn),若確認(rèn)此次GET請(qǐng)求來(lái)自微信服務(wù)器,原樣返回echostr參數(shù)內(nèi)容,則接入生效,成為開(kāi)發(fā)者成功,否則接入失敗。

        加密/校驗(yàn)流程如下:

        • 1)將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序

        • 2)將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密

        • 3)開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信。

        將代碼部署到自己服務(wù)器之后,這時(shí)候再去提交,會(huì)提示你提交成功。驗(yàn)證成功后,就可以開(kāi)始實(shí)現(xiàn)業(yè)務(wù)邏輯了。

        實(shí)現(xiàn)抽獎(jiǎng)邏輯

        當(dāng)用戶(hù)在公眾號(hào)發(fā)送消息時(shí),微信會(huì)以POST請(qǐng)求的方式將消息轉(zhuǎn)發(fā)給業(yè)務(wù)服務(wù)器(就是我們自己處理業(yè)務(wù)邏輯的程序),然后我們根據(jù)用戶(hù)發(fā)送的內(nèi)容進(jìn)行相應(yīng)的邏輯處理。

        微信會(huì)通過(guò)POST請(qǐng)求,以xml的格式發(fā)送給我們業(yè)務(wù)服務(wù)器,里面的內(nèi)容包括發(fā)送的消息內(nèi)容、時(shí)間、還有open_id, open_id 唯一對(duì)應(yīng)用戶(hù)。雖然你不知道用戶(hù)的昵稱(chēng),但是只要知道open_id 就可以唯一確定是哪個(gè)用戶(hù)。

        定義數(shù)據(jù)模型

        實(shí)現(xiàn)抽獎(jiǎng)系統(tǒng),我們首先定義了數(shù)據(jù)模型


        只要三個(gè)字段就夠了,number 是抽獎(jiǎng)號(hào)碼,open_id 表示誰(shuí)獲得了該抽獎(jiǎng)號(hào)碼, 初始為空, valid 表示該號(hào)碼是否為中獎(jiǎng)號(hào)碼。初始化系統(tǒng)時(shí),我們會(huì)隨機(jī)給一些數(shù)據(jù)設(shè)置valid有True, 比如你想抽3個(gè)獎(jiǎng)品,就隨機(jī)弄3條數(shù)據(jù)為T(mén)rue。

        模型建立完成后,接下來(lái)就可以處理具體的業(yè)務(wù)邏輯了。當(dāng)用戶(hù)發(fā)送抽獎(jiǎng)關(guān)鍵字時(shí),我們要做3件事。

        1、判斷當(dāng)前用戶(hù)是否還有抽獎(jiǎng)資格
        2、生成抽獎(jiǎng)號(hào)碼
        3、查詢(xún)剩余抽獎(jiǎng)次數(shù)

        回復(fù)另一個(gè)關(guān)鍵字查詢(xún)是否中獎(jiǎng)時(shí),我們只需要判斷它的抽獎(jiǎng)號(hào)碼里面有沒(méi)有匹配的valid為T(mén)rue的數(shù)據(jù)即可。我都這些邏輯都封裝在models里面,所以看起來(lái)也沒(méi)幾行代碼。


        以上就是整個(gè)抽獎(jiǎng)小程序的全部思路。剩下的事情就是把代碼部署到服務(wù)器,就能實(shí)現(xiàn)文章開(kāi)頭的效果了。

        是不是超級(jí)簡(jiǎn)單。源代碼獲取請(qǐng)回復(fù)“公眾號(hào)”

        如果你正想實(shí)現(xiàn)一個(gè)類(lèi)似的小程序,例如做個(gè)天氣預(yù)報(bào)查詢(xún)等有趣味的程序,如果編程過(guò)程中總是遇到各種問(wèn)題卡殼,可以加我微信 "yueryounali",好的問(wèn)題勝過(guò)無(wú)數(shù)個(gè)好答案。我們的python交流群也有很多高手。

        學(xué)編程關(guān)鍵在于動(dòng)手,提高在于實(shí)踐。

        推薦:
        1. “痛苦地去死”,Linus再次怒噴Intel

        2. 再見(jiàn),Navicat!這個(gè)Pycharm的兄弟真香!

        3. 說(shuō)多了都是淚,一個(gè)項(xiàng)目上線的真實(shí)過(guò)程…

        瀏覽 34
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            高跟鞋少妇色情A片 | 天天做天天爱天天高潮 | 青青草91青娱盛宴国产 | 亚洲欧美网站 | 色色www | 台湾 四级 无码 | 娇妻和小黄第一次3p的全过程 | 国产33页 | 免费看黄片网站 | 影音先锋男人色 |