个人开发者很难很难申请到微信开放平台中的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代码相关推荐

  1. php响应微信发送的token验证,ThinkPHP 3.2.3响应微信发送的Token验证失败

    2.下载微信的Token验证Demo,放于根目录测试链接没有任何问题: URL http://www.XXX.com/wx_sample.php Token weixin 3.将验证代码置于TP框架中 ...

  2. 微信小程序服务器未响应,微信小程序点击事件失效

    想在主页上添加一个搜索功能 但是加上之后发现原有的页面点击事件没有反应了 个人怀疑是input和bindtap互相影响? 有人碰到类似的情况吗 是怎么解决的 {{item}} this is a te ...

  3. java中用户头像是怎么弄的_微信小程序获取用户openid,头像昵称信息,后台java代码...

    https://blog.csdn.net/qq_39851704/article/details/79025557 首先最近正在练习微信小程序刚刚写了一个获取用户openid的代码,貌似之前的小程序 ...

  4. 公众号:正确响应微信发送的Token验证

    直接把下面代码复制到你要填写的url地址 <?php //定义常量token define('TOKEN','weixin'); //检查标签function checkSignature(){ ...

  5. java 解决微信配置服务器时出现的token验证失败问题

    配置微信服务器需要我们填写的有两个值,一个是URL,一个是Token,接下来我们就来看看这两个值该如何填写 1.URL URL必须是一个线上地址,外网能访问的一个80端口地址.这个问题我们可以利用花生 ...

  6. 基于SENPARC盛派微信sdk的.net WebService微信公众号的相关开发(包含从零开始本机测试环境搭建//token验证//获取微信推送消息//向微信推送消息)

    前言: 由于微信公众号正式号,一直在被使用,所以在研发的时候,本机测试环境,就显得非常重要. 而且在自己闲暇之余,可以自己尝试更深程度的微信公众号的研发工作. 1.首先,必要的网站 http://sd ...

  7. Wx腾讯 微信生成二维码--->微信扫描后注册并登录

    Wx生成二维码 1.配置yml application.yml wx:open:# 微信开放平台 appidappid: wxed9954c01bb89b47# 微信开放平台 appsecretapp ...

  8. 微信开发学习日记(八):7步看懂weiphp插件机制,核心目标是响应微信请求

    又经过了几个小时的梳理.回顾,截至目前,终于对weiphp这个框架的机制搞明白了些.想要完全明白,自然还需要大把的时间. 第1步:    配置微信公众号,http://weiphp.jiutianni ...

  9. 关于微信分享申请应用APPkey时该注意的地方

    在这里记录一下公司项目集成微信分享的踩过的坑. 我们都知道要集成第三方sdk时,都要去申请一个APPkey来作为你的APP的唯一标识,微信也不例外. 在微信开放平台创建一个新的应用时,需要填写APP的 ...

最新文章

  1. 计算机存储器与寄存器的区别,存储器和寄存器区别
  2. python如何使用字典中的值并进行比较_python – 如何比较字典中的值?
  3. 手动添加ubuntu服务
  4. python自动上传图片_使用Python实现一个简单的图片上传存储服务
  5. java获取网络带宽_Linux Java 获取CPU使用率,内存使用率,磁盘IO,网络带宽使用率等等...
  6. java byte 梳理
  7. Codeforces 369E Valera and Queries --树状数组+离线操作
  8. JavaScript 精度问题以及JavaScript 浮点数陷阱及解决方案
  9. 用三方做的豆瓣电影页面
  10. 教你轻松又简单的绘制地铁线路图
  11. ADC、DAC等混合信号器件的AGND和DGND要不要分开接地
  12. 一文搞定YOLO3代码详解
  13. 软路由保姆级入门教程 一篇看懂软路由
  14. 2020.10.20读 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
  15. 数据库中如何求候选码
  16. 什么是cert文件?
  17. Windows 防火墙日志相关
  18. Sklearn官方文档中文整理4——随机梯度下降和最近邻篇
  19. css 实现马赛克背景,ps透明背景,未选颜色的展示方式
  20. redis事件通知(notify-keyspace-events Ex)

热门文章

  1. 如何利用领英快速开发客户?
  2. Linux学习-man和Info
  3. 计算机函数求最大值怎么设置,高中数学函数的最大值和最小值怎么求
  4. Java Web基础
  5. 基于web的模型管理系统的设计
  6. Eclipse ADT插件和Android SDK使用离线包升级笔记
  7. win7硬盘分区软件_误删数据恢复软件,你应该拥有它!
  8. Excel编程环境搭建
  9. AUI 滚动视图使用
  10. c语言 r语言 java,R语言rJava包安装载入及JAVA环境配置