【问题标题】:Stripe - How do you send decimal amounts to the API for a Payment?Stripe - 您如何将小数金额发送到 API 以进行付款?
【发布时间】:2020-04-15 14:11:38
【问题描述】:

我正在将电子商务平台从使用 SagePay 迁移到 Stripe。

文档显示使用1099amount 数字和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


    【解决方案1】:

    记录在案的here

    所有 API 请求都希望以货币的最小单位提供金额。例如,要收取 10 美元,请提供 1000 的金额值(即 1000 美分)。对于零十进制货币,仍以整数形式提供金额,但不要乘以 100。例如,要收取 500 日元,请提供金额值 500。

    您永远不会在 Stripe API 的任何地方为 amount 传递小数点。大多数 API 端点不支持 amount_decimal,除非它在 ​​API reference 中明确列出。

    【讨论】:

      【解决方案2】:

      将您的货币转换为我在 php 中所做的美分 $doller=42.20; bcmul($doller, 100);

      【讨论】:

        猜你喜欢
        • 2017-07-28
        • 2018-02-10
        • 2022-10-13
        • 2020-03-20
        • 1970-01-01
        • 2011-12-11
        • 2016-10-24
        • 1970-01-01
        • 2014-08-17
        相关资源
        最近更新 更多