Java微信二次开发(一) Java微信请求验证功能

2025-05-29 0 85

准备用Java做一个微信二次开发项目,把流程写在这里吧。

第一篇,做微信请求验证

需要导入库:servlet-api.jar

第一步:新建包com.wtz.service,新建类LoginServlet.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53
package com.wtz.service;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.wtz.util.ValidationUtil;

/**

*   @author wangtianze QQ:864620012

* @date 2017年4月17日 下午8:11:32

* <p>version:1.0</p>

* <p>description:微信请求验证类</p>

*/

public class LoginServlet extends HttpServlet {

@Override

protected void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

System.out.println("get请求。。。。。。");

//1.获得微信签名的加密字符串

String signature = request.getParameter("signature");

//2.获得时间戳信息

String timestamp = request.getParameter("timestamp");

//3.获得随机数

String nonce = request.getParameter("nonce");

//4.获得随机字符串

String echostr = request.getParameter("echostr");

System.out.println("获得微信签名的加密字符串:"+signature);

System.out.println("获得时间戳信息:"+timestamp);

System.out.println("获得随机数:"+nonce);

System.out.println("获得随机字符串:"+echostr);

PrintWriter out = response.getWriter();

//验证请求确认成功原样返回echostr参数内容,则接入生效,成为开发者成功,否则失败

if(ValidationUtil.checkSignature(signature, timestamp, nonce)){

out.print(echostr);

}

out.close();

out = null;

}

}

第二步:新建包com.wtz.util,新建类Validation.java

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75
package com.wtz.util;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.util.Arrays;

/**

* @author wangtianze QQ:864620012

* @date 2017年4月17日 下午8:35:57

* <p>version:1.0</p>

* <p>description:微信请求校验工具类</p>

*/

public class ValidationUtil {

private static String token = "wangtianze";

public static boolean checkSignature(String signature,String timestamp,String nonce){

//1.将token,timestamp,nonce三个参数进行排序

String[] str = new String[]{token,timestamp,nonce};

Arrays.sort(str);

//2.将三个参数字符串拼接成一个字符串

StringBuilder buff = new StringBuilder();

for(int i=0;i<buff.length();i++){

buff.append(str[i]);

}

//3.进行sha1加密

MessageDigest md = null;

String result = "";

try {

md = MessageDigest.getInstance("SHA-1");

byte[] data = md.digest(buff.toString().getBytes());

//将字节数组转换成字符串

result = bytesToString(data);

System.out.println("加密后的字符串为:"+result);

} catch (NoSuchAlgorithmException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return result!=null?(result.equals(signature.toUpperCase())):false;

}

/**

* 将字节数组转换成十六进制字符串

* @param byteArray

* @return

*/

private static String bytesToString(byte[] byteArray){

String stringDigest = "";

for(int i=0;i<stringDigest.length();i++){

stringDigest += byteToHexString(byteArray[i]);

}

return stringDigest;

}

/**

* 将一个字节转换为十六进制字符串

* @param mByte

* @return

*/

private static String byteToHexString(byte mByte){

char[] digit = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};

char[] temp = new char[2];

temp[0] = digit[(mByte>>>4) & 0X0F];

temp[1] = digit[mByte & 0X0F];

String str = new String(temp);

return str;

}

}

第一天就做了这些,完成了微信请求验证的功能。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持快网idc。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Java微信二次开发(一) Java微信请求验证功能 https://www.kuaiidc.com/116905.html

相关文章

发表评论
暂无评论