package hyperswitch import ( "context" "veza-backend-api/internal/core/marketplace" ) // Ensure Provider implements marketplace.PaymentProvider var _ marketplace.PaymentProvider = (*Provider)(nil) // Provider adapts the Hyperswitch client to marketplace.PaymentProvider. type Provider struct { client *Client } // NewProvider creates a new Hyperswitch payment provider. func NewProvider(client *Client) *Provider { return &Provider{client: client} } // CreatePayment creates a payment in Hyperswitch. func (p *Provider) CreatePayment(ctx context.Context, amount int64, currency, orderID, returnURL string, metadata map[string]string) (paymentID, clientSecret string, err error) { return p.client.CreatePaymentSimple(ctx, amount, currency, orderID, returnURL, metadata) } // GetPayment retrieves payment status from Hyperswitch. func (p *Provider) GetPayment(ctx context.Context, paymentID string) (string, error) { return p.client.GetPaymentStatus(ctx, paymentID) } // Refund creates a refund in Hyperswitch (v0.403 R2). func (p *Provider) Refund(ctx context.Context, paymentID string, amount *int64, reason string) error { _, err := p.client.CreateRefund(ctx, paymentID, amount, reason) return err }