private AddPaymentTransactionResult ResendTransaction(SubmitTransactionParameter submitTransactionParameter) { SubmitTransactionParameter transactionParameter = new SubmitTransactionParameter() { TransactionType = submitTransactionParameter.TransactionType, ReferenceNumber = submitTransactionParameter.ReferenceNumber, OriginalRequestNumber = submitTransactionParameter.OriginalRequestNumber, OriginalRequestToken = submitTransactionParameter.OriginalRequestToken, Amount = submitTransactionParameter.Amount, WebsiteId = submitTransactionParameter.WebsiteId, IsResentTransaction = true }; CreditCardTransaction creditCardTransaction = this.CreateCreditCardTransaction(transactionParameter); SubmitTransactionResult submitTransactionResult = this.GetPaymentGateway().SubmitTransaction(transactionParameter); this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult); if (!submitTransactionResult.Success) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.CreditCardFailed, string.Join(Environment.NewLine, (IEnumerable <string>)submitTransactionResult.ResponseMessages))); } return(new AddPaymentTransactionResult() { CreditCardTransaction = this.UpdateCreditCardTransaction(creditCardTransaction, submitTransactionParameter, submitTransactionResult) }); }
private AddPaymentTransactionResult SubmitReferenceTransaction(AddPaymentTransactionParameter parameter) { if (parameter.OriginalRequestNumber.IsBlank() || parameter.OriginalRequestToken.IsBlank()) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.CreditCardFailed, "Original Request Number and Original Reference Number required")); } SubmitTransactionParameter transactionParameter = new SubmitTransactionParameter() { TransactionType = parameter.TransactionType, ReferenceNumber = parameter.ReferenceNumber, OriginalRequestNumber = parameter.OriginalRequestNumber, OriginalRequestToken = parameter.OriginalRequestToken, Amount = parameter.Amount, WebsiteId = parameter.WebsiteId }; CreditCardTransaction creditCardTransaction = this.CreateCreditCardTransaction(transactionParameter); transactionParameter.CreditCardTransactionId = new Guid?(creditCardTransaction.Id); SubmitTransactionResult submitTransactionResult = this.GetPaymentGateway().SubmitTransaction(transactionParameter); if (!submitTransactionResult.Success) { this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult); if (submitTransactionResult.IsConnectionError) { return(this.ResendTransaction(transactionParameter)); } return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.CreditCardFailed, string.Join(Environment.NewLine, (IEnumerable <string>)submitTransactionResult.ResponseMessages))); } return(new AddPaymentTransactionResult() { CreditCardTransaction = this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult) }); }
public virtual SubmitTransactionResult SubmitTransaction(SubmitTransactionParameter parameter) { TransactionalClient transactionalClient = new TransactionalClient(); TokensClient tokenClient = new TokensClient(); SubmitTransactionResult result = new SubmitTransactionResult(); if (parameter.PaymentProfileId != null) { UseTokenRequest cardRequest = this.GetCardRequestForToken(parameter); UseTokenResponse reply1 = tokenClient.UseToken(cardRequest); result.Success = reply1.Result == 0; result.ResponseNumber = reply1.AuthorizationNumber ?? string.Empty; result.ResponseToken = parameter.PaymentProfileId + "|" + reply1.ReferenceNumber ?? string.Empty; if (!result.Success) { result.ResponseMessages.Add(string.Format("Transaction Failed: {0} Reference: {1}", reply1.Message, reply1.ReferenceNumber)); } } else { // ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;//BUSA-669 : change Protocol to TLS v1.2 in CenPos calls ProcessCreditCardResponse reply = transactionalClient.ProcessCreditCard(this.GetCardRequest(parameter)); result.Success = reply.Result == 0; result.ResponseNumber = reply.AutorizationNumber ?? string.Empty; result.ResponseToken = ((ProcessRecurringSaleResponse)reply).RecurringSaleTokenId + "|" + reply.ReferenceNumber ?? string.Empty; this.recurringToken = ((ProcessRecurringSaleResponse)reply).RecurringSaleTokenId; if (!result.Success) { result.ResponseMessages.Add(string.Format("Transaction Failed: {0} Reference: {1}", reply.Message, reply.ReferenceNumber)); } } return(result); }
private void SubmitReversalTransaction(SubmitTransactionParameter submitTransactionParameter, SubmitTransactionResult submitTransactionResult) { SubmitTransactionParameter transactionParameter = new SubmitTransactionParameter() { TransactionType = TransactionType.Reversal, CustomerNumber = submitTransactionParameter.CustomerNumber, ReferenceNumber = submitTransactionParameter.ReferenceNumber, CurrencyCode = submitTransactionParameter.CurrencyCode, BillToAddress = submitTransactionParameter.BillToAddress, ShipToAddress = submitTransactionParameter.ShipToAddress, PaymentProfileId = submitTransactionParameter.PaymentProfileId, CreditCard = submitTransactionParameter.CreditCard, Amount = submitTransactionParameter.Amount, WebsiteId = submitTransactionParameter.WebsiteId, OriginalRequestToken = submitTransactionResult.ResponseToken }; CreditCardTransaction creditCardTransaction = this.CreateCreditCardTransaction(transactionParameter); submitTransactionParameter.OriginalRequestToken = submitTransactionResult.ResponseToken; SubmitTransactionResult submitTransactionResult1 = this.GetPaymentGateway().SubmitTransaction(transactionParameter); this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult1); }
private AddPaymentTransactionResult SubmitNewTransaction(AddPaymentTransactionParameter parameter) { Customer billTo1; Customer shipTo1; if (parameter.IsAdmin) { ICustomerRepository typedRepository = this.UnitOfWork.GetTypedRepository <ICustomerRepository>(); if (!parameter.BillToId.HasValue) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.NotFound, "BillToId is empty")); } Guid?nullable = parameter.ShipToId; if (!nullable.HasValue) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.NotFound, "ShipToId is empty")); } ICustomerRepository customerRepository1 = typedRepository; nullable = parameter.BillToId; Guid id1 = nullable.Value; billTo1 = customerRepository1.Get(id1); ICustomerRepository customerRepository2 = typedRepository; nullable = parameter.ShipToId; Guid id2 = nullable.Value; shipTo1 = customerRepository2.Get(id2); } else { GetBillToResult billTo2 = this.GetBillTo(parameter.BillToId); if (billTo2.ResultCode != ResultCode.Success) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(billTo2.SubCode, billTo2.Message)); } billTo1 = billTo2.BillTo; GetShipToResult shipTo2 = this.GetShipTo(parameter.BillToId, parameter.ShipToId); if (shipTo2.ResultCode != ResultCode.Success) { return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(shipTo2.SubCode, shipTo2.Message)); } shipTo1 = shipTo2.ShipTo; } SubmitTransactionParameter transactionParameter = new SubmitTransactionParameter() { TransactionType = parameter.TransactionType, CustomerNumber = billTo1.CustomerNumber, ReferenceNumber = parameter.ReferenceNumber, CurrencyCode = parameter.CurrencyCode, BillToAddress = CreateCreditCardAddress(billTo1, parameter.CreditCard), ShipToAddress = CreateCreditCardAddress(shipTo1, (CreditCardDto)null), PaymentProfileId = parameter.PaymentProfileId, CreditCard = parameter.CreditCard, Amount = parameter.Amount, WebsiteId = parameter.WebsiteId }; if (!parameter.PaymentProfileId.IsBlank()) { UserProfile userProfile = this.UnitOfWork.GetRepository <UserProfile>().Get(SiteContext.Current.UserProfileDto.Id); transactionParameter.CustomerProfileId = userProfile.GetProperty("StoredCustomerProfileId", string.Empty); } CreditCardTransaction creditCardTransaction = this.CreateCreditCardTransaction(transactionParameter); transactionParameter.CreditCardTransactionId = new Guid?(creditCardTransaction.Id); SubmitTransactionResult submitTransactionResult = (parameter.CreditCard.CardType == "PayPal" ? this.paymentGatewayFactory.GetPaymentGateway("PaypalExpress") : this.GetPaymentGateway()).SubmitTransaction(transactionParameter); if (submitTransactionResult.ResponseMessages.Count > 0) { LogHelper.For(this).Error(transactionParameter.CustomerNumber + submitTransactionResult.ResponseMessages.FirstOrDefault() + submitTransactionResult.Success, "CenposResponse"); } if (!submitTransactionResult.Success) { this.UnitOfWork.RollbackTransaction(); this.UnitOfWork.Clear(true); this.UnitOfWork.BeginTransaction(); this.ResetContext(); this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult); if (submitTransactionResult.IsConnectionError) { this.SubmitReversalTransaction(transactionParameter, submitTransactionResult); } return(this.CreateErrorServiceResult <AddPaymentTransactionResult>(SubCode.CreditCardFailed, string.Join(Environment.NewLine, (IEnumerable <string>)submitTransactionResult.ResponseMessages))); } return(new AddPaymentTransactionResult() { CreditCardTransaction = this.UpdateCreditCardTransaction(creditCardTransaction, transactionParameter, submitTransactionResult) }); }
private CreditCardTransaction UpdateCreditCardTransaction(CreditCardTransaction creditCardTransaction, SubmitTransactionParameter submitTransactionParameter, SubmitTransactionResult submitTransactionResult) { creditCardTransaction.Result = submitTransactionResult.Success ? "0" : "1"; creditCardTransaction.AuthCode = submitTransactionResult.ResponseNumber; creditCardTransaction.RequestId = submitTransactionResult.ResponseNumber; creditCardTransaction.PNRef = submitTransactionResult.ResponseToken ?? string.Empty; creditCardTransaction.Status = !submitTransactionResult.Success ? "Error" : (submitTransactionParameter.TransactionType == TransactionType.Authorization ? "Open" : "Submitted"); //Save CC last 4 digit and CardType string ccNumber = (submitTransactionParameter.CreditCard.CardNumber.Length > 3) ? submitTransactionParameter.CreditCard.CardNumber.Substring(submitTransactionParameter.CreditCard.CardNumber.Length - 4, 4) : submitTransactionParameter.CreditCard.CardNumber; creditCardTransaction.CreditCardNumber = ccNumber; creditCardTransaction.CardType = this.GetCardType(submitTransactionParameter.CreditCard.CardType); //End this.UnitOfWork.GetRepository <CreditCardTransaction>().Insert(creditCardTransaction); if (!submitTransactionResult.Success) { creditCardTransaction.RespText = string.Join(Environment.NewLine, (IEnumerable <string>)submitTransactionResult.ResponseMessages); return(creditCardTransaction); } if (submitTransactionParameter.TransactionType == TransactionType.Capture || submitTransactionParameter.TransactionType == TransactionType.Void) { CreditCardTransaction creditCardTransaction1 = this.UnitOfWork.GetRepository <CreditCardTransaction>().GetTable().FirstOrDefault <CreditCardTransaction>((Expression <Func <CreditCardTransaction, bool> >)(c => c.RequestId.Equals(submitTransactionParameter.OriginalRequestNumber))); if (creditCardTransaction1 != null) { creditCardTransaction1.Status = submitTransactionParameter.TransactionType == TransactionType.Capture ? "Captured" : "Voided"; } } return(creditCardTransaction); }