From e96f7638e74cc24c075636c37e7ca5e713cd8742 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Wed, 26 Jul 2023 12:35:50 +0800
Subject: [PATCH] 短信认证

---
 src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java |  100 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 100 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java b/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java
index d6ed6aa..b4fa899 100644
--- a/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java
+++ b/src/main/java/cc/mrbird/febs/pay/util/WechatEventUtil.java
@@ -1,10 +1,23 @@
 package cc.mrbird.febs.pay.util;
 
+import cc.mrbird.febs.common.utils.MallUtils;
+import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.rabbit.producter.AgentProducer;
+import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.text.StrFormatter;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.json.JSONUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import org.dom4j.io.SAXReader;
 
 import javax.servlet.http.HttpServletRequest;
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileOutputStream;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
 import java.util.Arrays;
@@ -15,6 +28,7 @@
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
 
 import java.io.InputStream;
 import java.util.*;
@@ -211,4 +225,90 @@
         return "";
     }
 
+
+    @Autowired
+    RedisUtils redisUtils;
+
+    /**
+     * 获取ticket
+     *
+     * @param qrCodeParam
+     * @return
+     */
+    public String getTicket(String qrCodeParam) {
+        RestTemplate restTemplate = new RestTemplate();
+        String ticket = null;
+        // 拼接请求地址
+        String CREATE_QRCODE_URL = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN";
+        String requestUrl = CREATE_QRCODE_URL.replace("TOKEN", "70_ECdQaX-QtNXZP9ugU_JEJGRYEADWrlQZNYrT2I2IRHsx6hx4_O8RY4VasWI97_ixia8vANTdnNRI_cT00toK7CX98513sQI8535eTFw3b-VQChEFZrRqTfNPdSoGYXgAIAVNM");
+//        String requestUrl = CREATE_QRCODE_URL.replace("TOKEN", redisUtils.get(WechatConfigure.WX_ACCESS_TOKEN_REDIS_KEY).toString());
+        // 创建临时带参二维码
+
+        JSONObject jsonObject = restTemplate.postForObject(requestUrl,
+                "{\"expire_seconds\": 604800, \"action_name\": \"QR_STR_SCENE\", \"action_info\": {\"scene\": {\"scene_str\": "+qrCodeParam+"}}}",
+                JSONObject.class);
+//        JSONObject jsonObject = HttpsUtil.request(requestUrl, "POST", "{\"expire_seconds\": 604800, \"action_name\": \"QR_SCENE\", \"action_info\": {\"scene\": {\"scene_id\": 123}}}");
+        if (ObjectUtil.isNotEmpty(jsonObject)) {
+            String response = JSON.toJSONString(jsonObject);
+            if (!jsonObject.containsKey("errcode")) {
+                ticket = jsonObject.getString("ticket");
+                System.out.println("临时带参二维码ticket成功" + response);
+            } else {
+                log.error("临时带参二维码ticket失败:" + response);
+            }
+        }
+        return ticket;
+    }
+
+    /**
+     * 通过ticket换取二维码并保存二维码图片
+     *
+     * @param ticket
+     * @param savePath
+     * @return
+     */
+    //图片上传路径
+    public  static  final String IMG_UPLOAD_PATH="/home/javaweb/webresource/ywg/wxcode";
+    public String getQRcode(String ticket) {
+
+        String SHOW_QRCODE_URL = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET";
+        String requestUrl = SHOW_QRCODE_URL.replace("TICKET", ticket);
+
+        String randomNum = MallUtils.getRandomNum(5);
+        String imgName="/user_" + randomNum + "_acode_1.jpg";
+        String urlPrefix="https://ywgpzapi.meiao.biz/ywg/wxcode";
+        String imgPath=IMG_UPLOAD_PATH+imgName;
+        if(!FileUtil.exist(imgPath)){
+            try {
+                HttpResponse execute = HttpRequest.get(requestUrl).execute();
+                InputStream inputStream = execute.bodyStream();
+                File file = new File(imgPath);
+                FileUtil.writeFromStream(inputStream, file);
+                long uploadUrl = FileUtil.size(file);
+                //小于10kb重新生成
+                if(uploadUrl<=10240){
+                    log.error("生成微信小程序码失败:图片大小异常:{}",uploadUrl);
+                    return null;
+                }
+            } catch (Exception e) {
+                log.error("生成微信小程序码失败",e);
+                return null;
+            }
+        }else{
+
+            //判断文件是否正常 不正常 删除
+            File file = new File(imgPath);
+            long uploadUrl = FileUtil.size(file);
+            if(uploadUrl<=10240){
+                FileUtil.del(file);
+                return null;
+            }
+        }
+        System.out.println("根据ticket换取二维码成功,路径:" + imgPath);
+        return urlPrefix+"/"+imgName;
+
+    }
+
+    public static void main(String[] args) {
+    }
 }

--
Gitblit v1.9.1