mirror of
https://github.com/rjNemo/go-wiki
synced 2026-06-06 02:36:40 +00:00
87 lines
3.5 KiB
Go
87 lines
3.5 KiB
Go
package stripe
|
|
|
|
import "encoding/json"
|
|
|
|
// InvoiceItemParams is the set of parameters that can be used when creating or updating an invoice item.
|
|
// For more details see https://stripe.com/docs/api#create_invoiceitem and https://stripe.com/docs/api#update_invoiceitem.
|
|
type InvoiceItemParams struct {
|
|
Params `form:"*"`
|
|
Amount *int64 `form:"amount"`
|
|
Currency *string `form:"currency"`
|
|
Customer *string `form:"customer"`
|
|
Description *string `form:"description"`
|
|
Discountable *bool `form:"discountable"`
|
|
Invoice *string `form:"invoice"`
|
|
Period *InvoiceItemPeriodParams `form:"period"`
|
|
Quantity *int64 `form:"quantity"`
|
|
Subscription *string `form:"subscription"`
|
|
TaxRates []*string `form:"tax_rates"`
|
|
UnitAmount *int64 `form:"unit_amount"`
|
|
UnitAmountDecimal *float64 `form:"unit_amount_decimal,high_precision"`
|
|
}
|
|
|
|
// InvoiceItemPeriodParams represents the period associated with that invoice item.
|
|
type InvoiceItemPeriodParams struct {
|
|
End *int64 `form:"end"`
|
|
Start *int64 `form:"start"`
|
|
}
|
|
|
|
// InvoiceItemListParams is the set of parameters that can be used when listing invoice items.
|
|
// For more details see https://stripe.com/docs/api#list_invoiceitems.
|
|
type InvoiceItemListParams struct {
|
|
ListParams `form:"*"`
|
|
Created *int64 `form:"created"`
|
|
CreatedRange *RangeQueryParams `form:"created"`
|
|
Customer *string `form:"customer"`
|
|
Invoice *string `form:"invoice"`
|
|
Pending *bool `form:"pending"`
|
|
}
|
|
|
|
// InvoiceItem is the resource represneting a Stripe invoice item.
|
|
// For more details see https://stripe.com/docs/api#invoiceitems.
|
|
type InvoiceItem struct {
|
|
Amount int64 `json:"amount"`
|
|
Currency Currency `json:"currency"`
|
|
Customer *Customer `json:"customer"`
|
|
Date int64 `json:"date"`
|
|
Deleted bool `json:"deleted"`
|
|
Description string `json:"description"`
|
|
Discountable bool `json:"discountable"`
|
|
ID string `json:"id"`
|
|
Invoice *Invoice `json:"invoice"`
|
|
Livemode bool `json:"livemode"`
|
|
Metadata map[string]string `json:"metadata"`
|
|
Period *Period `json:"period"`
|
|
Plan *Plan `json:"plan"`
|
|
Proration bool `json:"proration"`
|
|
Quantity int64 `json:"quantity"`
|
|
Subscription *Subscription `json:"subscription"`
|
|
TaxRates []*TaxRate `json:"tax_rates"`
|
|
UnitAmount int64 `json:"unit_amount"`
|
|
UnitAmountDecimal float64 `json:"unit_amount_decimal,string"`
|
|
}
|
|
|
|
// InvoiceItemList is a list of invoice items as retrieved from a list endpoint.
|
|
type InvoiceItemList struct {
|
|
ListMeta
|
|
Data []*InvoiceItem `json:"data"`
|
|
}
|
|
|
|
// UnmarshalJSON handles deserialization of an InvoiceItem.
|
|
// This custom unmarshaling is needed because the resulting
|
|
// property may be an id or the full struct if it was expanded.
|
|
func (i *InvoiceItem) UnmarshalJSON(data []byte) error {
|
|
if id, ok := ParseID(data); ok {
|
|
i.ID = id
|
|
return nil
|
|
}
|
|
|
|
type invoiceItem InvoiceItem
|
|
var v invoiceItem
|
|
if err := json.Unmarshal(data, &v); err != nil {
|
|
return err
|
|
}
|
|
|
|
*i = InvoiceItem(v)
|
|
return nil
|
|
}
|