92be1d878f
Add line item with unclaimed Storjscan wallet balance during invoice generation. Change-Id: I018bfa01abfcf7bfdffba0c5a1350a69188f63d5
123 lines
4.0 KiB
Go
123 lines
4.0 KiB
Go
// Copyright (C) 2020 Storj Labs, Inc.
|
|
// See LICENSE for copying information.
|
|
|
|
package stripecoinpayments
|
|
|
|
import (
|
|
"github.com/stripe/stripe-go/v72"
|
|
"github.com/stripe/stripe-go/v72/charge"
|
|
"github.com/stripe/stripe-go/v72/client"
|
|
"github.com/stripe/stripe-go/v72/customerbalancetransaction"
|
|
"github.com/stripe/stripe-go/v72/invoice"
|
|
"github.com/stripe/stripe-go/v72/invoiceitem"
|
|
"github.com/stripe/stripe-go/v72/paymentmethod"
|
|
"github.com/stripe/stripe-go/v72/promotioncode"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
// StripeClient Stripe client interface.
|
|
type StripeClient interface {
|
|
Customers() StripeCustomers
|
|
PaymentMethods() StripePaymentMethods
|
|
Invoices() StripeInvoices
|
|
InvoiceItems() StripeInvoiceItems
|
|
CustomerBalanceTransactions() StripeCustomerBalanceTransactions
|
|
Charges() StripeCharges
|
|
PromoCodes() StripePromoCodes
|
|
}
|
|
|
|
// StripeCustomers Stripe Customers interface.
|
|
type StripeCustomers interface {
|
|
New(params *stripe.CustomerParams) (*stripe.Customer, error)
|
|
Get(id string, params *stripe.CustomerParams) (*stripe.Customer, error)
|
|
Update(id string, params *stripe.CustomerParams) (*stripe.Customer, error)
|
|
}
|
|
|
|
// StripePaymentMethods Stripe PaymentMethods interface.
|
|
type StripePaymentMethods interface {
|
|
List(listParams *stripe.PaymentMethodListParams) *paymentmethod.Iter
|
|
New(params *stripe.PaymentMethodParams) (*stripe.PaymentMethod, error)
|
|
Attach(id string, params *stripe.PaymentMethodAttachParams) (*stripe.PaymentMethod, error)
|
|
Detach(id string, params *stripe.PaymentMethodDetachParams) (*stripe.PaymentMethod, error)
|
|
}
|
|
|
|
// StripeInvoices Stripe Invoices interface.
|
|
type StripeInvoices interface {
|
|
New(params *stripe.InvoiceParams) (*stripe.Invoice, error)
|
|
List(listParams *stripe.InvoiceListParams) *invoice.Iter
|
|
FinalizeInvoice(id string, params *stripe.InvoiceFinalizeParams) (*stripe.Invoice, error)
|
|
}
|
|
|
|
// StripeInvoiceItems Stripe InvoiceItems interface.
|
|
type StripeInvoiceItems interface {
|
|
New(params *stripe.InvoiceItemParams) (*stripe.InvoiceItem, error)
|
|
Update(id string, params *stripe.InvoiceItemParams) (*stripe.InvoiceItem, error)
|
|
List(listParams *stripe.InvoiceItemListParams) *invoiceitem.Iter
|
|
Del(id string, params *stripe.InvoiceItemParams) (*stripe.InvoiceItem, error)
|
|
}
|
|
|
|
// StripeCharges Stripe Charges interface.
|
|
type StripeCharges interface {
|
|
List(listParams *stripe.ChargeListParams) *charge.Iter
|
|
}
|
|
|
|
// StripePromoCodes is the Stripe PromoCodes interface.
|
|
type StripePromoCodes interface {
|
|
List(params *stripe.PromotionCodeListParams) *promotioncode.Iter
|
|
}
|
|
|
|
// StripeCustomerBalanceTransactions Stripe CustomerBalanceTransactions interface.
|
|
type StripeCustomerBalanceTransactions interface {
|
|
New(params *stripe.CustomerBalanceTransactionParams) (*stripe.CustomerBalanceTransaction, error)
|
|
List(listParams *stripe.CustomerBalanceTransactionListParams) *customerbalancetransaction.Iter
|
|
}
|
|
|
|
type stripeClient struct {
|
|
client *client.API
|
|
}
|
|
|
|
func (s *stripeClient) Customers() StripeCustomers {
|
|
return s.client.Customers
|
|
}
|
|
|
|
func (s *stripeClient) PaymentMethods() StripePaymentMethods {
|
|
return s.client.PaymentMethods
|
|
}
|
|
|
|
func (s *stripeClient) Invoices() StripeInvoices {
|
|
return s.client.Invoices
|
|
}
|
|
|
|
func (s *stripeClient) InvoiceItems() StripeInvoiceItems {
|
|
return s.client.InvoiceItems
|
|
}
|
|
|
|
func (s *stripeClient) CustomerBalanceTransactions() StripeCustomerBalanceTransactions {
|
|
return s.client.CustomerBalanceTransactions
|
|
}
|
|
|
|
func (s *stripeClient) Charges() StripeCharges {
|
|
return s.client.Charges
|
|
}
|
|
|
|
func (s *stripeClient) PromoCodes() StripePromoCodes {
|
|
return s.client.PromotionCodes
|
|
}
|
|
|
|
// NewStripeClient creates Stripe client from configuration.
|
|
func NewStripeClient(log *zap.Logger, config Config) StripeClient {
|
|
backendConfig := &stripe.BackendConfig{
|
|
LeveledLogger: log.Sugar(),
|
|
}
|
|
|
|
sClient := client.New(config.StripeSecretKey,
|
|
&stripe.Backends{
|
|
API: stripe.GetBackendWithConfig(stripe.APIBackend, backendConfig),
|
|
Connect: stripe.GetBackendWithConfig(stripe.ConnectBackend, backendConfig),
|
|
Uploads: stripe.GetBackendWithConfig(stripe.UploadsBackend, backendConfig),
|
|
},
|
|
)
|
|
|
|
return &stripeClient{client: sClient}
|
|
}
|