在微信小程序或者微信公众号开发的时候,这个接口配置永远的是微信后台开发的第一步。
1、用你自己的微信公众号或者使用微信测试号,这里我用的是微信测试号,进去后扫描登录即可,测试号拥有正常公众号的大部分功能以及接口权限
微信测试号链接:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
微信消息接口使用指南:https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Access_Overview.html
2、域名绑定,首先要先有后台,这里我用的是springboot框架
Controller层
package com.wen.springboot.Controller;
import com.wen.springboot.utils.WeixinUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.io.PrintWriter;
/**
* @ClassName weixin
* @Author zhangwen
* @Description 测试号接入
* @Date 2019/12/16 15:39
*/
@RestController
@RequestMapping("/weixin")
public class weixin {
@Autowired
private WeixinUtils weixinservice;
@GetMapping("/wx")
public boolean wx(HttpServletRequest request, HttpServletResponse response){
//获取微信服务器发来的参数,并将token、timestamp、nonce三个参数进行字典序排序
//将三个参数字符串拼接成一个字符串进行sha1加密
//开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");
//check方法用来排序以及比较
if (weixinservice.check(timestamp,nonce,signature)){
PrintWriter out = null;
try {
out = response.getWriter();
out.print(echostr);
} catch (IOException e) {
e.printStackTrace();
}finally {
out.flush();//刷新文件流
out.close();//关闭文件流
}
System.out.println("接入成功");
}
return null;//无需返回值,返回null即可
}
}
WeixinUtils类
package com.wen.springboot.utils;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
/**
* @Author: zhangwen @Description: 微信验证签名
*/
@Component
public class WeixinUtils {
private static final String Token="123";//这里要与域名绑定时输入的Token一致!
/**
* 验证签名
* @param timestamp
* @param nonce
* @param signature
* @return
*/
public boolean check(String timestamp, String nonce, String signature) {
String [] strs = new String[]{Token,timestamp,nonce};
System.out.println(strs);
Arrays.sort(strs);//字典排序
String str = strs[0]+strs[1]+strs[2];
String mysig = sha1(str);
System.out.println(mysig);
System.out.println(signature);
return mysig.equalsIgnoreCase(signature);//将排序加密后的mysig字符串与微信传过来的微信加密签名signature比较
}
private String sha1(String str) {//加密
try {
MessageDigest messageDigest = MessageDigest.getInstance("sha1");
byte[] digest = messageDigest.digest(str.getBytes());
char[] chars = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
StringBuilder sb = new StringBuilder();
for (byte b:digest) {
sb.append(chars[(b>>4)&15]);
sb.append(chars[(b)&15]);
}
return sb.toString();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return null;
}
}
到这里后,如果自己有服务器,可以将项目打包放到服务器中,如果没有,想在本地控制台看效果就用natapp内网穿透
natapp官网地址:https://natapp.cn/ ,进去后申请一个免费隧道即可下载使用,natapp配置请看我另外一篇博客。
博客链接:https://blog.csdn.net/weixin_44124391/article/details/104473882
3、在后台已经发布,或者本地项目已经跑起来且用了内网穿透后,进入微信测试号或者公众号界面
这里的url就是你内网穿透的地址或者服务器地址加项目接口访问路径,先点击修改,输入后确保Token与项目中的Token一致,点击确定后,就会向你的服务器或者本地项目发送请求,之后就是项目自己进行比较返回了,到这里微信开发接口绑定就完成了