python制作微信个人二维码_Python实现 | 微信带参数的二维码
微信運營越來越多了,這種帶參數二維碼的使用場景還挺多的,但是網上的實現大都是PHP啥的,還不想寫PHP的我只好用Python實現一下了。
關于帶參二維碼的介紹,記得先看官網:生成帶參數的二維碼。
先大體看看介紹
目前有2種類型的二維碼:1、臨時二維碼,是有過期時間的,最長可以設置為在二維碼生成后的30天(即2592000秒)后過期,但能夠生成較多數量。臨時二維碼主要用于帳號綁定等不要求二維碼永久保存的業務場景
2、永久二維碼,是無過期時間的,但數量較少(目前為最多10萬個)。永久二維碼主要用于適用于帳號綁定、用戶來源統計等場景。
用戶掃描帶場景值二維碼時,可能推送以下兩種事件:1、如果用戶還未關注公眾號,則用戶可以關注公眾號,關注后微信會將帶場景值關注事件推送給開發者。
2、如果用戶已經關注公眾號,在用戶掃描后會自動進入會話,微信也會將帶場景值掃描事件推送給開發者。
總結一句,就是生成的二維碼本身有一個獨特的scene_id,掃描這個碼,后臺可以獲得先關的標簽對,也就是后臺會獲得以下數據:帶參二維碼返回的數據
好啦,我們先來看如何生成帶scene_id的二維碼,而后臺的處理事件,我們之后再來看,因為我剛剛才為此買了一個域名,結果實名+備案要好幾天,暴風哭泣。
先來說一下基本流程:從服務號的管理處獲得AppID和AppSecret,具體可以看獲取AccessToken。
根據AppID和AppSecret來構造Post請求,獲得Access Token
根據Access Token構造Post請求,獲得Ticket
用Ticket獲得需要的二維碼
獲得AccessToken
我們直接來看代碼,沒怎么做封裝:
import urllib
import urllib.request
import json
from urllib import parse, request
記得要有appid 和 appsecret
appid = '這里放你的appid'
secret = '這里放你的appsecret'
def token_url(appid, secret):
return "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s"%(appid, secret)
獲得accessToken函數
def get_access_token(appid, secret):
access_token_url = token_url(appid, secret)
f = urllib.request(access_token_url)
json_string = f.read()
return json.loads(json_string)['access_token']
現在是開始獲取
access_token_url = token_url(appid, secret)
f = urllib.request.urlopen(access_token_url)
json_string = f.read()
access_token = json.loads(json_string)['access_token']
好啦,現在有accessToken了
現在來獲取Ticket
傳入accessToken來構造Ticket_url
def get_ticket_url(access_token):
url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=%s" %(access_token)
return url
ticket_url = get_ticket_url(access_token)
構造Post請求的參數,這個官網的介紹很清楚,其中scene_id是自己隨意設置的數字,這個數據是在用戶掃描二維碼之后,告訴你被掃描的二維碼是哪個
body = {"expire_seconds":604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
記得要對post數據進行encode,不然會報錯
json_data = json.dumps(body).encode(encoding='utf-8')
已經構造好啦,現在來獲取所ticket和二維碼啦
req = request.Request(url=ticket_url, data=json_data)
res = request.urlopen(req).read()
ticket_string = json.loads(res)['ticket']
def exchange_by_ticket(ticket_string):
ticket = ticket_string
exchange_by_ticker_url = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=%s" % (ticket)
return exchange_by_ticker_url
exchange_by_ticker_url = exchange_by_ticket(ticket_string)
就能夠收到所需要的二維碼啦,??ヽ(°▽°)ノ?,之后的話,就要寫服務器來如何響應用戶的掃描啦。
原理是這樣的:當用戶掃描了帶參數的二維碼之后,會返回一個參數列表給微信
這個參數列表就包含scene_id,這樣你就知道他掃描的是哪個二維碼
微信將那個參數列表發送到你提前設置好的url服務器
你寫的程序對這個參數列表進行相應,并將相應的反應信息發送給微信
微信再將數據發送給用戶
之后我會繼續實現的。
總結
以上是生活随笔為你收集整理的python制作微信个人二维码_Python实现 | 微信带参数的二维码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: usb转rj45_毕亚兹ZH5网卡转接口
- 下一篇: selenium python_Pyth