微信小程序生成二维码:
所用语言python,有两种方式:
1: 后端传一段字符串给前端, 前端显示
2: 后端直接生成图片
1: 后端传一段字符串给前端, 前端显示
def get_wxCode(Request, UserInfo):
try:
scene = Request["scene"]
access_token = get_wxCode_token()
if not access_token:
return False
textmod = {"scene": scene, "page": "pages/index/main", "width": 430, "auto_color": True, "is_hyaline": False}
textmod = json.dumps(textmod).encode(encoding='utf-8')
header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
"Content-Type": "application/json"}
url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + access_token
req = request.Request(url=url, data=textmod, headers=header_dict)
res = request.urlopen(req)
res = res.read()
b64str = base64.b64encode(res)
return b64str
except Exception as e:
print(e)
return False
var getWXcode2 = function(hostname){ //获取管理端小程序码
//动态获取域名,若为本地环境,则默认携带参数为wx-test
//示例:londex.i-plc.cn
var hostname1 = window.location.host;
hostname1 = hostname1.split('.')[0];
if(hostname1 == '127' || hostname1 == 'localhost'){
hostname1 = hostname;
}
if(window.localStorage.getItem('wxcode2')){
$('#wxcodeImg2').attr('src','data:image/png;base64,'+ window.localStorage.getItem('wxcode2'));
$('#wxCodeModal2').modal('show');
return;
}
var params = {
"scene":hostname1,
};
$.ajax({
type:'post',
url:'/request?rname=i_plc.Page.wechat_api.wechat.get_wxCode',
data:params,
success:function (res) {
console.log(res)
if(res === false){
$.MessageBox.notify('warn', '获取失败,请稍后再试!');
}else{
console.log(res)
$('#wxcodeImg2').attr('src','data:image/png;base64,'+res);
$('#wxCodeModal2').modal('show');
window.localStorage.setItem('wxcode2',res)
}
}
});
};
结果:
2: 后端直接生成图片
def get_wxCode(Request, UserInfo):
"""
生成小程序二维码
:param Request:
:param UserInfo:
:return:
"""
result = {"success": False}
try:
# scene = Request["scene"]
access_token = get_wxCode_token()
if not access_token:
raise Exception("access_token")
compid = Request["compid"]
sql = "select compIndex from company where operationFlag=9 and compID=%s" % compid
Result = SqlRun(sql)
if Result["Data"] and Result["Data"][0] and Result["Data"][0][0]:
scene = Result["Data"][0][0]
textmod = {"scene": scene, "page": "pages/index/main", "width": 430, "auto_color": True, "is_hyaline": False}
textmod = json.dumps(textmod).encode(encoding='utf-8')
header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko',
"Content-Type": "application/json"}
url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=' + access_token
req = request.Request(url=url, data=textmod, headers=header_dict)
res = request.urlopen(req)
res = res.read()
b64str = base64.b64encode(res)
imgdata=base64.b64decode(b64str)
path = "static/tmpfiles/scan_%s.png" % file_name
file = open(os.path.join(settings.BASE_DIR, path,), 'wb+')
file.write(imgdata)
file.close()
result["code_url"] = path
result["success"] = True
except Exception as e:
result["error_msg"] = str(e)
return json.dumps(result)
def get_wxCode_token():
try:
textmod = {"grant_type": "client_credential",
"appid": "wx44a452fb08b0a990",
"secret": "9aedb0a274027bdd09612fbde3298129"
}
textmod = parse.urlencode(textmod)
header_dict = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'}
url = 'https://api.weixin.qq.com/cgi-bin/token'
req = request.Request(url='%s%s%s' % (url, '?', textmod), headers=header_dict)
res = request.urlopen(req)
res = res.read().decode(encoding='utf-8')
res = json.loads(res)
access_token = res["access_token"]
return access_token
except Exception as e:
print(e)
return False
图片结果: