生成带有参数的二维码
- 获取 access_token
import urllib2
import json
from flask import Flask
WECHAT_APPID = "wx8ec5ff22d5fb2211"
WECHAT_APPSECRET = "934608cbe213191cd9372c77bbcb3eb6"
class AccessToken(object):
"""
专门用于外界要使用access_token的时候调用的类
"""
__access_token = {
"access_token": "",
"update_time": time.time(),
"expires_in": 7200
}
@classmethod
def get_access_token(cls):
if not cls.__access_token.get("access_token") or \
(time.time() - cls.__access_token.get("update_time") > cls.__access_token.get("expires_in")):
url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s" % (WECHAT_APPID, WECHAT_APPSECRET)
response = urllib2.urlopen(url)
resp_data = response.read()
resp_dict = json.loads(resp_data)
if "errcode" in resp_dict:
raise Exception(resp_dict.get("errmsg"))
cls.__access_token["access_token"] = resp_dict.get("access_token")
cls.__access_token["update_time"] = time.time()
cls.__access_token["expires_in"] = resp_dict.get("expires_in")
return cls.__access_token.get("access_token")
- 获取 tickey
- 通过ticket换取二维码
app = Flask(__name__)
@app.route('/get_qrcode/<int:scene_id>')
def index(scene_id):
"""
http请求方式: POST
URL: https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKENPOST数据格式:json
POST数据例子:{"expire_seconds": 604800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
"""
url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" + AccessToken.get_access_token()
params = {"expire_seconds": 604800,
"action_name": "QR_SCENE",
"action_info": {"scene": {"scene_id": scene_id}}}
response = urllib2.urlopen(url, data=json.dumps(params))
resp_data = response.read()
resp_dict = json.loads(resp_data)
ticket = resp_dict.get("ticket")
expire_seconds = resp_dict.get("expire_seconds")
url = resp_dict.get("url")
print ticket, expire_seconds, url
return '<img src="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=%s">' % ticket