public void CreateInvoiceTransaction(PayOpenInvoicesRequest invoiceRequest, string reason, Boolean status) { InvoiceInforTransaction invoiceInforTransaction = new InvoiceInforTransaction(); if (invoiceRequest != null) { invoiceInforTransaction.TransactionId = Guid.NewGuid(); invoiceInforTransaction.PostedToInfor = status; invoiceInforTransaction.InvoiceNumber = invoiceRequest.Invoice.ToJson(); invoiceInforTransaction.CCMaskedCard = invoiceRequest.CreditCard.CCMaskedCard; invoiceInforTransaction.CardType = invoiceRequest.CreditCard.CCCardType; invoiceInforTransaction.AuthCode = invoiceRequest.CreditCard.CCAuthorizationNumber; invoiceInforTransaction.CCReferenceNumber = invoiceRequest.CreditCard.CCReferenceNumber; invoiceInforTransaction.InforMessage = reason; invoiceInforTransaction.CustomerNumber = invoiceRequest.Head.CompanyNumber + invoiceRequest.Head.CustomerNumber; //BUSA-1123 To add customer number in Infor table. this.unitOfWork.GetRepository <InvoiceInforTransaction>().Insert(invoiceInforTransaction); for (int i = 0; i < invoiceRequest.Invoice.Count; i++) { InvoiceTransaction invoiceTransaction = new InvoiceTransaction(); invoiceTransaction.InvoiceInforTransactionId = invoiceInforTransaction.TransactionId; invoiceTransaction.InvoiceNumber = invoiceRequest.Invoice[i].InvoiceNo; invoiceTransaction.AmountPaid = Convert.ToDecimal(invoiceRequest.Invoice[i].PaymentAmount, CultureInfo.CreateSpecificCulture("en-US")); invoiceTransaction.PostedToInfor = status; invoiceTransaction.CCReferenceNumber = invoiceRequest.CreditCard.CCReferenceNumber; invoiceTransaction.CustomerNumber = invoiceRequest.Head.CompanyNumber + invoiceRequest.Head.CustomerNumber;//BUSA-1123 To add customer number in Infor table. this.unitOfWork.GetRepository <InvoiceTransaction>().Insert(invoiceTransaction); } } }
public HttpResponseMessage PayOpenInvoicesJob(PayOpenInvoicesRequest invoiceRequest) { XmlToModelConverter xmlToModelConverter = new XmlToModelConverter(); string request = xmlToModelConverter.Serialize <PayOpenInvoicesRequest>(invoiceRequest); //string request = CreatePayInvoiceRequest(invoiceRequest); GetOutstandingInvoiceParameter parameter = new GetOutstandingInvoiceParameter(); parameter.TransactionName = "PayOpenInvoices"; var response = this.PostXml(parameter, request); return(response); }
public bool PayOpenInvoicesRequest(PayOpenInvoicesRequest invoiceRequest, string invoiceNumber) { XmlToModelConverter xmlToModelConverter = new XmlToModelConverter(); string request = xmlToModelConverter.Serialize <PayOpenInvoicesRequest>(invoiceRequest); LogHelper.For(this).Info(request, "InforRequest"); //string request = CreatePayInvoiceRequest(invoiceRequest); GetOutstandingInvoiceParameter parameter = new GetOutstandingInvoiceParameter(); Boolean status; parameter.TransactionName = "PayOpenInvoices"; var response = this.PostXml(parameter, request); if (!response.IsSuccessStatusCode) { string reason = response.ReasonPhrase + " : " + response.StatusCode + " : " + invoiceRequest.CreditCard.CCAuthorizationNumber + " Infor payment failed for " + invoiceNumber; LogHelper.For(this).Info(reason, "Failed InforResponse"); status = false; InvoiceTransactionHandler handler = new InvoiceTransactionHandler(this.unitOfWork); handler.CreateInvoiceTransaction(invoiceRequest, reason, status); //throw error to frontend return(false); } XmlDocument xmlDocument = this.xmlHelper.CreateXmlDocument(response.Content.ReadAsStringAsync().Result); string responseString = JsonConvert.SerializeXmlNode(xmlDocument); if (responseString.ContainsIgnoreCase(customSettings.InforSuccessMessage)) { LogHelper.For(this).Info(response.StatusCode + " : " + invoiceRequest.CreditCard.CCAuthorizationNumber + " Infor payment successful for " + invoiceNumber, "successful InforResponse"); status = true; InvoiceTransactionHandler handler = new InvoiceTransactionHandler(this.unitOfWork); handler.CreateInvoiceTransaction(invoiceRequest, responseString, status); return(true); } else { //log in appl log and db for failed,invoice,amount, LogHelper.For(this).Info(response.StatusCode + " : " + invoiceRequest.CreditCard.CCAuthorizationNumber + " Infor payment failed for " + invoiceNumber, "Failed InforResponse"); status = false; InvoiceTransactionHandler handler = new InvoiceTransactionHandler(this.unitOfWork); handler.CreateInvoiceTransaction(invoiceRequest, responseString, status); //throw error to frontend return(false); } }
protected bool PostCreditToInfor(decimal Amount, string invoiceNumber) { //put logger ind app log : also DB entry in infortable PayOpenInvoicesRequest payOpenInvoicesRequest = new PayOpenInvoicesRequest(); customSettings = new CustomSettings(); PayOpenInvoicesHead head = new PayOpenInvoicesHead(); PayOpenInvoicesCreditCard creditCard = new PayOpenInvoicesCreditCard(); payOpenInvoicesRequest.Invoice = new List <PayOpenInvoicesInvoice>(); head.CompanyNumber = customSettings.CompanyNameIdentifier; head.CustomerNumber = SiteContext.Current.BillTo.CustomerNumber.Substring(1); head.SettlementDate = DateTime.Now.ToString("MMddyyyy"); head.MonetaryAmount = Amount.ToString(culture);//BUSA-1152 creditCard.CCCustomerID = "0" + head.CompanyNumber + head.CustomerNumber.PadLeft(10, '0'); creditCard.CCPaymentType = "CENPOS"; creditCard.CCCreditCardExp = "0000"; creditCard.CCCardHolder = "NO CARD USED"; //to check for saved cards creditCard.CCAuthorizationAmount = "0.00"; creditCard.CCMerchantId = customSettings.PaymentGateway_Cenpos_MerchantId.ToString(); creditCard.CCMaskedCard = "************0000"; creditCard.CCToken = "NOTOKEN"; creditCard.CCCardType = "NOCARD"; creditCard.CCAuthorizationNumber = "CREDIT"; creditCard.CCReferenceNumber = "0000000000"; creditCard.CCEmail = SiteContext.Current.ShipTo.Email; creditCard.CCCustomerCode = head.CustomerNumber.Substring(1).PadLeft(10, '0'); creditCard.CCEND = "Y"; payOpenInvoicesRequest.Head = head; payOpenInvoicesRequest.CreditCard = creditCard; payOpenInvoicesRequest.Name = "PayOpenInvoices"; foreach (InvoiceList inv in invoiceList) { PayOpenInvoicesInvoice payOpenInvoicesInvoice = new PayOpenInvoicesInvoice(); payOpenInvoicesInvoice.InvoiceNo = inv.InvoiceNo; payOpenInvoicesInvoice.DiscountTakenAmount = ""; Amount = Amount * (-1); payOpenInvoicesInvoice.InvoiceNote = inv.InvoiceNote; payOpenInvoicesInvoice.PaymentAmount = Amount.ToString(culture); payOpenInvoicesRequest.Invoice.Add(payOpenInvoicesInvoice); } return(this.outstandingInvoiceService.PayOpenInvoicesRequest(payOpenInvoicesRequest, invoiceNumber)); }
public void Execute(DataSet dataSet, CancellationToken cancellationToken) { try { var failedInforTransactions = (from it in this.UnitOfWork.GetRepository <InvoiceInforTransaction>().GetTable() join cc in this.UnitOfWork.GetRepository <CreditCardTransaction>().GetTable() on it.AuthCode equals cc.AuthCode where it.PostedToInfor == false select new { InvoiceInforTransaction = it, CreditCardTransaction = cc } ).ToList(); if (failedInforTransactions.Count() == 0) { return; } this.UnitOfWork.BeginTransaction(); foreach (var failedTransaction in failedInforTransactions) { PayOpenInvoicesRequest payOpenInvoicesRequest = new PayOpenInvoicesRequest(); PayOpenInvoicesHead head = new PayOpenInvoicesHead(); PayOpenInvoicesCreditCard creditCard = new PayOpenInvoicesCreditCard(); payOpenInvoicesRequest.Invoice = new List <PayOpenInvoicesInvoice>(); //head.CompanyNumber = customSettings.CompanyNameIdentifier; head.CompanyNumber = failedTransaction.CreditCardTransaction.CustomerNumber.Substring(0, 1); head.CustomerNumber = failedTransaction.CreditCardTransaction.CustomerNumber.Substring(1); head.SettlementDate = failedTransaction.CreditCardTransaction.TransactionDate.Date.ToString("MMddyyyy"); head.MonetaryAmount = failedTransaction.CreditCardTransaction.Amount.ToString(); creditCard.CCCustomerID = "0" + head.CompanyNumber + failedTransaction.CreditCardTransaction.CustomerNumber.Substring(1).PadLeft(10, '0'); creditCard.CCPaymentType = "CENPOS"; //string expirationMonth = parameter1.CreditCard.ExpirationMonth.ToString("00"); string expiryYear = failedTransaction.CreditCardTransaction.ExpirationDate.Remove(0, failedTransaction.CreditCardTransaction.ExpirationDate.Length - 2); creditCard.CCCreditCardExp = string.Concat(failedTransaction.CreditCardTransaction.ExpirationDate.Substring(0, 2), expiryYear); creditCard.CCCardHolder = failedTransaction.CreditCardTransaction.Name; //to check for saved cards creditCard.CCAuthorizationAmount = failedTransaction.CreditCardTransaction.Amount.ToString(); creditCard.CCMerchantId = customSettings.Value.PaymentGateway_Cenpos_MerchantId.ToString(); creditCard.CCMaskedCard = failedTransaction.InvoiceInforTransaction.CCMaskedCard; //creditCard.CCToken = failedTransaction.CreditCardTransaction.PNRef.Substring(0, failedTransaction.CreditCardTransaction.PNRef.IndexOf('|')); creditCard.CCToken = "NOTOKEN_" + failedTransaction.CreditCardTransaction.AuthCode.Substring(failedTransaction.CreditCardTransaction.AuthCode.Length - 4); creditCard.CCCardType = failedTransaction.InvoiceInforTransaction.CardType; creditCard.CCAuthorizationNumber = failedTransaction.CreditCardTransaction.AuthCode; creditCard.CCReferenceNumber = failedTransaction.InvoiceInforTransaction.CCReferenceNumber; var CCEmail = this.UnitOfWork.GetRepository <Customer>().GetTableAsNoTracking().Where(customer => customer.CustomerNumber == failedTransaction.CreditCardTransaction.CustomerNumber).FirstOrDefault().Email; creditCard.CCEmail = CCEmail; //check the mail creditCard.CCCustomerCode = failedTransaction.CreditCardTransaction.CustomerNumber.Substring(1).PadLeft(10, '0'); creditCard.CCEND = "Y"; payOpenInvoicesRequest.Head = head; payOpenInvoicesRequest.CreditCard = creditCard; payOpenInvoicesRequest.Name = "PayOpenInvoices"; invoiceList = JsonConvert.DeserializeObject <List <InvoiceList> >(failedTransaction.InvoiceInforTransaction.InvoiceNumber); foreach (InvoiceList inv in invoiceList) { PayOpenInvoicesInvoice payOpenInvoicesInvoice = new PayOpenInvoicesInvoice(); payOpenInvoicesInvoice.InvoiceNo = inv.InvoiceNo;// payOpenInvoicesInvoice.DiscountTakenAmount = ""; payOpenInvoicesInvoice.InvoiceNote = inv.InvoiceNote; payOpenInvoicesInvoice.PaymentAmount = (invoiceList.Count() > 1) ? inv.PaymentAmount : head.MonetaryAmount;//when paying for single payOpenInvoicesRequest.Invoice.Add(payOpenInvoicesInvoice); } var response = this.outstandingInvoiceService.PayOpenInvoicesJob(payOpenInvoicesRequest); if (!response.IsSuccessStatusCode) { JobLogger.Error("Post to infor for " + creditCard.CCAuthorizationNumber + " failed :" + response); } else { failedTransaction.InvoiceInforTransaction.PostedToInfor = true; JobLogger.Error("Post to infor for " + creditCard.CCAuthorizationNumber + " successful :" + response); } this.UnitOfWork.Save(); } this.UnitOfWork.CommitTransaction(); } catch (Exception ex) { LogHelper.For(this).Error(ex); throw; } }