本文共 1190 字,大约阅读时间需要 3 分钟。
由于公司需要,由我负责一个项目在线支付的模块,于是我分别从微信和支付宝官网分别下载了扫码支付的demo,支付宝的demo只要按照官方说明还是比较轻松就能跑起来的,而且需要的jar报比较少,项目本身就是一个可以运行的web小项目(没有使用maven管理依赖,毕竟本来就没有几个jar包需要导,本身就用不着)。然后,微信支付不光官方文档写的比较乱,官方提供的demo更是让我无语,下面就说一说我在本地运行微信扫码支付项目所遇到的坑以及解决方法:
1、将工程导入到eclipse中(由于项目是maven管理依赖的一个jar工程,因此eclipse必须需要有maven环境——如果不知道maven是什么的同学的话先不管,可以先百度一下怎么在电脑上安装maven环境以及eclipse中如何安装其插件)之后,会提示少包,我的是因为jdk包没有导进来,这个根据具体情况吧,不是所有都会遇到,当我把jdk包导进来之后(此时工程上面的那个红色的叹号消失),HttpClient相关的类都报错,运行的时候一直报错,错误的意思是找不到相关的类,最后通过网上查询,发现应该是maven中依赖的HttpClient相关的报不全,最后通过去官网下载,将相关jar包全部放到工程中就ok了(下载地址hc.apache.org/downloads.cgi),果然不再报错了
2、LogFactory报错,与1的原因一样,同样是因为依赖包的问题,解决办法:将pom.xml文件中,slf4j的所有依赖管理注释掉,替换成 下面的代码
<dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.2</version> </dependency>
如图: 修改之前工程中是slf4j的三个相关jar包,但是少了log4j的包,修改完依赖之后,变成slf4j的两个相关jar包+log4j的包了,此时项目已经可以正常运行了。 3、第三个也是最容易出错的地方,当demo可以正常运行的时候(需要正确配置appid mchid key 等),测试扫码支付下单接口返回“签名错误”! 遇到这个问题的时候,首先需要我们确认appid mchid key等配置都是正确的,而后就需要看看这个接口的参数是不是按照参数名ASCII字典序排序的了!官方的接口中样例代码并没有按照ASCII字典序排序的,因此需要自己调整一下参数顺序(这点比较坑啊!)调整之后参数顺序应该为: 以上就是我遇到的几个问题,至于demo里面的测试代码,微信支付的代码不知道为啥非要写的那么复杂,反观支付宝的就比较简单了! 试着发起一个“腾讯充值中心-QQ会员充值”为标题的支付请求
获取支付链接并生成二维码,手机微信扫码之后显示: