Exemplo n.º 1
0
        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;
            }
        }