public Payment Execute(Payment payment) { payment.Order = _ordersBusiness.Get(payment.Order.Key); payment.OrderId = payment.Order.Id; long idPayment = _paymentBusiness.Insert((Payment)payment); if (payment.Valid) { if (payment is Billet) { ResponsePaymentSlipTransation response = _billetIntegration.Execute( new RequestPaymentSlipTransaction() { reference = payment.Order.Number } ); payment.State = "ok"; payment.PaymentType = PaymentType.Billet; } else if (payment is CredCard) { ResponseCreditCardTransaction response = _credCardIntegration.Execute( new RequestCreditCardTransation() { reference = payment.Order.Number, number = ((CredCard)payment).Number }); payment.State = "ok"; payment.PaymentType = PaymentType.CredCard; } payment.Id = idPayment; _paymentBusiness.Update((Payment)payment); } return(payment); }