前段时间在做微信支付的时候遇到了签名错误的问题,令我百思不得其解的是,本地运行并没有报错,可是放在服务器上的时候确结结实实的给我一拳。

一开始小程序的微信支付无法使用,是因为这是一个新的小程序,里面并没有绑定新的微信商户,这些事情都做完之后就开始检查之前做好的微信支付的代码。把所有的参数仔细的查看并修改一轮,然后在本地确实是可以完成签证了。但是这个时候问题就来了,放在服务器上的时候一直没法正常使用。

 

1、时间戳的问题

微信支付的参数里有两个参数分别是订单的有效时间和失效时间,代码里读取的是本地时间,由于时间戳不对导致订单提交的时候就已经是处于无效时间了。

(1).检查本地代码,把时间打印出来看一下有没有问题

(2).检查服务器时间,确认一下服务器本地时间对不对

(3).如果是用容器做的部署,检查一下容器内的时间

我最终解决是在(3)个步骤的时候才解决了时间戳的问题,因为容器里没有设置时区,所以是默认的格林威治时区,也就是0时区,而我们是在东八区,所以时间上会差8个小时。

 

然而依旧没有解决我的问题

 

2、系统环境的问题

具体来说,这个我暂时还没有深入了解。我本地运行没问题的话就排除了代码的问题,在晚上查阅资料的时候看到有人提到说有可能是java环境和jar包不匹配导致的,所以我做了一个尝试,把jar包直接放在服务器环境中进行运行,竟然就可以了。说明确实是容器的环境没有配置好。关于这一块的内容,等我调试清楚的时候再补充吧