Documentation ¶
Index ¶
- Constants
- Variables
- type Accounts
- type Balance
- type BalanceTransaction
- type Balances
- type CardInfo
- type Charge
- type Coupon
- type CouponDuration
- type CouponType
- type CouponUsage
- type Coupons
- type Credit
- type CreditCard
- type CreditCards
- type Credits
- type CreditsPage
- type DepositBonus
- type DepositWallets
- type Invoice
- type InvoiceCursor
- type InvoicePage
- type Invoices
- type PackagePlan
- type PaymentStatus
- type ProjectCharge
- type ProjectChargesResponse
- type ProjectUsagePriceModel
- type StorjTokens
- type Transaction
- type TransactionID
- type TransactionInfo
- type TransactionStatus
- type WalletPayment
- type WalletPaymentWithConfirmations
Constants ¶
const ( // CouponOnce indicates that a coupon can only be applied once. CouponOnce CouponDuration = "once" // CouponRepeating indicates that a coupon is applied every billing period for a definite amount of time. CouponRepeating = "repeating" // CouponForever indicates that a coupon is applied every billing period forever. CouponForever = "forever" )
const ( // NoCoupon represents an invalid coupon registration attempt. NoCoupon CouponType = "noCoupon" // FreeTierCoupon represents the default free tier coupon. FreeTierCoupon = "freeTierCoupon" // SignupCoupon represents a valid promo code coupon. SignupCoupon = "signupCoupon" )
const ( // InvoiceStatusDraft indicates the invoice is a draft. InvoiceStatusDraft = "draft" // InvoiceStatusOpen indicates the invoice is open. InvoiceStatusOpen = "open" // InvoiceStatusPaid indicates the invoice is paid. InvoiceStatusPaid = "paid" // InvoiceStatusUncollectible indicates the invoice is uncollectible. InvoiceStatusUncollectible = "uncollectible" // InvoiceStatusVoid indicates the invoice is void. InvoiceStatusVoid = "void" )
const ( // PaymentStatusConfirmed indicates that payment has required number of confirmations. PaymentStatusConfirmed = "confirmed" // PaymentStatusPending indicates that payment has not meet confirmation requirements. PaymentStatusPending = "pending" )
Variables ¶
var ( // ErrInvalidCoupon defines invalid coupon code error. ErrInvalidCoupon = errs.Class("invalid coupon code") // ErrCouponConflict occurs when attempting to replace a protected coupon. ErrCouponConflict = errs.Class("coupon conflict") )
var ErrAccountNotSetup = errs.Class("payment account is not set up")
ErrAccountNotSetup is an error type which indicates that payment account is not created.
Functions ¶
This section is empty.
Types ¶
type Accounts ¶ added in v0.24.0
type Accounts interface { // Setup creates a payment account for the user. // If account is already set up it will return nil. Setup(ctx context.Context, userID uuid.UUID, email string, signupPromoCode string) (CouponType, error) // UpdatePackage updates a customer's package plan information. UpdatePackage(ctx context.Context, userID uuid.UUID, packagePlan *string, timestamp *time.Time) error // GetPackageInfo returns the package plan and time of purchase for a user. GetPackageInfo(ctx context.Context, userID uuid.UUID) (packagePlan *string, purchaseTime *time.Time, err error) // Balances exposes functionality to manage account balances. Balances() Balances // ProjectCharges returns how much money current user will be charged for each project. ProjectCharges(ctx context.Context, userID uuid.UUID, since, before time.Time) (ProjectChargesResponse, error) // GetProjectUsagePriceModel returns the project usage price model for a partner name. GetProjectUsagePriceModel(partner string) ProjectUsagePriceModel // CheckProjectInvoicingStatus returns error if for the given project there are outstanding project records and/or usage // which have not been applied/invoiced yet (meaning sent over to stripe). CheckProjectInvoicingStatus(ctx context.Context, projectID uuid.UUID) error // CheckProjectUsageStatus returns error if for the given project there is some usage for current or previous month. CheckProjectUsageStatus(ctx context.Context, projectID uuid.UUID) error // Charges returns list of all credit card charges related to account. Charges(ctx context.Context, userID uuid.UUID) ([]Charge, error) // CreditCards exposes all needed functionality to manage account credit cards. CreditCards() CreditCards // StorjTokens exposes all storj token related functionality. StorjTokens() StorjTokens // Invoices exposes all needed functionality to manage account invoices. Invoices() Invoices // Coupons exposes all needed functionality to manage coupons. Coupons() Coupons }
Accounts exposes all needed functionality to manage payment accounts.
architecture: Service
type Balance ¶ added in v1.5.2
type Balance struct { FreeCredits int64 `json:"freeCredits"` Coins decimal.Decimal `json:"coins"` // STORJ token balance from storjscan. Credits decimal.Decimal `json:"credits"` }
Balance is an entity that holds free credits and coins balance of user. Earned by applying of promotional coupon and coins depositing, respectively.
type BalanceTransaction ¶ added in v1.76.2
BalanceTransaction represents a single transaction affecting a customer balance.
type Balances ¶ added in v1.76.2
type Balances interface { // ApplyCredit applies a credit of `amount` to the user's stripe balance with a description of `desc`. ApplyCredit(ctx context.Context, userID uuid.UUID, amount int64, desc string) (*Balance, error) // Get returns the customer balance. Get(ctx context.Context, userID uuid.UUID) (Balance, error) // ListTransactions returns a list of transactions on the customer's balance. ListTransactions(ctx context.Context, userID uuid.UUID) ([]BalanceTransaction, error) }
Balances exposes needed functionality for managing customer balances.
type CardInfo ¶ added in v0.29.0
type CardInfo struct { ID string `json:"id"` Brand string `json:"brand"` LastFour string `json:"lastFour"` }
CardInfo holds information about credit card used for charge.
type Charge ¶ added in v0.29.0
type Charge struct { ID string `json:"id"` Amount int64 `json:"amount"` CardInfo CardInfo `json:"card"` CreatedAt time.Time `json:"createdAt"` }
Charge contains charge details.
type Coupon ¶ added in v0.27.0
type Coupon struct { ID string `json:"id"` PromoCode string `json:"promoCode"` Name string `json:"name"` AmountOff int64 `json:"amountOff"` PercentOff float64 `json:"percentOff"` AddedAt time.Time `json:"addedAt"` ExpiresAt time.Time `json:"expiresAt"` Duration CouponDuration `json:"duration"` }
Coupon describes a discount to the payment account of a user.
type CouponDuration ¶ added in v1.37.1
type CouponDuration string
CouponDuration represents how many billing periods a coupon is applied.
type CouponType ¶ added in v0.30.0
type CouponType string
CouponType is an enum representing the outcome a coupon validation check.
type CouponUsage ¶ added in v1.41.1
CouponUsage describes the usage of a coupon on an invoice.
type Coupons ¶ added in v0.31.4
type Coupons interface { // GetByUserID returns the coupon applied to the specified user. GetByUserID(ctx context.Context, userID uuid.UUID) (*Coupon, error) // ApplyFreeTierCoupon applies the free tier coupon to the specified user. ApplyFreeTierCoupon(ctx context.Context, userID uuid.UUID) (*Coupon, error) // ApplyCoupon applies coupon to user based on coupon ID. ApplyCoupon(ctx context.Context, userID uuid.UUID, couponID string) (*Coupon, error) // ApplyCouponCode attempts to apply a coupon code to the user. ApplyCouponCode(ctx context.Context, userID uuid.UUID, couponCode string) (*Coupon, error) }
Coupons exposes all needed functionality to manage coupons.
architecture: Service
type Credit ¶ added in v0.33.2
type Credit struct { UserID uuid.UUID `json:"userId"` Amount int64 `json:"credit"` TransactionID coinpayments.TransactionID `json:"transactionId"` Created time.Time `json:"created"` }
Credit is an entity that holds bonus balance of user, earned by depositing with storj coins.
type CreditCard ¶ added in v0.24.0
type CreditCard struct { ID string `json:"id"` ExpMonth int `json:"expMonth"` ExpYear int `json:"expYear"` Brand string `json:"brand"` Last4 string `json:"last4"` IsDefault bool `json:"isDefault"` }
CreditCard holds all public information about credit card.
type CreditCards ¶ added in v0.24.0
type CreditCards interface { // List returns a list of credit cards for a given payment account. List(ctx context.Context, userID uuid.UUID) ([]CreditCard, error) // Add is used to save new credit card and attach it to payment account. Add(ctx context.Context, userID uuid.UUID, cardToken string) (CreditCard, error) // AddByPaymentMethodID is used to save new credit card, attach it to payment account and make it default // using the payment method id instead of the token. In this case, the payment method should already be // created by the frontend using stripe elements for example. AddByPaymentMethodID(ctx context.Context, userID uuid.UUID, pmID string) (CreditCard, error) // Remove is used to detach a credit card from payment account. Remove(ctx context.Context, userID uuid.UUID, cardID string) error // RemoveAll is used to detach all credit cards from payment account. // It should only be used in case of a user deletion. RemoveAll(ctx context.Context, userID uuid.UUID) error // MakeDefault makes a credit card default payment method. // this credit card should be attached to account before make it default. MakeDefault(ctx context.Context, userID uuid.UUID, cardID string) error }
CreditCards exposes all needed functionality to manage account credit cards.
architecture: Service
type Credits ¶ added in v0.33.2
type Credits interface { // Create attaches a credit for payment account. Create(ctx context.Context, credit Credit) (err error) // ListByUserID return list of all credits of specified payment account. ListByUserID(ctx context.Context, userID uuid.UUID) ([]Credit, error) }
Credits exposes all needed functionality to manage credits.
architecture: Service
type CreditsPage ¶ added in v0.33.2
CreditsPage holds set of credits and indicates if there are more credits to fetch.
type DepositBonus ¶ added in v1.6.1
type DepositBonus struct { TransactionID TransactionID AmountCents int64 Percentage int64 CreatedAt time.Time }
DepositBonus defines a bonus received for depositing tokens.
type DepositWallets ¶ added in v1.57.1
type DepositWallets interface { // Claim gets a new crypto wallet and associates it with a user. Claim(ctx context.Context, userID uuid.UUID) (blockchain.Address, error) // Get returns the crypto wallet address associated with the given user. Get(ctx context.Context, userID uuid.UUID) (blockchain.Address, error) // Payments returns payments for a particular wallet. Payments(ctx context.Context, wallet blockchain.Address, limit int, offset int64) ([]WalletPayment, error) // PaymentsWithConfirmations returns payments with confirmations count for a particular wallet. PaymentsWithConfirmations(ctx context.Context, wallet blockchain.Address) ([]WalletPaymentWithConfirmations, error) }
DepositWallets exposes all needed functionality to manage token deposit wallets.
architecture: Service
type Invoice ¶
type Invoice struct { ID string `json:"id"` CustomerID string `json:"-"` Description string `json:"description"` Amount int64 `json:"amount"` Status string `json:"status"` Link string `json:"link"` Start time.Time `json:"start"` End time.Time `json:"end"` }
Invoice holds all public information about invoice.
type InvoiceCursor ¶ added in v1.87.1
type InvoiceCursor struct { Limit int // StartingAfter is the last invoice ID of the previous page. // The next page will start after this ID. StartingAfter string // EndingBefore is the id before which a page should end. EndingBefore string }
InvoiceCursor holds info for invoices cursor pagination.
type InvoicePage ¶ added in v1.87.1
type InvoicePage struct { Invoices []Invoice // Next indicates whether there are more events to retrieve. Next bool // Previous indicates whether there are previous items. Previous bool }
InvoicePage returns paginated invoices.
type Invoices ¶ added in v0.25.0
type Invoices interface { // Create creates an invoice with price and description. Create(ctx context.Context, userID uuid.UUID, price int64, desc string) (*Invoice, error) // Get returns an invoice by invoiceID. Get(ctx context.Context, invoiceID string) (*Invoice, error) // Pay pays an invoice. Pay(ctx context.Context, invoiceID, paymentMethodID string) (*Invoice, error) // List returns a list of invoices for a given payment account. List(ctx context.Context, userID uuid.UUID) ([]Invoice, error) // ListPaged returns a paged list of invoices. ListPaged(ctx context.Context, userID uuid.UUID, cursor InvoiceCursor) (*InvoicePage, error) // ListFailed returns a list of failed invoices. ListFailed(ctx context.Context, userID *uuid.UUID) ([]Invoice, error) // ListWithDiscounts returns a list of invoices and coupon usages for a given payment account. ListWithDiscounts(ctx context.Context, userID uuid.UUID) ([]Invoice, []CouponUsage, error) // CheckPendingItems returns if pending invoice items for a given payment account exist. CheckPendingItems(ctx context.Context, userID uuid.UUID) (existingItems bool, err error) // AttemptPayOverdueInvoices attempts to pay a user's open, overdue invoices. AttemptPayOverdueInvoices(ctx context.Context, userID uuid.UUID) (err error) // AttemptPayOverdueInvoicesWithTokens attempts to pay a user's open, overdue invoices with token only. AttemptPayOverdueInvoicesWithTokens(ctx context.Context, userID uuid.UUID) (err error) // Delete a draft invoice. Delete(ctx context.Context, id string) (inv *Invoice, err error) }
Invoices exposes all needed functionality to manage account invoices.
architecture: Service
type PackagePlan ¶ added in v1.73.4
PackagePlan is an amount to charge a user one time in exchange for credit of greater value. Price and Credit are in cents USD.
type PaymentStatus ¶ added in v1.60.1
type PaymentStatus string
PaymentStatus indicates payment status.
type ProjectCharge ¶ added in v0.26.0
type ProjectCharge struct { accounting.ProjectUsage // StorageMBMonthCents is how many cents we should pay for storing MB*months. StorageMBMonthCents int64 `json:"storagePrice"` // EgressMBCents is how many cents we should pay for megabytes of egress. EgressMBCents int64 `json:"egressPrice"` // SegmentMonthCents is how many cents we should pay for objects count. SegmentMonthCents int64 `json:"segmentPrice"` }
ProjectCharge contains project usage and how much it will cost at the end of the month.
type ProjectChargesResponse ¶ added in v1.77.2
type ProjectChargesResponse map[uuid.UUID]map[string]ProjectCharge
ProjectChargesResponse represents a collection of project usage charges grouped by project ID and partner name. It is implemented as a map of project public IDs to a nested map of partner names to ProjectCharge structs.
The values of the inner map are ProjectCharge structs which contain information about the charges associated with a particular project-partner combination.
type ProjectUsagePriceModel ¶ added in v1.71.1
type ProjectUsagePriceModel struct { StorageMBMonthCents decimal.Decimal `json:"storageMBMonthCents"` EgressMBCents decimal.Decimal `json:"egressMBCents"` SegmentMonthCents decimal.Decimal `json:"segmentMonthCents"` EgressDiscountRatio float64 `json:"egressDiscountRatio"` }
ProjectUsagePriceModel represents price model for project usage.
type StorjTokens ¶ added in v0.24.0
type StorjTokens interface { // ListTransactionInfos returns all transactions associated with user. ListTransactionInfos(ctx context.Context, userID uuid.UUID) ([]TransactionInfo, error) // ListDepositBonuses returns all deposit bonuses associated with user. ListDepositBonuses(ctx context.Context, userID uuid.UUID) ([]DepositBonus, error) }
StorjTokens defines all payments STORJ token related functionality.
architecture: Service
type Transaction ¶ added in v0.24.0
type Transaction struct { ID TransactionID Amount currency.Amount Rate decimal.Decimal Address string Status TransactionStatus Timeout time.Duration Link string CreatedAt time.Time }
Transaction defines deposit transaction which accepts user funds on a specific wallet address.
type TransactionID ¶ added in v0.24.0
type TransactionID []byte
TransactionID is a transaction ID type.
func (TransactionID) String ¶ added in v0.26.0
func (id TransactionID) String() string
String returns string representation of transaction id.
type TransactionInfo ¶ added in v0.26.0
type TransactionInfo struct { ID TransactionID Amount currency.Amount Received currency.Amount AmountCents int64 ReceivedCents int64 Address string Status TransactionStatus Link string ExpiresAt time.Time CreatedAt time.Time }
TransactionInfo holds transaction data with additional information such as links and expiration time.
type TransactionStatus ¶ added in v0.24.0
type TransactionStatus string
TransactionStatus defines allowed statuses for deposit transactions.
const ( // TransactionStatusPaid is a transaction which successfully received required funds. TransactionStatusPaid TransactionStatus = "paid" // TransactionStatusPending is a transaction which accepts funds. TransactionStatusPending TransactionStatus = "pending" // TransactionStatusCancelled is a transaction that is cancelled and no longer accepting new funds. TransactionStatusCancelled TransactionStatus = "cancelled" )
func (TransactionStatus) String ¶ added in v0.26.0
func (status TransactionStatus) String() string
String returns string representation of transaction status.
type WalletPayment ¶ added in v1.60.1
type WalletPayment struct { From blockchain.Address `json:"from"` To blockchain.Address `json:"to"` TokenValue currency.Amount `json:"tokenValue"` USDValue currency.Amount `json:"usdValue"` Status PaymentStatus `json:"status"` BlockHash blockchain.Hash `json:"blockHash"` BlockNumber int64 `json:"blockNumber"` Transaction blockchain.Hash `json:"transaction"` LogIndex int `json:"logIndex"` Timestamp time.Time `json:"timestamp"` }
WalletPayment holds storj token payment data.
type WalletPaymentWithConfirmations ¶ added in v1.84.1
type WalletPaymentWithConfirmations struct { From string `json:"from"` To string `json:"to"` TokenValue decimal.Decimal `json:"tokenValue"` USDValue decimal.Decimal `json:"usdValue"` Status PaymentStatus `json:"status"` BlockHash string `json:"blockHash"` BlockNumber int64 `json:"blockNumber"` Transaction string `json:"transaction"` LogIndex int `json:"logIndex"` Timestamp time.Time `json:"timestamp"` Confirmations int64 `json:"confirmations"` BonusTokens decimal.Decimal `json:"bonusTokens"` }
WalletPaymentWithConfirmations holds storj token payment data with confirmations count.