微信开发搭建本地调试

2016-06-20 21:43:00 weixin_34014555 阅读数 36

微信开的本地调试只支持80号端口,实验了很多办法,总结一下:

办法一: 

公司使用的是联通ADSL, 在路由器上做完端口映射后发现电/封了80端口,所以这个办法走不通了。

办法二:

搜可以下,可以用ngrok,飞快的下载,设置好了。把ngrokURL填入微信设置时,微信提示这种网址存在安全风险,已经不支持了。

 办法三:

这个方式要求你有一台外网linux服务器。微信要求这台机器的域名是已经通过ICP备案的,你可以用你开发域名的一个子域名指向这个服务器。比如

1)首先:把linux器占用80号端口的服

2)打开服器的转发功能,执行以下命令:

sudo nano /etc/ssh/sshd_config

/etc/ssh/sshd_config文件末尾加入一句:

GatewayPorts yes

然后重启SSHsudo service ssh restart

 

尝试了阿里云和Azure Linux虚拟机,有以下要注意的:

阿里云

打开防火,允许访问80端口

 

Azure:

打开防火,允许访问80端口

Azure比阿里云特别的地方是,root用户默认是没打开的。所有我们需要打开root

  • SSH登录,你创建虚拟机的时候应该有一个用户。
  • 执行以下命令:

sudo nano /etc/ssh/sshd_config

修改

PermitRootLogin without-password

为:

#PermitRootLogin without-password (注释掉)

PermitRootLogin yes

  • 然后重启SSH

sudo service ssh restart

  •  然后切换到root 用户

sudo su

  • 检查root 用户是否锁定(LOCK表示锁了)

[root@Linux ~]# grep root /etc/shadow

root:*LOCK*:14600::::::

  • root 一个密码,这样就启用root

[root@Linux ~]# passwd

 

最后一步,设置端口转发,在本机上运行(假设你使用MAC):

ssh -R 80:localhost:9001 root@ (这句话的意思是,把发到:80的流量都转发到本地的9001端口。

2018-06-07 16:23:39 packel 阅读数 602

微信公众号开发时,本地调试步骤:

1、首先要申请号公众号

2、申请域名,并认证通过(我选择的阿里云,微信接入需要实名认证)

3、服务器配置nginx反向代理(注意,服务器端口一定要80或443端口)


4、局域网做内网映射(natapp是免费的)

5、本地tomcat跑起来,就可以调试了

为什么要做本地调试,这个就不用多说了吧。按照上面的配置好以后,微信公众号开发的调试就跟平时开发一样了

2016-05-03 16:54:45 dream20nn 阅读数 6198

1.微信测试号申请:http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

2.接口配置填写:由于此处URL只支持线上,而我们开发都在本地,所以要用到下面介绍的


3.Ngrok,一款国外的内网穿透利器,好处是监听本地端口映射到外网,支持外网访问本地环境【微信官方在QQ浏览器中内嵌了微信的本地测试环境其实就是用的Ngrok】这东西被墙了,并且只有注册了【貌似现在要付费?】才支持自定义域名【如果不是自定义域名,那么每次启动域名都随机,第2步中的URL还要每次变,很麻烦】

4.Natapp.cn-->基于Ngrok的免费内网穿透利器,名如其意。官网下载对应系统安装包,WINDOWS下解压,在对应文件夹内打开cmd然后执行下面的命令

【Ngrok -config ngrok.cfg -subdomain myqpp 8080】由于咱们用的Tomcat所以监听8080端口,myapp处输入自己需要设定的名称

5.执行4后下面的域名则为外网地址,访问此域名也就是访问-->127.0.0.1:8080


6.将此域名填写到第2步中的URL中,TOKEN随便填写即可,先不要点击提交【微信开发文档中有个例子,PHP的,用于验证服务器地址的有效性】

7.先不要启动咱的项目,先打开一个没有部署任何APP的Tomcat,在webapp/ROOT下面新建一个JSP页面,页面清空【不需要head,body等信息,清空所有】然后粘贴下面的代码

<%
out.print(request.getParameter("echostr"));
%>

8.点击提交即可绑定成功,然后用自己的微信扫面下方二维码关注测试公众号


9.由于获取用户userinfo,需要设置授权回调域名页面



10.现在可以关掉tomcat然后用咱们自己的项目进行开发了,注意替换对应的appID和appsecret

2018-05-05 15:03:10 yang398835 阅读数 8379
原因:
1、由于公司的微信公众号已经在阿里云上运营,如果有任何bug不可能去停掉服务器去调试,这就需要在本地搭建测试环境了。
2、公众号开发涉及到微信的回调,所以你本地搭建的服务器需要外网能够访问,这个时候就需要把运行在内网的服务器映射到外网去给微信访问。

方法:
1、搭建内网穿透环境
如果喜欢自己搭建的话可以多找些关于内网穿透的资料看看,我是由于时间的关系,当时就选择了一个工具来把自己的电脑穿透到外网,(主要是收费不是很贵)。
在这里可以推荐一下:natapp,https://natapp.cn/,网络感觉还不错,虽然不快,但是基本能满足我的微信开发就足够了,我使用的是付费5/月的套餐,因为这样就能固定的外网地址。

2、映射好后,要试着访问以下映射的地址,看看是否能访问到你的服务器,可以的话就说明你的映射是成功的。如图:




3、配置公众号的测试账号:
1)、进入到微信公众号首页左侧导航栏下有个开发者工具,点击进去:

2)、在右边能看到如下的测试账号,点击进入

3)、用个人微信扫一扫进去即可登录个人的测试账号,此时会有如下的东西,这个是公众号开发的时候需要用到的参数。
注:这些最好用配置文件的形式保存,方便以后修改为正式环境的参数!

4)、这个url是微信那边需要发个验证请求过来的,需要你配置一个你服务器的外网地址,即第一步我们将公众号服务器映射到外网的地址,(注意端口号哦)。token的话自己随机设置,并保存到配置文件中。


5)、当你点击提交的时候,微信会立刻试着发个请求到这个地址上去,如果请求成功的话,可以看到如下图;

url尾部的wechat,是因为我本地用了nginx路由转向,这个转向就是转到我的本地公众号服务器。(如果还没有接触nginx的话,可以先试着直接把映射的端口直接跟你公众号服务器端口设置成一样,就是如下图的本地端口。不过一般还是建议搭配nginx使用,这样就不用总是去改端口,只需要配置好你的nginx代理服务器就可以了。


6)、微信发送认证请求到你本地服务器的代码如下,这个是node的代码,这个代码只在微信认证的时候使用,平时注释掉即可:
// 微信url 验证token代码
router.get('/',function function_name(req,res) {
// body...
var state = req.query.state;
//console.log(req);
var Isign = sign.checkSignature(req.query);
console.log('sign',Isign);
if(!Isign){
//如果签名不对,结束请求并返回
res.end('signature fail');
}
if (req.method == "GET") {
//如果请求是GET,返回echostr用于通过服务器有效校验
res.end(req.query.echostr);
}
});
sign文件的检查签名
var crypto = require('crypto');
checkSignature = function (query) {
var signature = query.signature;
var timestamp = query.timestamp;
var nonce = query.nonce;

var shasum = crypto.createHash('sha1');
var arr = [configs.token, timestamp, nonce].sort();
shasum.update(arr.join(''));

return shasum.digest('hex') === signature;
};
7)、当你到这一步的时候,相信你微信扫一扫关注的测试账号就可以给你测试使用了,真机测试如下图:
2019-04-04 16:39:05 weixin_39706415 阅读数 323

在微信平台配置的安全域名

1、修改host地址

进入下面地址

C:\Windows\System32\drivers\etc

修改下面箭头地方的域名为配置的安全域名 

 

2、清理dns 

打开cmd 输入

ipconfig /displaydns

3、关闭浏览器重启项目