Documentation
¶
Index ¶
- type Address
- type Customer
- type ManagerConfig
- type Payment
- type PaymentManager
- func (pm *PaymentManager) CancelPayment(ctx context.Context, providerName, paymentID string) error
- func (pm *PaymentManager) CreatePayment(ctx context.Context, providerName string, request *PaymentRequest) (*PaymentResponse, error)
- func (pm *PaymentManager) GetDefaultProvider() (PaymentProvider, error)
- func (pm *PaymentManager) GetPayment(ctx context.Context, providerName, paymentID string) (*Payment, error)
- func (pm *PaymentManager) GetProvider(name string) (PaymentProvider, error)
- func (pm *PaymentManager) GetProviderCapabilities(providerName string) ([]PaymentMethod, []string, error)
- func (pm *PaymentManager) GetSupportedProviders() []string
- func (pm *PaymentManager) ProcessWebhook(ctx context.Context, providerName string, payload []byte, signature string) error
- func (pm *PaymentManager) RefundPayment(ctx context.Context, providerName string, request *RefundRequest) (*RefundResponse, error)
- func (pm *PaymentManager) RegisterProvider(provider PaymentProvider) error
- type PaymentMethod
- type PaymentProvider
- type PaymentRequest
- type PaymentResponse
- type PaymentStatus
- type RefundRequest
- type RefundResponse
- type RefundStatus
- type WebhookEvent
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Address ¶
type Address struct {
Line1 string `json:"line1"`
Line2 string `json:"line2,omitempty"`
City string `json:"city"`
State string `json:"state,omitempty"`
PostalCode string `json:"postal_code"`
Country string `json:"country"`
}
Address represents a customer address
type Customer ¶
type Customer struct {
ID string `json:"id,omitempty"`
Email string `json:"email"`
Name string `json:"name,omitempty"`
Phone string `json:"phone,omitempty"`
Address *Address `json:"address,omitempty"`
Metadata map[string]interface{} `json:"metadata,omitempty"`
}
Customer represents a customer
type ManagerConfig ¶
type ManagerConfig struct {
DefaultProvider string `json:"default_provider"`
RetryAttempts int `json:"retry_attempts"`
RetryDelay time.Duration `json:"retry_delay"`
Timeout time.Duration `json:"timeout"`
WebhookSecret string `json:"webhook_secret"`
Metadata map[string]string `json:"metadata"`
}
ManagerConfig holds payment manager configuration
func DefaultManagerConfig ¶
func DefaultManagerConfig() *ManagerConfig
DefaultManagerConfig returns default payment manager configuration
type Payment ¶
type Payment struct {
ID string `json:"id"`
Amount int64 `json:"amount"`
Currency string `json:"currency"`
Status PaymentStatus `json:"status"`
Description string `json:"description"`
Customer *Customer `json:"customer"`
PaymentMethod PaymentMethod `json:"payment_method"`
Metadata map[string]interface{} `json:"metadata"`
ProviderData map[string]interface{} `json:"provider_data"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
PaidAt *time.Time `json:"paid_at,omitempty"`
ExpiresAt *time.Time `json:"expires_at,omitempty"`
}
Payment represents a payment
type PaymentManager ¶
type PaymentManager struct {
// contains filtered or unexported fields
}
PaymentManager manages multiple payment gateways
func NewPaymentManager ¶
func NewPaymentManager(config *ManagerConfig, logger *logrus.Logger) *PaymentManager
NewPaymentManager creates a new payment manager
func (*PaymentManager) CancelPayment ¶
func (pm *PaymentManager) CancelPayment(ctx context.Context, providerName, paymentID string) error
CancelPayment cancels a payment using the specified provider
func (*PaymentManager) CreatePayment ¶
func (pm *PaymentManager) CreatePayment(ctx context.Context, providerName string, request *PaymentRequest) (*PaymentResponse, error)
CreatePayment creates a payment using the specified provider
func (*PaymentManager) GetDefaultProvider ¶
func (pm *PaymentManager) GetDefaultProvider() (PaymentProvider, error)
GetDefaultProvider returns the default payment provider
func (*PaymentManager) GetPayment ¶
func (pm *PaymentManager) GetPayment(ctx context.Context, providerName, paymentID string) (*Payment, error)
GetPayment retrieves a payment from the specified provider
func (*PaymentManager) GetProvider ¶
func (pm *PaymentManager) GetProvider(name string) (PaymentProvider, error)
GetProvider returns a payment provider by name
func (*PaymentManager) GetProviderCapabilities ¶
func (pm *PaymentManager) GetProviderCapabilities(providerName string) ([]PaymentMethod, []string, error)
GetProviderCapabilities returns capabilities of a provider
func (*PaymentManager) GetSupportedProviders ¶
func (pm *PaymentManager) GetSupportedProviders() []string
GetSupportedProviders returns a list of registered providers
func (*PaymentManager) ProcessWebhook ¶
func (pm *PaymentManager) ProcessWebhook(ctx context.Context, providerName string, payload []byte, signature string) error
ProcessWebhook processes a webhook event
func (*PaymentManager) RefundPayment ¶
func (pm *PaymentManager) RefundPayment(ctx context.Context, providerName string, request *RefundRequest) (*RefundResponse, error)
RefundPayment processes a refund using the specified provider
func (*PaymentManager) RegisterProvider ¶
func (pm *PaymentManager) RegisterProvider(provider PaymentProvider) error
RegisterProvider registers a payment provider
type PaymentMethod ¶
type PaymentMethod string
PaymentMethod represents a payment method
const ( PaymentMethodCard PaymentMethod = "card" PaymentMethodBankTransfer PaymentMethod = "bank_transfer" PaymentMethodEWallet PaymentMethod = "ewallet" PaymentMethodQRCode PaymentMethod = "qr_code" PaymentMethodVirtualAccount PaymentMethod = "virtual_account" PaymentMethodRetail PaymentMethod = "retail" )
type PaymentProvider ¶
type PaymentProvider interface {
// Provider information
GetName() string
GetSupportedCurrencies() []string
GetSupportedMethods() []PaymentMethod
// Payment operations
CreatePayment(ctx context.Context, request *PaymentRequest) (*PaymentResponse, error)
GetPayment(ctx context.Context, paymentID string) (*Payment, error)
CancelPayment(ctx context.Context, paymentID string) error
RefundPayment(ctx context.Context, request *RefundRequest) (*RefundResponse, error)
// Webhook handling
ValidateWebhook(ctx context.Context, payload []byte, signature string) (*WebhookEvent, error)
ProcessWebhook(ctx context.Context, event *WebhookEvent) error
// Configuration
Configure(config map[string]interface{}) error
IsConfigured() bool
}
PaymentProvider interface for payment gateways
type PaymentRequest ¶
type PaymentRequest struct {
ID string `json:"id"`
Amount int64 `json:"amount"` // Amount in cents
Currency string `json:"currency"`
Description string `json:"description"`
Customer *Customer `json:"customer"`
PaymentMethod PaymentMethod `json:"payment_method"`
Metadata map[string]interface{} `json:"metadata"`
ReturnURL string `json:"return_url,omitempty"`
CancelURL string `json:"cancel_url,omitempty"`
WebhookURL string `json:"webhook_url,omitempty"`
ExpiresAt *time.Time `json:"expires_at,omitempty"`
}
PaymentRequest represents a payment request
type PaymentResponse ¶
type PaymentResponse struct {
ID string `json:"id"`
Status PaymentStatus `json:"status"`
PaymentURL string `json:"payment_url,omitempty"`
ClientSecret string `json:"client_secret,omitempty"`
ProviderData map[string]interface{} `json:"provider_data"`
CreatedAt time.Time `json:"created_at"`
ExpiresAt *time.Time `json:"expires_at,omitempty"`
}
PaymentResponse represents a payment response
type PaymentStatus ¶
type PaymentStatus string
PaymentStatus represents payment status
const ( PaymentStatusPending PaymentStatus = "pending" PaymentStatusProcessing PaymentStatus = "processing" PaymentStatusSucceeded PaymentStatus = "succeeded" PaymentStatusFailed PaymentStatus = "failed" PaymentStatusCanceled PaymentStatus = "canceled" PaymentStatusExpired PaymentStatus = "expired" )
type RefundRequest ¶
type RefundRequest struct {
PaymentID string `json:"payment_id"`
Amount *int64 `json:"amount,omitempty"` // If nil, refund full amount
Reason string `json:"reason,omitempty"`
Metadata map[string]interface{} `json:"metadata"`
}
RefundRequest represents a refund request
type RefundResponse ¶
type RefundResponse struct {
ID string `json:"id"`
PaymentID string `json:"payment_id"`
Amount int64 `json:"amount"`
Status RefundStatus `json:"status"`
Reason string `json:"reason,omitempty"`
ProviderData map[string]interface{} `json:"provider_data"`
CreatedAt time.Time `json:"created_at"`
}
RefundResponse represents a refund response
type RefundStatus ¶
type RefundStatus string
RefundStatus represents refund status
const ( RefundStatusPending RefundStatus = "pending" RefundStatusSucceeded RefundStatus = "succeeded" RefundStatusFailed RefundStatus = "failed" RefundStatusCanceled RefundStatus = "canceled" )