【问题标题】:Stripe parameter_invalid_integer条带参数_invalid_integer
【发布时间】:2021-02-05 15:55:34
【问题描述】:

我正在尝试从 Stripe 设置 PaymentIntents API,需要传递给 API 的金额非常混乱。

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

我的前端代码传递给我的后端价格:

const { data: clientSecret } = await axios.post("http://127.0.0.1:8000/paymentIntent/", {
        amount: price * 100
      });

我的后台:

@api_view(['POST'])
def payment(request):
    try:
        amount = request.amount
        paymentIntent = stripe.PaymentIntent.create(
            amount = amount,
            currency = "usd",
            # capture_method='manual',
            # metadata={'integration_check': 'accept_a_payment'},
        ) 

        data = paymentIntent.client_secret

如果我输入金额 = 45(例如随机数),则付款意图有效,一切顺利。如果我从前端发送的请求中将金额作为价格,它会显示以下错误消息:

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

在上述错误中,商品的价格是 43 美元,所以我只输入 43 x 100,对吗?也许金额没有作为整数传递,但对我来说看起来不错。

【问题讨论】:

    标签: reactjs django-rest-framework axios stripe-payments


    【解决方案1】:

    错误是说您传递了{\"amount\":4300}——看起来您不小心传递了某个对象而不是整数值。

    例如:您发送的内容类似于 amount={\"amount\":4300},而不是预期的 amount=4300

    您需要查看amount 是如何被传递并提供给支付意图创建调用的。

    更新(不是修复): 尝试使用不同的变量名:

    requestAmount = request.amount
    paymentIntent = stripe.PaymentIntent.create(
      amount = requestAmount,
      currency = "usd",
    ) 
    

    更新 2:可能需要解析 json 正文:

    data = json.loads(request.body)
    paymentIntent = stripe.PaymentIntent.create(
      amount = data.amount,
      currency = "usd",
    ) 
    

    【讨论】:

    • 如何只解析 {\"amount\":4300} 中的数字?
    • 我不知道为什么它有那个额外的层。您应该记录/打印request.amount 进行诊断,然后提取数值。
    • 其实这可能与python处理变量的方式有关。您可以尝试在付款意图参数中使用不冲突的名称吗?
    • 如果我尝试使用非冲突名称并使用 request.amount 它会抛出 400 Bad Request 并且不会在 Stripe 上显示任何日志。当我通过 request.body 时,它只显示上述 Stripe 日志错误。超级诡异
    • 哇,我刚刚通过 request.body[10:-1] 获得了价格,而且效果很好,哈哈
    猜你喜欢
    • 1970-01-01
    • 2014-09-21
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多