【发布时间】: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