engine

package
v1.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 17, 2026 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsValidMode

func IsValidMode(mode string) bool

Types

type Engine

type Engine struct{}

Engine executes scenario steps.

func New

func New() *Engine

func (*Engine) Execute

func (e *Engine) Execute(sc *store.Scenario, stepIndex int) (*Result, error)

Execute returns the Result for step at stepIndex. If stepIndex >= len(steps), the last step is used.

type FailureMode

type FailureMode string
const (
	// Generic
	ModeSuccess FailureMode = "success"

	// Bank-side
	ModeBankDeclineHard FailureMode = "bank_decline_hard"
	ModeBankDeclineSoft FailureMode = "bank_decline_soft"
	ModeBankServerDown  FailureMode = "bank_server_down"
	ModeBankTimeout     FailureMode = "bank_timeout"
	ModeBankInvalidCVV  FailureMode = "bank_invalid_cvv"
	ModeBankDoNotHonour FailureMode = "bank_do_not_honour"

	// PG server-side
	ModePGServerError FailureMode = "pg_server_error"
	ModePGTimeout     FailureMode = "pg_timeout"
	ModePGRateLimited FailureMode = "pg_rate_limited"
	ModePGMaintenance FailureMode = "pg_maintenance"
	ModeNetworkError  FailureMode = "network_error"

	// Webhook anomalies
	ModeWebhookMissing    FailureMode = "webhook_missing"
	ModeWebhookDelayed    FailureMode = "webhook_delayed"
	ModeWebhookDuplicate  FailureMode = "webhook_duplicate"
	ModeWebhookOutOfOrder FailureMode = "webhook_out_of_order"
	ModeWebhookMalformed  FailureMode = "webhook_malformed"

	// Redirect / 3DS
	ModeRedirectSuccess   FailureMode = "redirect_success"
	ModeRedirectAbandoned FailureMode = "redirect_abandoned"
	ModeRedirectTimeout   FailureMode = "redirect_timeout"
	ModeRedirectFailed    FailureMode = "redirect_failed"

	// Charge anomalies
	ModeDoubleCharge   FailureMode = "double_charge"
	ModeAmountMismatch FailureMode = "amount_mismatch"
	ModePartialSuccess FailureMode = "partial_success"

	// Async state transitions
	ModePendingThenFailed   FailureMode = "pending_then_failed"
	ModePendingThenSuccess  FailureMode = "pending_then_success"
	ModeFailedThenSuccess   FailureMode = "failed_then_success"
	ModeSuccessThenReversed FailureMode = "success_then_reversed"
)

type Result

type Result struct {
	Mode             FailureMode
	HTTPStatus       int
	ErrorCode        string // gateway-specific error code, e.g. "insufficient_funds"
	SkipWebhook      bool   // true for webhook_missing
	DuplicateWebhook bool   // true for webhook_duplicate
	WebhookDelayMs   int
	IsPending        bool // true for async pending states
}

Result is the outcome of executing one scenario step.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL