Maison >Applet WeChat >Développement de mini-programmes >L'utilisateur de l'applet WeChat clique sur le bouton pour générer un exemple de code avec les paramètres du code QR

L'utilisateur de l'applet WeChat clique sur le bouton pour générer un exemple de code avec les paramètres du code QR

高洛峰
高洛峰original
2017-03-26 15:28:194101parcourir

Objectif :
Demander le code QR et l'afficher
Étapes :
L'utilisateur clique sur le bouton pour générer le code QR
Étapes :
1 L'applet WeChat demande le code QR. depuis l'arrière-plan
2. L'arrière-plan (java/php) demande le tonken au client WeChat en fonction des informations de l'applet WeChat
3. Une fois que l'arrière-plan a obtenu le tonken, il demande l'image du code QR au client WeChat.
4. L'arrière-plan obtient l'image et l'enregistre sur le serveur. Renvoyez le chemin vers l'applet WeChat
5 Une fois que l'applet WeChat a obtenu le chemin, téléchargez l'image en fonction du chemin
6. Téléchargez avec succès l'image, enregistrez-la localement
7. Après avoir enregistré avec succès, mettez le chemin dans la balise d'image Afficher le
code :
wxml

<image class="scanimg" src="{{filePath}}" bindtap="getAgain"></image>
<button type="primary" bindtap="primary">点击生成二维码</button>

le code

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)
    }
  })
}
Code latéral 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;
astuce

1 Ceci est pour demander un code QR, vous pouvez utiliser ou d'autres méthodes pour demander plusieurs codes QR
2. Quand. l'identifiant est quantitatif, cliquez à chaque fois sur le bouton pour déterminer si le cache filePath existe. S'il existe, la valeur sera affichée directement. Si elle n'existe pas, elle sera affichée en arrière-plan. Demande de code QR
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn