flamingo.me/flamingo-commerce/v3@v3.11.0/payment/module.go (about)

     1  package payment
     2  
     3  import (
     4  	"flamingo.me/dingo"
     5  	"flamingo.me/flamingo-commerce/v3/payment/interfaces"
     6  	"flamingo.me/flamingo-commerce/v3/payment/interfaces/controller"
     7  	"flamingo.me/flamingo/v3/framework/web"
     8  )
     9  
    10  type (
    11  	// Module registers our payment module
    12  	Module struct {
    13  		EnableOfflinePayment bool `inject:"config:commerce.payment.enableOfflinePaymentGateway,optional"`
    14  	}
    15  )
    16  
    17  // Configure module
    18  func (m *Module) Configure(injector *dingo.Injector) {
    19  	if m.EnableOfflinePayment {
    20  		injector.BindMap((*interfaces.WebCartPaymentGateway)(nil), interfaces.OfflineWebCartPaymentGatewayCode).To(interfaces.OfflineWebCartPaymentGateway{})
    21  	}
    22  
    23  	web.BindRoutes(injector, new(routes))
    24  }
    25  
    26  type routes struct {
    27  	paymentAPIController *controller.PaymentAPIController
    28  }
    29  
    30  func (r *routes) Inject(apiController *controller.PaymentAPIController) {
    31  	r.paymentAPIController = apiController
    32  }
    33  
    34  func (r *routes) Routes(registry *web.RouterRegistry) {
    35  	registry.HandleGet("payment.status", r.paymentAPIController.Status)
    36  	registry.Route("/api/payment/status", "payment.status")
    37  	registry.Route("/api/v1/payment/status", "payment.status")
    38  
    39  }