之前写了一些支付宝和微信支付集成的文章,收到了广大网友的关注和讨论,感到非常开心。最近做了支付宝和微信支付的二次升级,支付宝的API调用有了些许变化,支付宝官方放出了2.0,在此也强烈建议大家使用新版的支付宝支付API。这个讲在后续博文中公开。今天主要说说微信支付出现的签名错误问题。
其实是一个很小的问题,因为在上一版集成微信支付的时候是自己走的整体的申请流程,一些KEY和密钥都是通过一步一步记录下来的,公司在之前的微信支付商户大合约下又注册了一个应用,所以有些问题就应该提请广大网友注意了:
- mch_id的问题:相信我,微信绝对严谨,你不可能像支付宝一样,一次申请多处享用,微信是按照APP分的,也就是你有几个APP就会有几个对应的商户号信息,每个商户号下都会有一个独立的包含公司证照信息以及拥有可以提现等权限的微信账号。所以mch_id应该去你申请微信支付流程时发送给你的邮件中寻找,对应“微信支付商户号“;
- 发送微信预支付订单的时候会设置KEY,这个KEY对应的是另外一个流程:你需要到这个网址下:https://pay.weixin.qq.com/index.php/core/home/login
去用你邮件里的用户名和密码登录,这个跟查看开发文档的那个页面可不一样,那个是大的账户,这个属于大账户下每个APP对应的小账户也就是你的商户号,我们的支付开发应该基于这个小账户,因为要区分APP发起支付,微信很严谨滴,原因你懂的。总之你会在下面的菜单项中:
找到一个你未完成的使命,注册获取证书,同时你也有提现的权限等等敏感权限,建议还是在公司注册负责人的机器上操作,同时你会获取两个短信验证码完成你的这个注册流程,最后你得到的就是KEY。这个签名错误就不会出现了。
我在测试过程中发现如果KEY不正确,第一次你仍然会收到预订单号,但是再次发起支付的时候就会出现签名错误了,因此KEY是会在第二次及后续起到比对作用的,当然第一次你在客户端发起支付的时候也会报错的。
嗯,仅仅是解决一个小问题,先到这里,后续还要好好说说新版支付升级的事情。谢谢大家。