Documentation
¶
Index ¶
- type Allocation
- type AppliedDiscount
- type AppliedDiscountMethod
- type CheckoutCreateRequestWithDiscount
- type CheckoutUpdateRequestWithDiscount
- type CheckoutWithDiscount
- type Coupon
- type CouponDuration
- type CouponMetadata
- type DiscountErrorCodes
- type DiscountsRequest
- type DiscountsResponse
- type RejectedDiscount
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Allocation ¶
type Allocation struct {
// Amount allocated to this target in minor (cents) currency units.
Amount int `json:"amount" yaml:"amount" mapstructure:"amount"`
// JSONPath to the allocation target (e.g., '$.line_items[0]',
// '$.totals.shipping').
Path string `json:"path" yaml:"path" mapstructure:"path"`
}
Breakdown of how a discount amount was allocated to a specific target.
func (*Allocation) UnmarshalJSON ¶
func (j *Allocation) UnmarshalJSON(value []byte) error
UnmarshalJSON implements json.Unmarshaler.
type AppliedDiscount ¶
type AppliedDiscount struct {
// Breakdown of where this discount was allocated. Sum of allocation amounts
// equals total amount.
Allocations []Allocation `json:"allocations,omitempty" yaml:"allocations,omitempty" mapstructure:"allocations,omitempty"`
// Total discount amount in minor (cents) currency units.
Amount int `json:"amount" yaml:"amount" mapstructure:"amount"`
// True if applied automatically by merchant rules (no code required).
Automatic bool `json:"automatic,omitempty" yaml:"automatic,omitempty" mapstructure:"automatic,omitempty"`
// The discount code entered by the user. Omitted for automatic discounts.
Code *string `json:"code,omitempty" yaml:"code,omitempty" mapstructure:"code,omitempty"`
// Details about the underlying coupon/promotion.
Coupon Coupon `json:"coupon" yaml:"coupon" mapstructure:"coupon"`
// RFC 3339 timestamp when the discount expires.
End *time.Time `json:"end,omitempty" yaml:"end,omitempty" mapstructure:"end,omitempty"`
// Unique identifier for this applied discount instance.
Id string `json:"id" yaml:"id" mapstructure:"id"`
// Allocation method. 'each' = applied independently per item (allocations
// typically included). 'across' = applied to order total (allocations typically
// omitted).
Method *AppliedDiscountMethod `json:"method,omitempty" yaml:"method,omitempty" mapstructure:"method,omitempty"`
// Stacking order for discount calculation. Lower numbers applied first (1 =
// first).
Priority *int `json:"priority,omitempty" yaml:"priority,omitempty" mapstructure:"priority,omitempty"`
// RFC 3339 timestamp when the discount became active.
Start *time.Time `json:"start,omitempty" yaml:"start,omitempty" mapstructure:"start,omitempty"`
}
A discount that was successfully applied to the checkout session.
func (*AppliedDiscount) UnmarshalJSON ¶
func (j *AppliedDiscount) UnmarshalJSON(value []byte) error
UnmarshalJSON implements json.Unmarshaler.
type AppliedDiscountMethod ¶
type AppliedDiscountMethod string
const AppliedDiscountMethodAcross AppliedDiscountMethod = "across"
const AppliedDiscountMethodEach AppliedDiscountMethod = "each"
func (*AppliedDiscountMethod) UnmarshalJSON ¶
func (j *AppliedDiscountMethod) UnmarshalJSON(value []byte) error
UnmarshalJSON implements json.Unmarshaler.
type CheckoutCreateRequestWithDiscount ¶
type CheckoutCreateRequestWithDiscount interface{}
Checkout session create request extended with discount codes.
type CheckoutUpdateRequestWithDiscount ¶
type CheckoutUpdateRequestWithDiscount interface{}
Checkout session update request extended with discount codes.
type CheckoutWithDiscount ¶
type CheckoutWithDiscount interface{}
Checkout session extended with discount capability.
type Coupon ¶
type Coupon struct {
// Fixed discount amount in minor currency units. Mutually exclusive with
// percent_off.
AmountOff *int `json:"amount_off,omitempty" yaml:"amount_off,omitempty" mapstructure:"amount_off,omitempty"`
// ISO 4217 currency code for amount_off. Required if amount_off is set.
Currency *string `json:"currency,omitempty" yaml:"currency,omitempty" mapstructure:"currency,omitempty"`
// How long the discount applies. 'once' = single use, 'repeating' = multiple
// billing periods, 'forever' = indefinitely.
Duration *CouponDuration `json:"duration,omitempty" yaml:"duration,omitempty" mapstructure:"duration,omitempty"`
// Number of months the coupon applies if duration is 'repeating'.
DurationInMonths *int `json:"duration_in_months,omitempty" yaml:"duration_in_months,omitempty" mapstructure:"duration_in_months,omitempty"`
// Unique identifier for the coupon.
Id string `json:"id" yaml:"id" mapstructure:"id"`
// Maximum number of times this coupon can be redeemed across all customers.
MaxRedemptions *int `json:"max_redemptions,omitempty" yaml:"max_redemptions,omitempty" mapstructure:"max_redemptions,omitempty"`
// Arbitrary key-value metadata attached to the coupon.
Metadata CouponMetadata `json:"metadata,omitempty" yaml:"metadata,omitempty" mapstructure:"metadata,omitempty"`
// Human-readable coupon name (e.g., 'Summer Sale 20% Off').
Name string `json:"name" yaml:"name" mapstructure:"name"`
// Percentage discount (0-100). Mutually exclusive with amount_off.
PercentOff *float64 `json:"percent_off,omitempty" yaml:"percent_off,omitempty" mapstructure:"percent_off,omitempty"`
// Number of times this coupon has been redeemed.
TimesRedeemed *int `json:"times_redeemed,omitempty" yaml:"times_redeemed,omitempty" mapstructure:"times_redeemed,omitempty"`
}
Coupon details describing the discount terms.
func (*Coupon) UnmarshalJSON ¶
UnmarshalJSON implements json.Unmarshaler.
type CouponDuration ¶
type CouponDuration string
const CouponDurationForever CouponDuration = "forever"
const CouponDurationOnce CouponDuration = "once"
const CouponDurationRepeating CouponDuration = "repeating"
func (*CouponDuration) UnmarshalJSON ¶
func (j *CouponDuration) UnmarshalJSON(value []byte) error
UnmarshalJSON implements json.Unmarshaler.
type CouponMetadata ¶
Arbitrary key-value metadata attached to the coupon.
type DiscountErrorCodes ¶
type DiscountErrorCodes string
const DiscountErrorCodesDiscountCodeAlreadyApplied DiscountErrorCodes = "discount_code_already_applied"
const DiscountErrorCodesDiscountCodeCombinationDisallowed DiscountErrorCodes = "discount_code_combination_disallowed"
const DiscountErrorCodesDiscountCodeExpired DiscountErrorCodes = "discount_code_expired"
const DiscountErrorCodesDiscountCodeInvalid DiscountErrorCodes = "discount_code_invalid"
const DiscountErrorCodesDiscountCodeMinimumNotMet DiscountErrorCodes = "discount_code_minimum_not_met"
const DiscountErrorCodesDiscountCodeUsageLimitReached DiscountErrorCodes = "discount_code_usage_limit_reached"
const DiscountErrorCodesDiscountCodeUserIneligible DiscountErrorCodes = "discount_code_user_ineligible"
const DiscountErrorCodesDiscountCodeUserNotLoggedIn DiscountErrorCodes = "discount_code_user_not_logged_in"
func (*DiscountErrorCodes) UnmarshalJSON ¶
func (j *DiscountErrorCodes) UnmarshalJSON(value []byte) error
UnmarshalJSON implements json.Unmarshaler.
type DiscountsRequest ¶
type DiscountsRequest struct {
// Discount codes to apply. Case-insensitive. Replaces previously submitted codes.
// Send empty array to clear.
Codes []string `json:"codes,omitempty" yaml:"codes,omitempty" mapstructure:"codes,omitempty"`
}
Discount codes input for checkout create/update requests.
type DiscountsResponse ¶
type DiscountsResponse struct {
// Discounts successfully applied (code-based and automatic).
Applied []AppliedDiscount `json:"applied,omitempty" yaml:"applied,omitempty" mapstructure:"applied,omitempty"`
// Echo of submitted discount codes.
Codes []string `json:"codes,omitempty" yaml:"codes,omitempty" mapstructure:"codes,omitempty"`
// Discount codes that could not be applied, with reasons.
Rejected []RejectedDiscount `json:"rejected,omitempty" yaml:"rejected,omitempty" mapstructure:"rejected,omitempty"`
}
Discount codes input, applied discounts, and rejected codes in checkout responses.
type RejectedDiscount ¶
type RejectedDiscount struct {
// The discount code that was rejected.
Code string `json:"code" yaml:"code" mapstructure:"code"`
// Human-readable explanation of why the code was rejected.
Message *string `json:"message,omitempty" yaml:"message,omitempty" mapstructure:"message,omitempty"`
// Error code indicating why the discount was rejected.
Reason DiscountErrorCodes `json:"reason" yaml:"reason" mapstructure:"reason"`
}
A discount code that could not be applied, with the reason.
func (*RejectedDiscount) UnmarshalJSON ¶
func (j *RejectedDiscount) UnmarshalJSON(value []byte) error
UnmarshalJSON implements json.Unmarshaler.