flamingo.me/flamingo-commerce/v3@v3.11.0/checkout/domain/placeorder/states/validate_payment.go (about)

     1  package states
     2  
     3  import (
     4  	"context"
     5  
     6  	"flamingo.me/flamingo-commerce/v3/checkout/domain/placeorder/process"
     7  	"flamingo.me/flamingo-commerce/v3/payment/application"
     8  	"go.opencensus.io/trace"
     9  )
    10  
    11  type (
    12  	// ValidatePayment state
    13  	ValidatePayment struct {
    14  		paymentService *application.PaymentService
    15  		validator      process.PaymentValidatorFunc
    16  	}
    17  )
    18  
    19  var _ process.State = ValidatePayment{}
    20  
    21  // Inject dependencies
    22  func (v *ValidatePayment) Inject(
    23  	paymentService *application.PaymentService,
    24  	validator process.PaymentValidatorFunc,
    25  ) *ValidatePayment {
    26  	v.paymentService = paymentService
    27  	v.validator = validator
    28  
    29  	return v
    30  }
    31  
    32  // Name get state name
    33  func (ValidatePayment) Name() string {
    34  	return "ValidatePayment"
    35  }
    36  
    37  // Run the state operations
    38  func (v ValidatePayment) Run(ctx context.Context, p *process.Process) process.RunResult {
    39  	ctx, span := trace.StartSpan(ctx, "placeorder/state/ValidatePayment/Run")
    40  	defer span.End()
    41  
    42  	return v.validator(ctx, p, v.paymentService)
    43  }
    44  
    45  // Rollback the state operations
    46  func (v ValidatePayment) Rollback(ctx context.Context, _ process.RollbackData) error {
    47  	return nil
    48  }
    49  
    50  // IsFinal if state is a final state
    51  func (v ValidatePayment) IsFinal() bool {
    52  	return false
    53  }