public async Task <AjaxResponse> AddPayment(AddPaymentModel input) { try { bool paymentSuccess = false; var contPaymentTransID = input.MerchantTransNo; PAYMENTHDR paymentHDRLogic = new PAYMENTHDR(_env, _connectionString); PAYMENTDTL paymentDTLLogic = new PAYMENTDTL(_env, _connectionString); DTO.Payment.PAYMENTHDR dataPaymentHDR, contPaymentHDR; DTO.Payment.PAYMENTDTL dataPaymentDTL, contPaymentDTL; contPaymentHDR = paymentHDRLogic.Retrieve(x => x.PaymentRef == contPaymentTransID); if (contPaymentHDR == null) { using (TransactionScope scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { dataPaymentHDR = new DTO.Payment.PAYMENTHDR { BizRegID = "1", BizLocID = "1", PaymentTransID = DateTime.Now.ToString("yyyyMMddHHmmss") + GeneratorHelper.GenerateRandomString(6), PaymentRef = input.MerchantTransNo, MerchantCode = input.MerchantCode, BaseCurrency = input.TransCurrency, TransCurrency = input.TransCurrency, TransTotalAmt = Convert.ToDecimal(input.TransAmt), ProductDesc = input.ProductDesc, UserName = input.UserName, UserEmail = input.UserEmail, UserContact = input.UserContact, Signature = input.Signature, ResponseURL = input.ResponseURL, AdditionalURL = input.AdditionalURL, Status = 1, Flag = 1, IsHost = 0 }; await paymentHDRLogic.Create(dataPaymentHDR); paymentSuccess = true; scope.Complete(); } catch (Exception ex) { throw ex; } } } else { return(new AjaxResponse(new ErrorInfo("Duplicate Merchant Transaction ID"))); } return(new AjaxResponse(new { success = paymentSuccess, ID = dataPaymentHDR.PaymentTransID })); } catch (Exception ex) { throw ex; } }