6.4.2 创建永久二维码

1.接口描述

创建永久二维码的接口地址如下:

  1. https:// api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN

调用该接口需要POST如下格式的JSON数据包:

  1. {"action_name": "QR_LIMIT_SCENE", "action_info": {"scene": {"scene_id": 123}}}

接口调用成功时返回的JSON结果如下:

  1. {"ticket":"gQG28DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0FuWC1DNmZuVEhvMVp4NDNMRnNRAAIEesLvUQMECAcAAA=="}

接口调用失败时返回的JSON结果示例如下:

  1. {"errcode":40053,"errmsg":"invalid action info, please check document"}

2.方法封装及使用

将创建永久二维码的操作封装成createPermanentQRCode()方法,该方法的实现如下:

  1. /**
  2. * 创建永久带参二维码
  3. *
  4. * @param accessToken 接口访问凭证
  5. * @param sceneId 场景ID
  6. * @return ticket
  7. */
  8. public static String createPermanentQRCode(String accessToken, int sceneId) {
  9. String ticket = null;
  10. // 拼接请求地址
  11. String requestUrl = "https:// api.weixin.qq.com/cgi-bin/qrcode/
  12. create?access_token=ACCESS_TOKEN";
  13. requestUrl = requestUrl.replace("ACCESS_TOKEN", accessToken);
  14. // 需要提交的JSON数据
  15. String jsonMsg = "{\"action_name\": \"QR_LIMIT_SCENE\", \"action_info\":
  16. {\"scene\": {\"scene_id\": %d}}}";
  17. // 创建永久带参二维码
  18. JSONObject jsonObject = CommonUtil.httpsRequest(requestUrl, "POST", String.
  19. format(jsonMsg, sceneId));
  20.  
  21. if (null != jsonObject) {
  22. try {
  23. ticket = jsonObject.getString("ticket");
  24. log.info("创建永久带参二维码成功 ticket:{}", ticket);
  25. } catch (Exception e) {
  26. int errorCode = jsonObject.getInt("errcode");
  27. String errorMsg = jsonObject.getString("errmsg");
  28. log.error("创建永久带参二维码失败 errcode:{} errmsg:{}", errorCode,
  29. errorMsg);
  30. }
  31. }
  32. return ticket;
  33. }

下面调用createPermanentQRCode()方法创建一个场景值ID为617的永久二维码,示例代码如下:

  1. public static void main(String args[]) {
  2. // 获取接口访问凭证
  3. String accessToken = CommonUtil.getToken("APPID", "APPSECRET").
  4. getAccessToken();
  5. // 创建永久二维码
  6. String ticket = createPermanentQRCode(accessToken, 617);
  7. }

运行结果如下所示:

  1. [INFO ] 2013-11-10 02:26:44,661 org.liufeng.course.util.AdvancedUtil 创建永久带参二维
  2. 码成功 ticket:gQEg7zoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL2lIVVJ3VmJsTzFsQ0
  3. ZuQ0Y1bG5WAAIEW35+UgMEAAAAAA==