首页 > 解决方案 > Django Python:将价格转换为条纹金额

问题描述

我正在使用 Stripe,他们要求以美分/便士为单位的值,而不是四舍五入到小数点后两位。我正在使用下面的,到目前为止效果很好,我只是担心强制转换为 str() 以及这是否会导致任何意外问题?

它可以通过条带,并保存在我的 DecimalField 中也可以。

stripeAmount = str(int(round(plan.price, 2) * 100))

标签: pythondjangostripe-payments

解决方案


由于创建一个 PaymentIntent 例如 [1] 接收一个整数,因此不需要将其转换为字符串。我鼓励您像在 Stripe 中那样存储您的价格,即作为代表最小货币单位的整个单位整数。例如,200 美元表示为 20000 美分。

将事物存储为浮点数和小数然后对其进行四舍五入通常会导致舍入错误。

[1] https://stripe.com/docs/api/payment_intents/create?lang=python


推荐阅读