您的位置:首页 > 移动开发 > 微信开发

微信小程序请求二维码:用户点击按钮生成带参二维码

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缓存是否存在,存在则直接取值展示,不存在则向后台请求二维码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐