微信小程序请求二维码:用户点击按钮生成带参二维码
2017-04-13 00:00
786 查看
摘要: 用户点击按钮生成二维码
目标:
请求二维码并展示
步骤:
用户点击按钮生成二维码
步骤:
1、微信小程序往后台请求二维码
2、后台(java/php) 根据微信小程序信息往微信端请求tonken
3、后台得到tonken后往微信端请求二维码图片
4、后台得到图片后保存在服务器上,将路径返回给微信小程序
5、微信小程序得到路径后,根据路径下载图片
6、下载图片成功后再保存至本地
7、保存成功后将路径给予image标签里面展示
代码:
wxml
<image class="scanimg" src="{{filePath}}" bindtap="getAgain"></image>
<button type="primary" bindtap="primary">点击生成二维码</button>
s代码
primary:function (e) {
var _url = '后台地址';
wx.request({
url: _url,
//请求报文体
data: [{
id: agentCode
}],
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function (res) {
//为00时表示成功,得到二维码的地址
if (res.data.code == '00') {
console.log("成功")
//下载二维码
wx.downloadFile({
url: res.data.body[0].URL,
success: function (res) {
//如果二维码中的id为固定值可以将图片保存到本地,否则不用保存
wx.saveFile({
tempFilePath: res.tempFilePath,
success: function (res) {
console.log("保存成功")
_that.setData({
filePath: res.savedFilePath
})
console.log(res.savedFilePath)
try {
//id为定值,则将保存的地址存入缓存,非定值则只需要setData就行
wx.setStorageSync('filePath', res.savedFilePath)
} catch (e) {
console.log(e)
}
},
fail: function (res) {
console.log("保存失败")
console.log(res)
}
})
}, fail: function (res) {
util.msg("错误", "通讯失败")
console.log(res)
}
})
} else {
console.log("错误")
util.msg("错误", res.data.msg)
}
},
fail: function () {
util.msg("错误", "通讯失败")
console.log(res)
}
})
}
java端代码
// 访问微信后台的URL
String URL = systemConfig.getString("LoginOrRegisterUrl");
// 请求类型
String grant_type = systemConfig.getString("grant_type");
// 第三方用户唯一凭证密钥
String secret = systemConfig.getString("secret");
// 第三方用户唯一凭证
String appId = systemConfig.getString("appid");
// 请求token时用到的URL
String tokenUrl = systemConfig.getString("tokenUrl");
// 向微信后台请求获取token
String sendGet = HttpClientConnectionManager.sendGet(
tokenUrl, "grant_type=" + grant_type
+ "&secret=" + secret + "&appid="
+ appId + "");
System.out.println(sendGet);
JSONObject json = JSONObject.fromObject(sendGet);
access_token = json.get("access_token").toString();
if (access_token == null) {
//没有token 则返回错误码和错误信息
agentDTO.setCode("0002");
agentDTO.setDesc("获取tokenId失败");
return agentDTO;
}
System.out.println(access_token);
// 访问微信后台带的json参数
Map<String, Object> map = new HashMap<String, Object>();
map.put("path", "pages/register");//你二维码中跳向的地址
map.put("width", "430");//图片大小
JSONObject json = JSONObject.fromObject(map);
HttpClientConnectionManager.httpPostWithJSON(URL
+ access_token, json.toString(), id + "max");
// 返回给前端的后台服务器文件读取路径
String downloadUrl = systemConfig
.getString("agentImgDownloadUrl")
+ id
+ "max"
+ "/";
// 返回给前端的后台服务器文件下载路径
String downloadfileUrl = downloadUrl + id + "max" + ".jpg";
agentResView.setURL(downloadfileUrl);
agentDTO.setAgentResView(agentResView);
agentDTO.setCode("00");
agentDTO.setDesc("成功");
return agentDTO;
tip
1、这是申请一张二维码的代码,申请多张可以用for或者其他的方法
2、当id为定量时,每次点击按钮判断filePath缓存是否存在,存在则直接取值展示,不存在则向后台请求二维码
目标:
请求二维码并展示
步骤:
用户点击按钮生成二维码
步骤:
1、微信小程序往后台请求二维码
2、后台(java/php) 根据微信小程序信息往微信端请求tonken
3、后台得到tonken后往微信端请求二维码图片
4、后台得到图片后保存在服务器上,将路径返回给微信小程序
5、微信小程序得到路径后,根据路径下载图片
6、下载图片成功后再保存至本地
7、保存成功后将路径给予image标签里面展示
代码:
wxml
<image class="scanimg" src="{{filePath}}" bindtap="getAgain"></image>
<button type="primary" bindtap="primary">点击生成二维码</button>
s代码
primary:function (e) {
var _url = '后台地址';
wx.request({
url: _url,
//请求报文体
data: [{
id: agentCode
}],
method: 'POST',
header: {
'content-type': 'application/json'
},
success: function (res) {
//为00时表示成功,得到二维码的地址
if (res.data.code == '00') {
console.log("成功")
//下载二维码
wx.downloadFile({
url: res.data.body[0].URL,
success: function (res) {
//如果二维码中的id为固定值可以将图片保存到本地,否则不用保存
wx.saveFile({
tempFilePath: res.tempFilePath,
success: function (res) {
console.log("保存成功")
_that.setData({
filePath: res.savedFilePath
})
console.log(res.savedFilePath)
try {
//id为定值,则将保存的地址存入缓存,非定值则只需要setData就行
wx.setStorageSync('filePath', res.savedFilePath)
} catch (e) {
console.log(e)
}
},
fail: function (res) {
console.log("保存失败")
console.log(res)
}
})
}, fail: function (res) {
util.msg("错误", "通讯失败")
console.log(res)
}
})
} else {
console.log("错误")
util.msg("错误", res.data.msg)
}
},
fail: function () {
util.msg("错误", "通讯失败")
console.log(res)
}
})
}
java端代码
// 访问微信后台的URL
String URL = systemConfig.getString("LoginOrRegisterUrl");
// 请求类型
String grant_type = systemConfig.getString("grant_type");
// 第三方用户唯一凭证密钥
String secret = systemConfig.getString("secret");
// 第三方用户唯一凭证
String appId = systemConfig.getString("appid");
// 请求token时用到的URL
String tokenUrl = systemConfig.getString("tokenUrl");
// 向微信后台请求获取token
String sendGet = HttpClientConnectionManager.sendGet(
tokenUrl, "grant_type=" + grant_type
+ "&secret=" + secret + "&appid="
+ appId + "");
System.out.println(sendGet);
JSONObject json = JSONObject.fromObject(sendGet);
access_token = json.get("access_token").toString();
if (access_token == null) {
//没有token 则返回错误码和错误信息
agentDTO.setCode("0002");
agentDTO.setDesc("获取tokenId失败");
return agentDTO;
}
System.out.println(access_token);
// 访问微信后台带的json参数
Map<String, Object> map = new HashMap<String, Object>();
map.put("path", "pages/register");//你二维码中跳向的地址
map.put("width", "430");//图片大小
JSONObject json = JSONObject.fromObject(map);
HttpClientConnectionManager.httpPostWithJSON(URL
+ access_token, json.toString(), id + "max");
// 返回给前端的后台服务器文件读取路径
String downloadUrl = systemConfig
.getString("agentImgDownloadUrl")
+ id
+ "max"
+ "/";
// 返回给前端的后台服务器文件下载路径
String downloadfileUrl = downloadUrl + id + "max" + ".jpg";
agentResView.setURL(downloadfileUrl);
agentDTO.setAgentResView(agentResView);
agentDTO.setCode("00");
agentDTO.setDesc("成功");
return agentDTO;
tip
1、这是申请一张二维码的代码,申请多张可以用for或者其他的方法
2、当id为定量时,每次点击按钮判断filePath缓存是否存在,存在则直接取值展示,不存在则向后台请求二维码
相关文章推荐
- 微信小程序请求二维码:用户点击按钮生成带参二维码
- 如何生成微信小程序正方形二维码(不需请求接口获取)
- 对话框程序动态生成按钮数组并响应点击消息
- 微信生成公众号带参数二维码用户头像 加上文字生成图片(三)
- 微信小程序开发填坑,优雅地处理用户的误操作引起的多次请求
- 微信小程序-携带参数的二维码条形码生成
- 【微信小程序】下拉加载多次请求的解决方案,避免用户多次发起请求降低业务处理。
- jQuery 中的 Ajax 全局事件 当用户点击页面上某一按钮请求数据时,在页面上显示 loading... ,页面加载完成后隐藏
- 【微信小程序教程】点击按钮修改字体颜色
- 微信小程序调试时,点击调试样式按钮时,出现一个警告:‘请先切换至 WXml Pannel’
- 微信小程序 | 多个按钮或VIEW,点击改变状态 简易的实现方法
- 程序在Debug、Release下运行及单独运行Debug下的exe文件时没有问题;可是单独运行Release所生成的exe文件时,点击某一个按钮时,程序崩溃
- 微信扫码支付第一种场景(先生成产品二维码,用户扫码生成交易)JAVA开发总结
- 微信小程序开发填坑,优雅地处理用户的误操作引起的多次请求
- 完成用户数据的导出,生成文本文件Users.txt,实现点击按钮自动下载
- 微信生成公众号带参数二维码加上用户头像(二)
- 微信接口开发之高级篇系列【用户分组接口和生成带参数的二维码】
- 【微信小程序教程】点击按钮修改view标签背景颜色
- 微信小程序二维码如何生成?
- Qrcode生成二维码链接地址,网页授权获取微信用户信息