个人开发者申请微信appKey和appSecret,及响应微信发送的Token验证的Java代码
个人开发者很难很难申请到微信开放平台中的appKey及appSecret。无论是创建移动应用,还是网页应用,或者小程序应用。我曾申请过两次,都审核失败了,必须要提供公司的营业信息、应用信息等等 + 线下打印表格并填写 + 公司盖章+照片上传,系统名字还不能乱写,不然分分钟审核不通过。作为个人学习的目的申请创建应用,根本不可能。
我曾一度绝望,好在过了几天,突然发现微信还可以申请测试号,虽然性能被限制了一点,但是作为个人学习或者个人项目中使用是完全够了(最狗的是微信开放平台也没看到哪里可以进入申请测试号的网址,我还是百度的时候,别人随口提了一句才看到这个网址)
而且我之前在微信开发平台申请创建应用的时候,我说了我只是想个人项目开发,有没有办法弄到appKey和appSecret用于学习,也闭口不提可以申请测试号,只会建议我完善公司信息!!!
测试号申请网址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
进入测试号以后,又被这gou微信坑了,页面如下:
在接口配置修改中,微信官方需要验证你申请时填写的url能够正常响应,会给你填写的url接口发送get请求,接口需要正确返回才能都配置成功。我按照指引查看文档:
这狗官方只给php示例也就算了,这php的代码一眼看得出来返回true就可以。并且在仔细看了官方文档后,也没提及返回什么才算验证成功,我就按照给的php代码示例一样,返回true好了。
于是我不厌其烦的去写这个接口:先排序、再加密、然后拼接字符串,最后比较后返回是否成功的boolean值。
然而一直显示配置失败,配置失败,配置失败(我把改的代码发布到服务器不要时间的吗?)
最后百度通过别人的代码才发现,这gou日的好像需要返回那个随机字符串:echostr 才行
我横竖睡不着,仔细看了半夜,才从字缝里看出字来,满篇文档都写着两个字是‘shabi’
以下是代码:
接收微信验证的接口,与申请测试号网站填写的url保持一致:
/*** 微信验证url*/@GetMapping("/checkUrl")public String checkUrl( WeiXinCheckUrl weiXinCheckUrl) {//与申请测试号网站填写的token对应String token = "JustDoIt";List<String> paramList = new ArrayList<>();paramList.add(weiXinCheckUrl.getNonce());paramList.add(weiXinCheckUrl.getTimestamp());paramList.add(token);//按字节排序Collections.sort(paramList);//按顺序拼接字符串StringBuilder stringBuilder = new StringBuilder();paramList.forEach(stringBuilder::append);//sha1加密String encode = SHA1.encode(stringBuilder.toString());System.out.println("微信消息发过来了:" + weiXinCheckUrl.getEchostr());if (encode.equals(weiXinCheckUrl.getSignature())) {return weiXinCheckUrl.getEchostr();} else {return "";}}
微信请求参数的封装实体:
* @author YuanChangLiang* @description* @date created in 13:21 2021/10/26*/@FieldDefaults(level = AccessLevel.PRIVATE)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WeiXinCheckUrl implements Serializable {private static final long serialVersionUID = 757097916620967707L;/*** 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。*/String signature;/*** 时间戳*/String timestamp;/*** 随机数*/String nonce;/*** 随机字符串*/String echostr;
}
SHA1加密用到的工具类:
import java.security.MessageDigest;public final class SHA1 {private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5','6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};/*** Takes the raw bytes from the digest and formats them correct.** @param bytes the raw bytes from the digest.* @return the formatted bytes.*/private static String getFormattedText(byte[] bytes) {int len = bytes.length;StringBuilder buf = new StringBuilder(len * 2);// 把密文转换成十六进制的字符串形式for (int j = 0; j < len; j++) {buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);buf.append(HEX_DIGITS[bytes[j] & 0x0f]);}return buf.toString();}public static String encode(String str) {if (str == null) {return null;}try {MessageDigest messageDigest = MessageDigest.getInstance("SHA1");messageDigest.update(str.getBytes());return getFormattedText(messageDigest.digest());} catch (Exception e) {throw new RuntimeException(e);}}
}
好吧,我承认,写这篇文章的目的就是为了骂微信官方。
个人开发者申请微信appKey和appSecret,及响应微信发送的Token验证的Java代码相关推荐
- php响应微信发送的token验证,ThinkPHP 3.2.3响应微信发送的Token验证失败
2.下载微信的Token验证Demo,放于根目录测试链接没有任何问题: URL http://www.XXX.com/wx_sample.php Token weixin 3.将验证代码置于TP框架中 ...
- 微信小程序服务器未响应,微信小程序点击事件失效
想在主页上添加一个搜索功能 但是加上之后发现原有的页面点击事件没有反应了 个人怀疑是input和bindtap互相影响? 有人碰到类似的情况吗 是怎么解决的 {{item}} this is a te ...
- java中用户头像是怎么弄的_微信小程序获取用户openid,头像昵称信息,后台java代码...
https://blog.csdn.net/qq_39851704/article/details/79025557 首先最近正在练习微信小程序刚刚写了一个获取用户openid的代码,貌似之前的小程序 ...
- 公众号:正确响应微信发送的Token验证
直接把下面代码复制到你要填写的url地址 <?php //定义常量token define('TOKEN','weixin'); //检查标签function checkSignature(){ ...
- java 解决微信配置服务器时出现的token验证失败问题
配置微信服务器需要我们填写的有两个值,一个是URL,一个是Token,接下来我们就来看看这两个值该如何填写 1.URL URL必须是一个线上地址,外网能访问的一个80端口地址.这个问题我们可以利用花生 ...
- 基于SENPARC盛派微信sdk的.net WebService微信公众号的相关开发(包含从零开始本机测试环境搭建//token验证//获取微信推送消息//向微信推送消息)
前言: 由于微信公众号正式号,一直在被使用,所以在研发的时候,本机测试环境,就显得非常重要. 而且在自己闲暇之余,可以自己尝试更深程度的微信公众号的研发工作. 1.首先,必要的网站 http://sd ...
- Wx腾讯 微信生成二维码--->微信扫描后注册并登录
Wx生成二维码 1.配置yml application.yml wx:open:# 微信开放平台 appidappid: wxed9954c01bb89b47# 微信开放平台 appsecretapp ...
- 微信开发学习日记(八):7步看懂weiphp插件机制,核心目标是响应微信请求
又经过了几个小时的梳理.回顾,截至目前,终于对weiphp这个框架的机制搞明白了些.想要完全明白,自然还需要大把的时间. 第1步: 配置微信公众号,http://weiphp.jiutianni ...
- 关于微信分享申请应用APPkey时该注意的地方
在这里记录一下公司项目集成微信分享的踩过的坑. 我们都知道要集成第三方sdk时,都要去申请一个APPkey来作为你的APP的唯一标识,微信也不例外. 在微信开放平台创建一个新的应用时,需要填写APP的 ...
最新文章
- 计算机存储器与寄存器的区别,存储器和寄存器区别
- python如何使用字典中的值并进行比较_python – 如何比较字典中的值?
- 手动添加ubuntu服务
- python自动上传图片_使用Python实现一个简单的图片上传存储服务
- java获取网络带宽_Linux Java 获取CPU使用率,内存使用率,磁盘IO,网络带宽使用率等等...
- java byte 梳理
- Codeforces 369E Valera and Queries --树状数组+离线操作
- JavaScript 精度问题以及JavaScript 浮点数陷阱及解决方案
- 用三方做的豆瓣电影页面
- 教你轻松又简单的绘制地铁线路图
- ADC、DAC等混合信号器件的AGND和DGND要不要分开接地
- 一文搞定YOLO3代码详解
- 软路由保姆级入门教程 一篇看懂软路由
- 2020.10.20读 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
- 数据库中如何求候选码
- 什么是cert文件?
- Windows 防火墙日志相关
- Sklearn官方文档中文整理4——随机梯度下降和最近邻篇
- css 实现马赛克背景,ps透明背景,未选颜色的展示方式
- redis事件通知(notify-keyspace-events Ex)