public static BaseResponse GetResponse(returntype sfgReturn) { string className = "SFGWrapper.CreditCardTranslators"; BaseResponse baseResponse = new BaseResponse(); foreach (var item in sfgReturn.error) { Message ahError = new Message(item.errno, MessageSources.CreditCard); foreach (string message in item.errmsg) { ahError.SfgMessages.Add(message); } baseResponse.Messages.Add(ahError); } CreditCardServiceResponse chargeCardResponse = new CreditCardServiceResponse(); chargeCardResponse.AuthorizationCode = sfgReturn.response.CC_AUTH_CODE; chargeCardResponse.ResponseCode = sfgReturn.response.CC_RESPONSE_CODE; chargeCardResponse.VerifoneRoutingId = sfgReturn.response.CC_ROUTE_NO; chargeCardResponse.TransactionSucceeded = sfgReturn.response.CC_TRANS_SUCCEEDED == "Y"; chargeCardResponse.MemberId = sfgReturn.response.CUSTOMER_NUMBER; chargeCardResponse.MemberUpdated = sfgReturn.response.CUSTOMER_UPDATED == "Y"; foreach (var item in sfgReturn.response.EMAIL_RESULTS) { chargeCardResponse.EmailResults.Add(GetEmailResults(item)); } foreach (var item in sfgReturn.response.OPTIN_RESULTS) { chargeCardResponse.OptinResults.Add(GetOptinResults(item)); } baseResponse.TypedResponse = chargeCardResponse; baseResponse.TypedResponse.Success = sfgReturn.success; baseResponse.TypedResponse.Info = Utilities.GetInfo(sfgReturn.response.INFO); baseResponse.TypedResponse.MemoryUsed = sfgReturn.response.MEMORY_USED; baseResponse.TypedResponse.Protocol = sfgReturn.response.PROTOCOL; baseResponse.TypedResponse.RoundtripTime = sfgReturn.response.ROUNDTRIP_TIME; baseResponse.TypedResponse.Server = sfgReturn.response.SERVER; baseResponse.TypedResponse.TimeElapsed = sfgReturn.response.TIME_ELAPSED; baseResponse.TypedResponse.Version = sfgReturn.response.VERSION; return(baseResponse); }
public CreditCardServiceResponse PayEstimate(CreditCardViewModel cardProfile, Func<string, string> urlBuilder, IARequest request, IARequestEstimate estimate) { var response = new CreditCardServiceResponse {SuccessfulCharge = true}; var transaction = new AuthorizeNETTransactionInformation(cardProfile.CreditCardNumber, estimate.Charge, cardProfile.ExpirationDate) { FirstName = cardProfile.FirstName, LastName = cardProfile.LastName, CreditCardCode = cardProfile.CardVerificationCode, Email = cardProfile.ReceiptEmailAddressCsv, InvoiceNumber = string.Format("Est-{0}", request.RequestIdForDisplay), Description = "Request Estimate", Company = cardProfile.CompanyName.PadRight(50).Substring(0, 50).Trim(), Zip = "" }; var paymentGatewayResponse = new PaymentGatewayResponse(string.Empty); if (cardProfile.CreditCardId == 0) { var authorizeNetDirect = new AuthorizeNET(_enableDebug, _loginId, _transactionKey); if (!authorizeNetDirect.ProcessAuthorizationAndCapture(transaction)) { response.SuccessfulCharge = false; response.ErrorMessage = authorizeNetDirect.Error; } response.PaymentGatewayResponse = authorizeNetDirect.PaymentGatewayResponse; } else { // go through CIM to process transaction paymentGatewayResponse = CIMAuthorizationAndCapture(transaction, cardProfile.CIMProfileId, cardProfile.CIMPaymentProfileId); if (paymentGatewayResponse.Errors.Any() || paymentGatewayResponse.GetValue(PaymentGatewayResponse.FieldNames.ResponseCode) != "1") { var message = paymentGatewayResponse.Errors.Any() ? paymentGatewayResponse.Errors.Aggregate((messages, error) => messages + ", " + error) : paymentGatewayResponse.GetValue(PaymentGatewayResponse.FieldNames.ResponseReasonText); response.SuccessfulCharge = false; response.ErrorMessage = message; } } if (!response.SuccessfulCharge) return response; RecordOrder(cardProfile, paymentGatewayResponse, estimate); var requestStatusLookup = new RequestStatusLookup(_dataContext); request.IARequestStatusID = requestStatusLookup.GetRequestStatus(RequestStatus.Processing).IARequestStatusID; _dataContext.SubmitChanges(); var approved = DateTime.Now; MarkEstimateAsPaid(request, estimate, approved); SendCustomerReceipt(cardProfile, request, estimate); InformBillingThatCustomerPaid(cardProfile, paymentGatewayResponse, urlBuilder, request, approved, estimate.Charge); return response; }