使用Stripe Go库,在列出特定客户的发票时,该发票的应付款额为1000美元,当应为10美元时(在Stripe仪表板中可以看到)。
我假设这是因为Invoice结构中的AmountDue字段是int64(https://github.com/stripe/stripe-go/blob/master/invoice.go#L204),并且它在转换过程中丢失了小数部分,但是有没有办法获得确切的金额?>
这是我查询发票的方式:
params := &stripe.InvoiceListParams{}
params.Filters.AddFilter("limit", "", "100")
params.Filters.AddFilter("customer", "", stripeCustomerId)
i := invoice.List(params)
for i.Next() {
i := i.Invoice()
invoice := BillingModels.Transaction{
Id: i.ID,
Amount: i.AmountDue,
}
invoices = append(invoices, invoice)
}
答案 0 :(得分:2)
AmountDue字段以美分为单位,所有Stripe字段也以美分为单位,因此应将它们存储为整数。这在处理金钱时很常见。永远不要将浮点数用作货币。
https://stripe.com/docs/api/invoices/object#invoice_object-amount_due