Stripe: parameter_invalid_integer, New to PHP



我正在调试我的代码。我在PHP方面不是天才,如果我声明的参数不是整数,我需要一些帮助来解密它。。。

有人能帮忙吗?

{
"error": {
"code": "parameter_invalid_integer",
"doc_url": "https://stripe.com/docs/error-codes/parameter-invalid-integer",
"message": "Invalid integer: 1.13",
"param": "amount",
"type": "invalid_request_error"
}

$app->post('/createCharges',function((use($app({$response=array((;

$json = $app->request->getBody();
$data = array(json_decode($json,true));
$amount = $data[0]['amount'];
$source = $data[0]['source'];
$appointmentid = $data[0]['appointmentid'];

StripeStripe::setVerifySslCerts(false);
StripeStripe::setApiKey(STRIPE_API_KEY);
$charge = StripeCharge::create(array(
"amount" => $amount,
"currency" => "usd",
"source" => $source,
"description" => "test order from ios"
));

对于Stripe,Chargeamount属性始终是货币最小单位的整数(美分表示美元(。

https://stripe.com/docs/api/charges/create#create_charge-金额

因此,要向$1.13收费,您需要确保在StripeCharge::create中传递的amount113而不是1.13——如果您的前端传递的是十进制值,那么简单的*100应该会为您提供此处所需的值,例如$amount = (int)($data[0]['amount'] * 100);

尽管这是一个老帖子,但我愿意留下一个答案来帮助别人。

条带总是接收integer作为$cent值。因此,每当您倾向于通过Stripe创建费用、支出、转账或任何类型的交易时,您都必须将cent值设置为整数。因此,要对$5010.458充电,必须将其转换为不包含任何小数/十进制成分的整数cent

你有几种选择。例如:

$amount = (number_format($amount, 2, '.', '') * 100)

如果您按cent收费,您可以使用:round(), ceil(), or floor()PHP函数来获得最接近的integer值。此外,您还可以使用casting:*(int) $amountintval($amount)

(int(($request->amount*100(,

$checkout_session = StripePaymentIntent::create([
'amount' => (int)($request->amount * 100),
'currency' => 'AED',
'description' => "booking"
]);

最新更新