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

    xiaoxiao2021-04-11  38

    目标:  请求二维码并展示  步骤:  用户点击按钮生成二维码  步骤:  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缓存是否存在,存在则直接取值展示,不存在则向后台请求二维码 。

    转载请注明原文地址: https://ju.6miu.com/read-666510.html

    最新回复(0)