我试图向客户收费,然后在我和拥有该产品的所有者之间分配付款。我遇到的问题是,如果产品的所有者(在这种情况下是一些文件上传)为他们的价格插入了一个99.99的值,那么有人试图结账,一旦他们输入他们的Stripe信用卡信息,他们就会收到此错误:
在这种情况下,产品的价格是99.99美元。
这是我收费的地方:
try {
$charge = Charge::create([
'amount' => $file->price * 100,
'currency' => 'usd',
'source' => $request->stripeToken,
'application_fee' => $file->calculateCommission() * 100
], [
'stripe_account' => $file->user->stripe_id
]);
这是文件模型上的calculateCommission方法:
public function calculateCommission() {
return (config('marketplace.sales.commission') / 100) * $this->price;
}
在这种情况下,config('marketplace.sales.commission')只有20(20%)
如果用户输入100的价格(100美元),则该费用成功
如何使用十进制格式处理此佣金?或者我做错了什么?
你需要在你的情况下正确格式化申请费,这是1999.8。申请费应为整数。您可以为应用程序费用添加完善逻辑,它将起作用。
application_fee(CONNECT ONLY可选):以美分为单位的费用,将收取费用并转移到应用程序所有者的Stripe帐户。要使用申请费,必须使用Stripe-Account标头,OAuth密钥或目标参数代表其他帐户进行申请。有关更多信息,请参阅应用程序费用文档。
在你的情况下,它不是1999.8分,它应该是2000。
正如@spencdev评论的那样,地板似乎就是诀窍。我测试过它:
99.99, .87, 1219.77, 3.00, 10.01, 100.00
所有的工作,并通过条纹
floor($file->calculateCommission() * 100)