如何使用Go API获取确切的金额而不是条纹发票的整数金额?

时间:2019-07-01 00:05:11

标签: go stripe-payments

使用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)
  }

1 个答案:

答案 0 :(得分:2)

AmountDue字段以美分为单位,所有Stripe字段也以美分为单位,因此应将它们存储为整数。这在处理金钱时很常见。永远不要将浮点数用作货币。

https://stripe.com/docs/api/invoices/object#invoice_object-amount_due