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; } }