前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >申请测试微信公众号流程_如何申请免测

申请测试微信公众号流程_如何申请免测

作者头像
全栈程序员站长
发布2022-09-20 18:36:42
4K0
发布2022-09-20 18:36:42
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

申请测试微信公众号

申请的地址:https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

申请测试微信公众号流程_如何申请免测
申请测试微信公众号流程_如何申请免测

点击登录,弹出二维码页面,微信扫码登录后,

需要填写接口配置信息中的url,token:url是回调地址,token值可以随意填写。

js 接口安全域名需要设置一个可以访问的域名,这个域名和接口配置的url 地址中的域名是一致的,

申请测试微信公众号流程_如何申请免测
申请测试微信公众号流程_如何申请免测

点击提交按钮时,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:

申请测试微信公众号流程_如何申请免测
申请测试微信公众号流程_如何申请免测

通过检验signature对请求进行校验,流程如下:

1)将token、timestamp、nonce三个参数进行排序

2)将三个参数字符串拼接成一个字符串进行 SHA-1 加密

3)开发者获得加密后的字符串可与signature对比,相等则返回 echostr 参数给微信。

代码实现如下:

代码语言:javascript
复制
//该方法就是接口配置url中请求的方法 public String WechatCallBack() throws IOException{ //验证签名的是get请求 boolean isGet = Objects.equals("GET", getRequest().getMethod().toUpperCase()); if(isGet){ //微信公众号服务器接口配置的签名token String token = "dfgsdfgdfg"; //可写在配置文件中,从配置文件中获取,或存在数据库中 //随机数 String nonce = request.getParameter("nonce"); //签名 String signature =request.getParameter("signature"); //时间戳 String timestamp = request.getParameter("timestamp"); //验证token String[] paramArr = new String[] {token,timestamp,nonce}; Arrays.sort(paramArr); //将验证的值返回给微信服务器 PrintWriter out = response.getWriter(); String echostr = request.getParameter("echostr"); if (WechatMessageUtil.checkSignNature(paramArr,signature)){ LOG.error( "===========请求校验成功========"); out.print(echostr); }else{ LOG.error("===========请求校验失败========"); } return null; } }
代码语言:javascript
复制
WechatMessageUtil工具类
代码语言:javascript
复制
public static boolean checkSignNature(String[] paramArr,String signature) { StringBuilder content = new StringBuilder(); for (int i = 0; i < paramArr.length; i++) { content.append(paramArr[i]); } String cipherText = null; try{ MessageDigest md = MessageDigest.getInstance("SHA-1"); byte[] digest = md.digest(content.toString().getBytes()); cipherText = byteToStr(digest); }catch (NoSuchAlgorithmException ex){ ex.printStackTrace(); } return cipherText != null ? cipherText.equals(signature.toUpperCase()) : false; } public static String byteToStr(byte[] digest) { String strDigest = ""; for (int i = 0; i < digest.length; i++) { strDigest += byteToHexStr(digest[i]); } return strDigest; } public static String byteToHexStr(byte mByte) { char[] Digit = { '0', '1' , '2', '3', '4' , '5', '6', '7' , '8', '9', 'A' , 'B', 'C', 'D' , 'E', 'F'}; char[] tempArr = new char[2]; tempArr[0] = Digit[(mByte >>> 4) & 0X0F]; tempArr[1] = Digit[mByte & 0X0F]; String s = new String(tempArr); return s; }

此时页面上显示提交成功即可,然后就可以调用微信的接口来实现具体的功能了。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/167021.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 申请测试微信公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档