package model import ( "time" "github.com/tech/sendico/pkg/model" paymenttypes "github.com/tech/sendico/pkg/payments/types" "go.mongodb.org/mongo-driver/v2/bson" ) type PaymentStatus string const ( PaymentStatusCreated PaymentStatus = "created" // created PaymentStatusProcessing PaymentStatus = "processing" // processing PaymentStatusWaiting PaymentStatus = "waiting" // waiting external action PaymentStatusSuccess PaymentStatus = "success" // final success PaymentStatusFailed PaymentStatus = "failed" // final failure PaymentStatusCancelled PaymentStatus = "cancelled" // cancelled final ) type PaymentRecord struct { ID bson.ObjectID `bson:"_id,omitempty" json:"id"` OperationRef string `bson:"operationRef,omitempty" json:"operation_ref,omitempty"` IdempotencyKey string `bson:"idempotencyKey,omitempty" json:"idempotency_key,omitempty"` PaymentIntentID string `bson:"paymentIntentId,omitempty" json:"payment_intent_id,omitempty"` QuoteRef string `bson:"quoteRef,omitempty" json:"quote_ref,omitempty"` IntentRef string `bson:"intentRef,omitempty" json:"intent_ref,omitempty"` PaymentRef string `bson:"paymentRef,omitempty" json:"payment_ref,omitempty"` OutgoingLeg string `bson:"outgoingLeg,omitempty" json:"outgoing_leg,omitempty"` TargetChatID string `bson:"targetChatId,omitempty" json:"target_chat_id,omitempty"` RequestedMoney *paymenttypes.Money `bson:"requestedMoney,omitempty" json:"requested_money,omitempty"` ExecutedMoney *paymenttypes.Money `bson:"executedMoney,omitempty" json:"executed_money,omitempty"` Status PaymentStatus `bson:"status,omitempty" json:"status,omitempty"` FailureReason string `bson:"failureReason,omitempty" json:"Failure_reason,omitempty"` CreatedAt time.Time `bson:"createdAt,omitempty" json:"created_at,omitempty"` UpdatedAt time.Time `bson:"updatedAt,omitempty" json:"updated_at,omitempty"` ExecutedAt time.Time `bson:"executedAt,omitempty" json:"executed_at,omitempty"` ExpiresAt time.Time `bson:"expiresAt,omitempty" json:"expires_at,omitempty"` ExpiredAt time.Time `bson:"expiredAt,omitempty" json:"expired_at,omitempty"` } type TelegramConfirmation struct { ID bson.ObjectID `bson:"_id,omitempty" json:"id"` RequestID string `bson:"requestId,omitempty" json:"request_id,omitempty"` PaymentIntentID string `bson:"paymentIntentId,omitempty" json:"payment_intent_id,omitempty"` QuoteRef string `bson:"quoteRef,omitempty" json:"quote_ref,omitempty"` RawReply *model.TelegramMessage `bson:"rawReply,omitempty" json:"raw_reply,omitempty"` ReceivedAt time.Time `bson:"receivedAt,omitempty" json:"received_at,omitempty"` }