Help us shape the future of Go! Take the 2026 Go Developer Survey

payments

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 25, 2026 License: Apache-2.0 Imports: 4 Imported by: 0

Documentation

Overview

Package payments defines the payment provider interface the credits module uses: a hosted checkout for a server-priced amount, and verified webhook events.

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrInvalid means a webhook failed signature verification or is malformed.
	ErrInvalid = errors.New("payments: invalid webhook")
	// ErrIgnored means a valid webhook is not about a payment this app takes, such as
	// another product's order or an event type the app does not use.
	ErrIgnored = errors.New("payments: ignored webhook")
)

Functions

This section is empty.

Types

type Checkout

type Checkout struct {
	// Reference identifies the purchase in the app; webhook events carry it back.
	Reference string
	// AmountCents is what the buyer pays, in EUR cents.
	AmountCents int64
	// Email prefills the buyer's address. It may be empty.
	Email string
	// SuccessURL is where the provider sends the buyer after paying.
	SuccessURL string
}

Checkout is a payment to collect. The server sets the amount; the browser never chooses it.

type Event

type Event struct {
	// ID is the provider's event ID.
	ID   string
	Kind EventKind
	// Reference is the Checkout.Reference of the payment, when the event carries it.
	Reference string
	// CheckoutID and OrderID identify the payment at the provider.
	CheckoutID string
	OrderID    string
	// AmountCents is the checkout's price for a Paid event, and the reversed amount
	// for a refund or dispute.
	AmountCents int64
	// PaidCents is what the buyer actually paid, which taxes or discounts can change.
	PaidCents int64
	// Currency is the ISO code, such as "EUR".
	Currency string
	// CreatedAt is when the provider created the event, if it says.
	CreatedAt time.Time
	// Review is set when the event is about one of the app's payments but cannot be
	// applied as it stands, such as a refund that has not succeeded. It names why.
	Review string
}

Event is a verified webhook event about one of the app's payments.

type EventKind

type EventKind int

EventKind is what a webhook event reports.

const (
	Paid EventKind = iota + 1
	// Refunded means the merchant refunded a payment.
	Refunded
	// Disputed means the buyer's bank disputed a payment.
	Disputed
)

type Provider

type Provider interface {
	// Name identifies the provider in stored payments, such as "creem".
	Name() string
	// CheckoutOrigin is the origin of hosted checkout pages, which pages that start a
	// checkout must allow as a form target.
	CheckoutOrigin() string
	// CreateCheckout creates a hosted checkout for c.
	CreateCheckout(ctx context.Context, c Checkout) (Session, error)
	// ParseWebhook verifies a webhook and decodes it. It returns ErrInvalid for a bad
	// signature or body, and ErrIgnored for events the app does not act on.
	ParseWebhook(header http.Header, body []byte) (Event, error)
}

Provider is a payment provider such as Creem.

type Session

type Session struct {
	ID  string
	URL string
}

Session is a created checkout.

Directories

Path Synopsis
Package creem is the Creem payment provider adapter.
Package creem is the Creem payment provider adapter.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL