【发布时间】:2020-04-15 14:11:38
【问题描述】:
我正在将电子商务平台从使用 SagePay 迁移到 Stripe。
文档显示使用1099 的amount 数字和gbp (https://stripe.com/docs/payments/accept-a-payment#web-create-payment-intent) 的货币。
据我所知,这意味着 10.99 英镑(不是 1099 英镑)。 但这在他们的文档中非常不清楚 - 我假设是这种情况。
如果我尝试通过他们的 API 发送 amount => 10.99,我会在响应中收到一条错误消息:
"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),然后发送@ 987654331@?
文档实际上并没有说明这一点。如果您在他们的文档中阅读了 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"
}
我的假设是,此错误是因为文档的这一部分是指“计划”的计费,而不是一次性付款。我想接受一次性发票的卡付款,因此使用了Accept a Card Payment 文档。
所以我的问题是:您只是以货币的最小单位发送金额(例如 10.99 * 100 为 10.99 英镑),还是有其他方法可以将其作为小数传递(即 10.99 )?
【问题讨论】:
标签: php stripe-payments e-commerce