40 lines
1.1 KiB
Go
40 lines
1.1 KiB
Go
package payment_provider
|
||
|
||
import (
|
||
"context"
|
||
"gitea.pena/PenaSide/treasurer/internal/errors"
|
||
"gitea.pena/PenaSide/treasurer/internal/models"
|
||
"github.com/gofiber/fiber/v2"
|
||
)
|
||
|
||
type PaymentProvider interface {
|
||
GetName() string
|
||
Webhooker
|
||
Invocer
|
||
}
|
||
|
||
type Webhooker interface {
|
||
RegisterWebhookHandlers(router fiber.Router)
|
||
}
|
||
|
||
type Invocer interface {
|
||
GetSupportedPaymentMethods() []models.PaymentType
|
||
CreateInvoice(ctx context.Context, request *PaymentRequest) (*PaymentResponse, errors.Error)
|
||
}
|
||
|
||
// надо разобраться с дженериками что вообзе за ЬДЬДВЬДыв
|
||
type PaymentRequest struct {
|
||
UserID string `json:"userId"`
|
||
ClientIP string `json:"clientIp"`
|
||
PaymentMethod models.PaymentType `json:"paymentMethod"`
|
||
Amount int64 `json:"amount"`
|
||
Currency string `json:"currency"`
|
||
ReturnURL string `json:"returnUrl"`
|
||
CallbackHostGRPC []string `json:"callbackHostGrpc,omitempty"`
|
||
}
|
||
|
||
type PaymentResponse struct {
|
||
RedirectURL string
|
||
Payment *models.Payment
|
||
}
|