相比JAVA,PHP在开发上速度确实快很多,但是 在一些细节上,就是一个坑。。

最近在做支付时,就遇到了一个神坑!

用户支付明明是成功了,但是,后台看到是未支付,这就很奇怪了。随即我就打日志看了。这一看就懵逼了,系统的价格和微信支付回调的价格,肉眼看来,就完全没区别!!但是 就是不相等,嘿 简直日怪。

这里微信支付,单位是以分为单位,回调的时候,传的价格是1020分,我系统里面存的是10.20元,然后我取数据出来后,会 10.20 * 100,这里也就成为了1020分了,但是系统里面的 1020分 != 回调里面的 1020分。网上搜了下,是PHP的精度不够导致的。如何解决?找个了奇技淫巧的方法:需要使用函数转一下 把系统的 10.20元乘以100后,还得round()一下,然后再intval() 一下就可以了,例:

10.20 * 100 != 1020,但是

intval(round(10.20 * 100)) == 1020

嗯,神坑。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注