做跨境支付的时候,发现有的订单时部分支付,
首先便是去查看回调金额和订单金额,果然回调金额比订单金额少了0.01元
然后确认发起支付的报文,也比订单金额少,那就是这边代码问题了。
做个实验 ,看是不是汇率转化为人民币产生的小数引起的问题:
$amount = 1.15;
$cur_money = intval( $amount * 100);
echo $cur_money;
嗯? 结果居然是 114,搜索下 intval 精度 。果然是我太年轻啊。
解决方案一:
使用高精度计算
$bcmul = bcmul($amount, 100);
echo $bcmul;
解决方案二:
先转换为字符串,再转整形
$cur_money = intval( strval($amount * 100));
echo $cur_money;