我正在将电子商务平台从使用 SagePay 迁移到 Stripe。
文档显示使用amount
的图1099
和货币gbp
(https://stripe.com/docs/ payments/accept-a- payment#web-create- payment-intent https://stripe.com/docs/payments/accept-a-payment#web-create-payment-intent).
据我所知,这意味着 10.99 英镑(不是 1099 英镑)。 但是他们的文档中对此非常不清楚 - 我假设情况就是如此。
如果我尝试发送amount => 10.99
通过他们的 API,我在响应中收到一条错误消息:
"error": {
"code": "parameter_invalid_integer",
"doc_url": "https://stripe.com/docs/error-codes/parameter-invalid-integer",
"message": "Invalid integer: 10.99",
"param": "amount",
"type": "invalid_request_error"
}
使用 SagePay,您实际上可以发送10.99
作为金额。
那么,对于 Stripe,您是否必须将所有金额转换为货币的单一基本单位(对于英镑,便士),例如,如果金额为 10.99 英镑,您需要这样做(10.99 * 100)
然后发送1099
?
该文档实际上并没有明确说明这一点。如果您阅读了《十进制金额》(https://stripe.com/docs/billing/subscriptions/decimal-amounts https://stripe.com/docs/billing/subscriptions/decimal-amounts)在他们的文档中它说你可以使用一个名为amount_decimal
但如果通过他们的 API 发送也会出错:
$intent = \Stripe\PaymentIntent::create([
'amount_decimal' => 10.99,
'currency' => 'gbp',
// Verify your integration in this guide by including this parameter
'metadata' => ['integration_check' => 'accept_a_payment'],
]);
导致参数错误,amount_decimal
,未知(即使它在他们的文档中?):
"error": {
"code": "parameter_unknown",
"doc_url": "https://stripe.com/docs/error-codes/parameter-unknown",
"message": "Received unknown parameter: amount_decimal",
"param": "amount_decimal",
"type": "invalid_request_error"
}
我的假设是,此错误是因为文档的这一部分指的是“计划”计费,而不是一次性付款。我想接受一次性发票的卡付款,因此使用了接受卡付款 https://stripe.com/docs/payments/accept-a-payment docs.
所以我的问题是:您是否只以货币的最小单位发送金额(例如10.99 * 100
£10.99),或者是否有其他方法可以将其作为小数传递(即。10.99
)?