Documentation
¶
Overview ¶
Package workflows provides Temporal workflow definitions for automated recurring billing, subscription lifecycle management, and dunning retry logic.
Index ¶
- Constants
- func DunningWorkflow(ctx workflow.Context, params DunningParams) error
- func RegisterWorkflows(w worker.Worker, burnCredits engine.CreditBurner)
- func SubscriptionLifecycleWorkflow(ctx workflow.Context, params SubscriptionWorkflowParams) error
- func WorkflowID(subscriptionId string) string
- type BillingActivities
- func (a *BillingActivities) CancelSubscriptionActivity(ctx context.Context, params CancelParams) error
- func (a *BillingActivities) ChangePlanActivity(ctx context.Context, params ChangePlanParams) error
- func (a *BillingActivities) CollectInvoiceActivity(ctx context.Context, params CollectInvoiceParams) (*CollectionActivityResult, error)
- func (a *BillingActivities) MarkUncollectibleActivity(ctx context.Context, params MarkUncollectibleParams) error
- func (a *BillingActivities) RenewSubscriptionActivity(ctx context.Context, params RenewalParams) (*RenewalResult, error)
- func (a *BillingActivities) TransitionSubscriptionActivity(ctx context.Context, params TransitionParams) error
- type CancelParams
- type CancelSignal
- type ChangePlanParams
- type ChangePlanSignal
- type CollectInvoiceParams
- type CollectionActivityResult
- type DunningParams
- type MarkUncollectibleParams
- type RenewalParams
- type RenewalResult
- type SubscriptionWorkflowParams
- type TransitionParams
Constants ¶
const ( // TaskQueue is the Temporal task queue for billing workflows. TaskQueue = "commerce-billing" // Signal names SignalCancel = "cancel" SignalReactivate = "reactivate" SignalChangePlan = "change_plan" SignalPaymentReceived = "payment_received" )
Variables ¶
This section is empty.
Functions ¶
func DunningWorkflow ¶
func DunningWorkflow(ctx workflow.Context, params DunningParams) error
DunningWorkflow retries payment collection on a failed invoice. If all retries fail, the invoice is marked uncollectible and the subscription transitions to unpaid.
func RegisterWorkflows ¶
func RegisterWorkflows(w worker.Worker, burnCredits engine.CreditBurner)
RegisterWorkflows registers all billing workflows and activities with the provided Temporal worker.
func SubscriptionLifecycleWorkflow ¶
func SubscriptionLifecycleWorkflow(ctx workflow.Context, params SubscriptionWorkflowParams) error
SubscriptionLifecycleWorkflow manages the entire lifecycle of a subscription. One instance per active subscription. Workflow ID: "billing:sub:{subscriptionId}"
func WorkflowID ¶
WorkflowID returns the standard workflow ID for a subscription.
Types ¶
type BillingActivities ¶
type BillingActivities struct {
// BurnCredits is injected from the billing package to avoid circular imports.
BurnCredits engine.CreditBurner
}
BillingActivities holds dependencies for activity implementations.
func (*BillingActivities) CancelSubscriptionActivity ¶
func (a *BillingActivities) CancelSubscriptionActivity(ctx context.Context, params CancelParams) error
CancelSubscriptionActivity cancels a subscription.
func (*BillingActivities) ChangePlanActivity ¶
func (a *BillingActivities) ChangePlanActivity(ctx context.Context, params ChangePlanParams) error
ChangePlanActivity changes a subscription's plan.
func (*BillingActivities) CollectInvoiceActivity ¶
func (a *BillingActivities) CollectInvoiceActivity(ctx context.Context, params CollectInvoiceParams) (*CollectionActivityResult, error)
CollectInvoiceActivity attempts to collect payment on an invoice.
func (*BillingActivities) MarkUncollectibleActivity ¶
func (a *BillingActivities) MarkUncollectibleActivity(ctx context.Context, params MarkUncollectibleParams) error
MarkUncollectibleActivity marks an invoice as uncollectible.
func (*BillingActivities) RenewSubscriptionActivity ¶
func (a *BillingActivities) RenewSubscriptionActivity(ctx context.Context, params RenewalParams) (*RenewalResult, error)
RenewSubscriptionActivity generates an invoice and attempts collection.
func (*BillingActivities) TransitionSubscriptionActivity ¶
func (a *BillingActivities) TransitionSubscriptionActivity(ctx context.Context, params TransitionParams) error
TransitionSubscriptionActivity updates a subscription's status.
type CancelParams ¶
type CancelSignal ¶
type CancelSignal struct {
AtPeriodEnd bool `json:"atPeriodEnd"`
}
CancelSignal carries cancellation parameters.
type ChangePlanParams ¶
type ChangePlanSignal ¶
ChangePlanSignal carries plan change parameters.
type CollectInvoiceParams ¶
type CollectionActivityResult ¶
type CollectionActivityResult struct {
Success bool `json:"success"`
}
type DunningParams ¶
type DunningParams struct {
OrgName string `json:"orgName"`
SubscriptionId string `json:"subscriptionId"`
InvoiceId string `json:"invoiceId"`
MaxRetries int `json:"maxRetries"`
}
DunningParams configures the dunning retry workflow.
type MarkUncollectibleParams ¶
type RenewalParams ¶
type RenewalResult ¶
type SubscriptionWorkflowParams ¶
type SubscriptionWorkflowParams struct {
OrgName string `json:"orgName"`
SubscriptionId string `json:"subscriptionId"`
UserId string `json:"userId"`
PlanId string `json:"planId"`
TrialEnd time.Time `json:"trialEnd,omitempty"`
PeriodEnd time.Time `json:"periodEnd"`
}
SubscriptionWorkflowParams contains the initial parameters for the workflow.