微信公众号开发之测试账号

标签: 无 分类: 未分类 创建时间:2023-08-17 04:37:02 更新时间:2024-12-03 13:01:38

前言

~~如何使用测试账号,其实我还是没有搞懂。我虽然注册了测试账号,但是在调用jssdk时还是遇到了需要填写js安全域名的问题,结果我还是找了一个域名(公司的一级域名后设置了二级域名),弄了一个服务器(公司的服务器),然后我在服务器上安装了nginx进行了转发,然后把要求的MP_verify_AKxhZkUe8kuvT7Wr.txt文件放到根目录下(也就是为了能从外网通过我的域名加上这个文件名,能访问到)就可以了。但是我的实际的代码并没有放到服务器上,而是放到了本地的IIS服务器中,IIS服务器的80端口,然后修改了C:\Windows\System32\drivers\etc中的hosts文件(hosts中ip地址不能加端口),添加了:127.0.0.1 【我的域名】,这样在本地使用【我的域名】就可以访问开发中的网站了。虽然这样做也很麻烦,但是好在在服务器上进行开发吧,等一切测试开发好了,将代码部署到安全域名所在的服务器就可以了,外网也可以访问到了。~~

1.接口配置信息

(1)登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。

(2)开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,包括:signature、timestamp、nonce、echostr。

(3)服务器验证成功之后,需要原样返回 echostr 字符串,算是服务器校验成功了。

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
@RequestMapping(value = "/",method = RequestMethod.GET)
public void WxGET(){
String signature = request.getParameter("signature");
String timestamp = request.getParameter("timestamp");
String nonce = request.getParameter("nonce");
String echostr = request.getParameter("echostr");

PrintWriter out = null;
try {
out = response.getWriter();
if(checkSignature(signature, timestamp, nonce)){
out.write(echostr);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
logger.error("WxGET",e);
}finally{
out.close();
}
}
/**
* 验证Token
*/
private static final String token = "bibichuan";
public static boolean checkSignature(String signature,String timestamp,String nonce){
String[] str = new String[]{token,timestamp,nonce};
//排序
Arrays.sort(str);
//拼接字符串
StringBuffer buffer = new StringBuffer();
for(int i =0 ;i<str.length;i++){
buffer.append(str[i]);
}
//进行sha1加密
String temp = encode(buffer.toString());
//与微信提供的signature进行匹对
return signature.equals(temp);
}

(4) 服务器地址只能支持 80 和 443 端口,其他的端口无法使用。

参考文章:
1.微信公众平台测试号
2.填写服务器配置
3.微信公众平台测试号的申请与使用 URL:就是你后台服务器的url。必须是80端口(微信强制要求,其它端口或者其它端口映射的虚拟端口均不可以),用来接收关键词回复,菜单定义等功能。

2.解决80端口问题

在配置微信开发的服务器域名的时候,必须要使用80端口,但是服务器上的80端口已经被使用了,如何解决呢?

【解决方案】
可以使用花生壳内网穿透,使用一个随机的域名,映射到内网中,也可以使用 ngrok ,也支持二级域名进行映射。

我在配置保存的时候,总是弹出保存失败,后来官方为了推销产品,就问我好不好用,我把无法保存的情况给他说了,他说要在网页后台管理进行配置。我看了看需要打开管理控制台 ,可以在这里进行端口的映射,不过只能是用https端口了,没有http端口了。

在管理控制台上绑定了映射之后,就可以打开客户端进行内网穿透了。

2.jssdk签名

经过打破沙锅问道低的精神,我测试出了了如何通过测试账号进行测试的方法。
(1) 打开测试账号地址:http://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

(2) 使用测试账号给的appID和appsecret,编写后台生成签名signature和时间戳timestamp,随机字符串nonceStr,具体代码参考本文中的第二第三章。

(3) 在测试账号地址中输入一个测试的js安全域名,随便写。

(4) 编写本地hosts文件,添加:192.168.1.222 bibichuan.github.io

(5) 编写前端wx配置代码,调用获取地理位置的函数,具体代码参见本文第五章。

(6) 打开微信开发者工具,输入网址:http://bibichuan.github.io/,测试结果(我把网站放到IIS服务器的80端口上了,也可以用其他的服务器)。

大功告成!!!

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。