1.背景做微信支付项目时,微信要求金额单位必须是分,数据库中订单金额的单位是元,所以订单金额用*100是正确的做法,但经常会少一分钱,这是为什么呢?2、调查过程中订单支付金额的计算非常复杂,所以先把单位换算成点再换算成整数,保证微信支付参数没有错,这也是正确的做法。但是这里隐藏了一个问题。还记得我们的问题发生的条件一定是“购买某件商品时”吗?如果您单独购买此产品,则订单金额为19.9。我们可以试试:echo(int)(19.9*100);//结果是1989而不是1990,导致创建订单时发给微信的支付数据是1990,再次支付时是1980,所以接口返回“订单号重复”错误。这时我们会发现少了一分钱,为什么呢?让我们看看官方的PHP文档来了解一下。3、解法一$total_fee=(int)(($order_money+0.00001)*100);方法二$total_fee=(int)bcmul($order_money,100);
