我试图向客户收费,然后在我和拥有该产品的所有者之间分摊付款。我遇到的问题是,如果产品的所有者(在这种情况下是一些文件上传)为他们的价格插入了一个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美元),则该费用成功
如何使用十进制格式处理此佣金?或者我做错了什么?
答案 0 :(得分:0)
你需要正确格式化申请费,这是1999.8。申请费应为整数。您可以在应用程序费用中添加完整的逻辑,它将起作用。
application_fee(CONNECT ONLY可选):以美分为单位的费用 适用于收费并转移给申请所有者 条纹帐户。要使用申请费,必须提出申请 代表另一个帐户,使用Stripe-Account标头,OAuth 键或目标参数。有关更多信息,请参阅 申请费文件。
在你的情况下,它不是1999.8分,它应该是2000年。
答案 1 :(得分:0)
正如@spencdev评论的那样,似乎 floor 可以解决问题。我用它测试了它:
99.99, .87, 1219.77, 3.00, 10.01, 100.00
所有工作并进入Stripe
floor($file->calculateCommission() * 100)