使用Laravel在Stripe上使用佣金给出错误的格式价格

时间:2018-01-04 00:07:38

标签: php laravel stripe-payments stripe-connect

我试图向客户收费,然后在我和拥有该产品的所有者之间分摊付款。我遇到的问题是,如果产品的所有者(在这种情况下是一些文件上传)为他们的价格插入了一个99.99的值,那么有人试图结账,一旦他们输入他们的Stripe信用卡信息,他们就会收到此错误:

enter image description here

在这种情况下,产品的价格是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美元),则该费用成功

如何使用十进制格式处理此佣金?或者我做错了什么?

2 个答案:

答案 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)