public string readRFQsByUser(string user) { GatewayResponse response = new GatewayResponse(); List <RFQ> result = new List <RFQ>(); if (user.ToUpper() == "ALL") { result = (List <RFQ>)rfq_CRUD.readAll(); } else { result = rfq_CRUD.readByUser(user); } response.ErrorThrown = false; response.ResponseDescription = ""; response.Result = result; return(JsonConvert.SerializeObject(response)); }
public void SendTest_PriorAuthCapture_Approved() { //check login / password string sError = CheckLoginPassword(); Assert.IsTrue(sError == "", sError); //setup decimal amount = (decimal)20.13; string transID = SendAuthOnly(amount + 1, true); Assert.IsTrue(transID.Trim().Length > 0); Assert.IsTrue(long.Parse(transID) > 0); //start testing string responseString = "1|1|1|This transaction has been approved.|P9A0ET|P|2207700131||PriorAuthCapture transaction approved testing|20.13|CC|prior_auth_capture||||||||||||||||||||||||||4C66E6649DF48EDEBBD917A1656CD68C|||||||||||||XXXX1111|Visa||||||||||||||||"; LocalRequestObject.ResponseString = responseString; IGatewayResponse expected = new GatewayResponse(responseString.Split('|')); Gateway target = new Gateway(ApiLogin, TransactionKey, true); IGatewayRequest request = new PriorAuthCaptureRequest(amount, transID); request.DuplicateWindow = "0"; string description = "PriorAuthCapture transaction approved testing"; IGatewayResponse actual = target.Send(request, description); Assert.AreEqual(expected.Amount, actual.Amount); Assert.AreEqual(expected.Approved, actual.Approved); Assert.AreEqual(expected.CardNumber, actual.CardNumber); Assert.AreEqual(expected.Message, actual.Message); Assert.AreEqual(expected.ResponseCode, actual.ResponseCode); Assert.IsTrue(actual.AuthorizationCode.Trim().Length > 0); Assert.IsTrue(actual.TransactionID.Trim().Length > 0); Assert.IsTrue(long.Parse(actual.TransactionID) > 0); }
private async Task ProcessResponse(GatewayResponse response) { try { using (var serviceScope = Services.CreateScope()) { { var commandQueues = serviceScope.ServiceProvider.GetRequiredService <CommandQueues>(); commandQueues.TryPostResponse(gatewayId, response); } if (!response.HasError()) { var responseProcessor = serviceScope.ServiceProvider.GetRequiredService <GatewayResponseProcessor>(); await responseProcessor.ProcessResponse(response.GetMessage()); } } } catch (Exception e) { Console.WriteLine($"Unknown exception during message processing. {e.Message}"); } }
private string getRFQ() { GatewayResponse response = new GatewayResponse(); long id = -1; try { id = long.Parse(Request["id"]); } catch (Exception ex) { response.ErrorThrown = true; response.ResponseDescription = "Bad request."; return(JsonConvert.SerializeObject(response)); } RFQ rfq = rfq_CRUD.readById(id); rfq.User = user_CRUD.readById(rfq.CreatedBy); rfq.RfqAcr = rfqACR_CRUD.readByParentID(rfq.Id); rfq.RfqEAV = rfqEAV_CRUD.readByParentID(rfq.Id); foreach (RFQEAV rfqEAV in rfq.RfqEAV) { List <RFQDetail> rfqDetail = rfqDetail_CRUD.readByParentID(rfqEAV.Id); rfqEAV.RfqDetail = rfqDetail; } updateAttachmentsToBuyer(ref rfq); updateAttachmentsToVendor(ref rfq); response.ErrorThrown = false; response.ResponseDescription = "OK"; response.Result = rfq; return(JsonConvert.SerializeObject(response)); }
public String createBOM(long sif_id) { GatewayResponse response = new GatewayResponse(); BOM bom = new BOM(); bom.SifId = sif_id; string idGenerated = bom_CRUD.createAndReturnIdGenerated(bom); if (!bom_CRUD.ErrorOccur) { response.ErrorThrown = false; response.ResponseDescription = "BOM created successfully."; response.Result = idGenerated; } else { response.ErrorThrown = true; response.ResponseDescription = bom_CRUD.ErrorMessage; } return(JsonConvert.SerializeObject(response)); }
public async Task <GatewayStatus> GetStatus() { GatewayResponse r = await _endPointInfo .GetRequest(RequestRoot.Gateway) .AppendPath(TradfriAttribute.GatewayInfo) .Get <GatewayResponse>(); return(new GatewayStatus( r.NetworkTimeProtocol, r.GatewayTimeSource, r.CurrentTime, r.CommissioningMode, r.Firmware, r.GatewayId, r.GoogleHomePairStatus, r.AlexaPairStatus, r.HomekitId, r.OtaUpdateState, r.GatewayUpdateProgress, r.OtaType, r.FirstSetup, r.CertificateProvider)); }
public byte[] Send(IDeviceMessage message) { OnMessageSent?.Invoke(message.ToString()); try { return(Task.Run(async() => { GatewayResponse serviceResponse = await StageTransactionAsync(message); if (serviceResponse.StatusCode == HttpStatusCode.OK) { var root = ElementTree.Parse(serviceResponse.RawResponse).Get("CreateTransactionResponse"); var errors = root.GetAll("Message"); if (errors.Length > 0) { var sb = new StringBuilder(); foreach (var error in root.GetAll("Message")) { sb.AppendLine(error.GetValue <string>("Information")); } throw new MessageException(sb.ToString()); } string transportKey = root.GetValue <string>("TransportKey"); string validationKey = root.GetValue <string>("ValidationKey"); return await InitializeTransactionAsync(transportKey); } else { throw new MessageException(serviceResponse.StatusCode.ToString()); } }).Result); } catch (Exception exc) { throw new MessageException("Failed to send message. Check inner exception for more details.", exc); } }
public void SendTest_Capture_Approved() { //check login / password string sError = CheckLoginPassword(); Assert.IsTrue(sError == "", sError); //setup decimal amount = (decimal)20.12; string authCode = SendAuthOnly(amount + 1, false); Assert.IsTrue(authCode.Trim().Length > 0); //start testing string responseString = "1|1|1|This transaction has been approved.|X297JA|P|2207700989||Capture transaction approved testing|20.12|CC|capture_only||||||||||||||||||||||||||13E5B43A154FFEDF556537BEA77BAB80|||||||||||||XXXX1111|Visa||||||||||||||||"; LocalRequestObject.ResponseString = responseString; IGatewayResponse expected = new GatewayResponse(responseString.Split('|')); Gateway target = new Gateway(ApiLogin, TransactionKey, true); IGatewayRequest request = new CaptureRequest(authCode, "4111111111111111", "0224", amount); string description = "Capture transaction approved testing"; IGatewayResponse actual = target.Send(request, description); Assert.AreEqual(expected.Amount, actual.Amount); Assert.AreEqual(expected.Approved, actual.Approved); Assert.AreEqual(expected.CardNumber, actual.CardNumber); Assert.AreEqual(expected.Message, actual.Message); Assert.AreEqual(expected.ResponseCode, actual.ResponseCode); Assert.IsTrue(actual.AuthorizationCode.Trim().Length > 0); Assert.IsTrue(actual.TransactionID.Trim().Length > 0); Assert.IsTrue(long.Parse(actual.TransactionID) > 0); }
public void TryPostResponse(GatewayResponse response) { if (response.SequenceNumber == 0) { return; } try { PendingRequests[response.SequenceNumber].SetResult(response.GetMessage()); } catch (KeyNotFoundException) { // no such response.SequenceNumber -> probably timeouted and already deleted } catch (GatewayResponseError e) { PendingRequests[response.SequenceNumber].SetException(e); } finally { PendingRequests.TryRemove(response.SequenceNumber, out _); } }
public string sendRFQ() { List <RFQ> resultRFQs = new List <RFQ>(); GatewayResponse response = new GatewayResponse(); String s; NewRFQScreen newRFQScreen; try { s = new StreamReader(Request.InputStream).ReadToEnd(); newRFQScreen = JsonConvert.DeserializeObject <NewRFQScreen>(s); } catch (Exception ex) { response.ErrorThrown = true; response.ResponseDescription = "ERROR: When trying to parse JSON in server. " + ex.Message; return(JsonConvert.SerializeObject(response)); } RFQNumberCRUD rfqNumberCRUD = new RFQNumberCRUD(); bomDetailCRUD bomDetail_CRUD = new bomDetailCRUD(); UserCRUD user_CRUD = new UserCRUD(); string baseBOMAttachmentsPath = ConfigurationManager.AppSettings["BOMLineAttachments"]; string baseRFQAttachmentsPath = ConfigurationManager.AppSettings["RFQAttachmentsSent"]; string strAuthUser = HttpContext.Current.User.Identity.Name; User user = user_CRUD.readById(strAuthUser); List <SIFDetail> EAUsList = newRFQScreen.SIFVolumesList; if (EAUsList.Count == 0) { response.ErrorThrown = true; response.ResponseDescription = "ERROR: Cannot create RFQ without EAU specified."; return(JsonConvert.SerializeObject(response)); } List <RFQEAV> newEAUList = new List <RFQEAV>(); foreach (SIFDetail eau in EAUsList) { RFQEAV eauParsed = new RFQEAV(); eauParsed.Volume = eau.ProjectedAnnualVolume; eauParsed.Year = eau.ProgramYear; RFQEAV alreadyExists = newEAUList.Find(eauInternal => eauInternal.Volume == eauParsed.Volume); if (alreadyExists == null) { newEAUList.Add(eauParsed); } else { alreadyExists.Year = alreadyExists.Year.Trim() + ", " + eauParsed.Year.Trim(); } } List <BOMDetail> bomDetailList = newRFQScreen.BomDetailList; ConnectionManager CM = new ConnectionManager(); Data_Base_MNG.SQL DM = CM.getDataManager(); if (newRFQScreen.SupplierList.Count > 0) { foreach (Supplier supplier in newRFQScreen.SupplierList) { foreach (BOMDetail component in bomDetailList) { RFQNumberEntity rfqNumber = new RFQNumberEntity(); rfqNumber.BOMDetailKey = component.Id; rfqNumber.SifHeaderKey = newRFQScreen.SIFHeaderID; rfqNumber.RFQNumber = rfqNumberCRUD.generateNewRFQNumber(rfqNumber.SifHeaderKey); if (rfqNumber.RFQNumber == -1) { response.ErrorThrown = true; response.ResponseDescription = "ERROR: There was an error generating a new RFQ number."; return(JsonConvert.SerializeObject(response)); } CM = new ConnectionManager(); DM = CM.getDataManager(); /*Begin Transaction*/ DM.Open_Connection("Send New RFQ"); RFQ rfq = new RFQ(); RFQNumberEntity rfqNumberGenereated = rfqNumberCRUD.create_return_object(rfqNumber, ref DM); if (rfqNumberCRUD.ErrorOccur) { response.ErrorThrown = true; response.ResponseDescription = "ERROR:" + rfqNumberCRUD.ErrorMessage; return(JsonConvert.SerializeObject(response)); } else { //rfq.SentAttachmentsFolder = newRFQScreen.FolderAttachments; newRFQScreen.FolderAttachments = newRFQScreen.FolderAttachments.Trim(); if (newRFQScreen.FolderAttachments != "") { if (System.IO.Directory.Exists((baseRFQAttachmentsPath + newRFQScreen.FolderAttachments))) { DirectoryInfo directory = new DirectoryInfo((baseRFQAttachmentsPath + newRFQScreen.FolderAttachments)); if (directory.GetFiles().Length > 0) { string folderName = ""; do { DateTime date = DateTime.Now; folderName = date.Year.ToString() + date.Month.ToString() + date.Day.ToString() + "_" + MD5HashGenerator.GenerateKey(date); } while (Directory.Exists((baseRFQAttachmentsPath + folderName))); Directory.CreateDirectory((baseRFQAttachmentsPath + folderName)); rfq.SentAttachmentsFolder = folderName; foreach (FileInfo file in directory.GetFiles()) { try { File.Copy(file.FullName, (baseRFQAttachmentsPath + rfq.SentAttachmentsFolder + @"\" + file.Name), true); } catch (Exception ex) { response.ErrorThrown = true; response.ResponseDescription = "ERROR:" + ex.Message; return(JsonConvert.SerializeObject(response)); } } } } } foreach (Attachment bomAttachment in component.AttachmentsList) { if (rfq.SentAttachmentsFolder.Trim() == "") { string folderName = ""; do { DateTime date = DateTime.Now; folderName = date.Year.ToString() + date.Month.ToString() + date.Day.ToString() + "_" + MD5HashGenerator.GenerateKey(date); } while (Directory.Exists((baseRFQAttachmentsPath + folderName))); Directory.CreateDirectory((baseRFQAttachmentsPath + folderName)); rfq.SentAttachmentsFolder = folderName; } string currentPathAttachmentSource = baseBOMAttachmentsPath + bomAttachment.Directory + @"\" + bomAttachment.FileName; string currentPathAttachmentTarget = baseRFQAttachmentsPath + rfq.SentAttachmentsFolder + @"\" + bomAttachment.FileName; try { File.Copy(currentPathAttachmentSource, currentPathAttachmentTarget, true); } catch (Exception e) { response.ErrorThrown = true; response.ResponseDescription = "ERROR:" + e.Message; return(JsonConvert.SerializeObject(response)); } } RfqCRUD rfqCRUD = new RfqCRUD(); rfq.SupplierId = supplier.Id; rfq.SupplierName = supplier.SupplierName; rfq.SentToVendor = DateTime.Now; rfq.LastEmail = supplier.ContactEmail; rfq.Status = "PENDING"; rfq.BomDetailId = component.Id; rfq.Um = component.Um; rfq.RfqNumberKey = rfqNumberGenereated.Id; rfq.RfqGenerated = rfqNumberGenereated.RfqGenerated; rfq.DueDate = newRFQScreen.DueDate; rfq.MarketSectorID = newRFQScreen.MarketSectorID; rfq.DrawingLevel = newRFQScreen.DrawingLevel; rfq.TargetPrice = newRFQScreen.TargetPrice; rfq.CommentsToVendor = newRFQScreen.CommentsToVendor; rfq.CreatedBy = strAuthUser; string idGenerated = rfqCRUD.createAndReturnIdGenerated(rfq, component, ref DM); if (!rfqCRUD.ErrorOccur) { rfq.Id = long.Parse(idGenerated); foreach (RFQEAV eau in newEAUList) { RFQEAVCRUD rfqEAV_CRUD = new RFQEAVCRUD(); RFQEAV rfqEAV_toPersist = new RFQEAV(); rfqEAV_toPersist.RfqHeaderKey = long.Parse(idGenerated); rfqEAV_toPersist.Volume = eau.Volume * component.Qty; rfqEAV_toPersist.Year = eau.Year; rfqEAV_toPersist.Status = "CREATED"; rfqEAV_CRUD.createAndReturnIdGenerated(rfqEAV_toPersist, ref DM); if (rfqEAV_CRUD.ErrorOccur) { response.ErrorThrown = true; response.ResponseDescription = "ERROR:" + rfqEAV_CRUD.ErrorMessage; return(JsonConvert.SerializeObject(response)); } } TokenCRUD token_CRUD = new TokenCRUD(); Token token = new Token(); token.Subject = "RFQ"; token.SubjectKey = long.Parse(idGenerated); token.TokenNumber = MD5HashGenerator.GenerateKey(DateTime.Now); if (token_CRUD.create(token, ref DM)) { Email NewMail = new Email(); MailMessage Message = new MailMessage(); try { Message.From = new MailAddress("*****@*****.**", "*****@*****.**"); Message.To.Add(new MailAddress(supplier.ContactEmail.ToString())); Message.Subject = "Request For Quote"; Message.IsBodyHtml = true; Message.BodyEncoding = System.Text.Encoding.UTF8; var url = ResolveUrl("~/Vendor/Email_RFQ_Request.htm"); var strEmailContent = HTMLContent(url); strEmailContent = strEmailContent.Replace("{BuyerName}", user.Name); strEmailContent = strEmailContent.Replace("{BuyerPhone}", user.Phone1); strEmailContent = strEmailContent.Replace("{BuyerEmail}", user.Email); strEmailContent = strEmailContent.Replace("{RFQ Number}", rfqNumber.RfqGenerated); strEmailContent = strEmailContent.Replace("{Part Number}", component.PartNumber); strEmailContent = strEmailContent.Replace("{RFQLink}", "http://" + Request.Url.Authority + Request.ApplicationPath + "/Vendor/RFQHandler.ashx?token=" + token.TokenNumber); Message.Body = strEmailContent; NewMail.SendMail(Message); } catch (Exception ex) { DM.RollBack(); response.ErrorThrown = true; response.ResponseDescription = "ERROR: Could not send email to: " + supplier.ContactEmail.ToString() + "; " + ex.Message; return(JsonConvert.SerializeObject(response)); } } else { response.ErrorThrown = true; response.ResponseDescription = "ERROR: " + token_CRUD.ErrorMessage; return(JsonConvert.SerializeObject(response)); } } else { response.ErrorThrown = true; response.ResponseDescription = "ERROR: " + rfqCRUD.ErrorMessage; return(JsonConvert.SerializeObject(response)); } } DM.CommitTransaction(); DM.Close_Open_Connection(); if (DM.ErrorOccur) { response.ErrorThrown = true; response.ResponseDescription = "ERROR: " + DM.Error_Mjs; return(JsonConvert.SerializeObject(response)); } resultRFQs.Add(rfq); } } } response.ErrorThrown = false; response.ResponseDescription = "RFQs created successfully."; response.Result = resultRFQs; return(JsonConvert.SerializeObject(response)); }
/// <summary> /// Refund button clicked /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Refund_Click(object sender, EventArgs e) { //retrieve order ZNode.Libraries.Admin.OrderAdmin orderAdmin = new ZNode.Libraries.Admin.OrderAdmin(); Order order = orderAdmin.GetOrderByOrderID(OrderID); ZNode.Libraries.Framework.Business.ZNodeEncryption enc = new ZNode.Libraries.Framework.Business.ZNodeEncryption(); //get payment settings int paymentSettingID = (int)order.PaymentSettingID; PaymentSettingService pss = new PaymentSettingService(); PaymentSetting ps = pss.GetByPaymentSettingID(paymentSettingID); //set gateway info GatewayInfo gi = new GatewayInfo(); gi.GatewayLoginID = enc.DecryptData(ps.GatewayUsername); gi.GatewayPassword = enc.DecryptData(ps.GatewayPassword); gi.TransactionKey = enc.DecryptData(ps.TransactionKey); gi.Vendor = ps.Vendor; gi.Partner = ps.Partner; //gi.CurrencyCode = CurrencyCode; gi.TestMode = ps.TestMode; gi.gateway = (GatewayType)ps.GatewayTypeID ; string creditCardExp = Convert.ToString(order.CardExp); if (creditCardExp == null) { creditCardExp = ""; } //set credit card CreditCard cc = new CreditCard(); cc.Amount = Decimal.Parse(txtAmount.Text); cc.CardNumber = txtCardNumber.Text.Trim(); cc.CreditCardExp = creditCardExp; cc.OrderID = order.OrderID; cc.TransactionID = order.CardTransactionID; GatewayResponse resp = new GatewayResponse(); if ((GatewayType)ps.GatewayTypeID == GatewayType.AUTHORIZE) { GatewayAuthorize auth = new GatewayAuthorize(); resp = auth.RefundPayment(gi, cc); } else if ((GatewayType)ps.GatewayTypeID == GatewayType.VERISIGN) { GatewayPayFlowPro pp = new GatewayPayFlowPro(); resp = pp.RefundPayment(gi, cc); } else if ((GatewayType)ps.GatewayTypeID == GatewayType.PAYMENTECH) { GatewayOrbital pmt = new GatewayOrbital(); resp = pmt.ReversePayment(gi, cc); } else if ((GatewayType)ps.GatewayTypeID == GatewayType.IPCOMMERCE) { GatewayIPCommerce ipc = new GatewayIPCommerce(); resp = ipc.RefundPayment(gi, cc); } else if ((GatewayType)ps.GatewayTypeID == GatewayType.NOVA) { GatewayNova nova = new GatewayNova(); cc.CreditCardExp = lstMonth.SelectedValue + "/" + lstYear.SelectedValue; cc.CardSecurityCode = txtSecurityCode.Text.Trim(); gi.TransactionType = "CCCredit"; resp = nova.RefundPayment(gi, cc); } else { lblError.Text = "Error: Credit card refunds and not supported for your gateway."; return; } if (resp.IsSuccess) { //update order status order.OrderStateID = 30; //returned status order.PaymentStatusID = 3; //refund status OrderService os = new OrderService(); os.Update(order); pnlEdit.Visible = false; pnlConfirm.Visible = true; } else { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("Could not complete request. The following response was returned by the gateway: "); sb.Append(resp.ResponseText); lblError.Text = sb.ToString(); } }
public string resendRFQ() { GatewayResponse response = new GatewayResponse(); String s; RFQ rfqToResend; try { s = new StreamReader(Request.InputStream).ReadToEnd(); rfqToResend = JsonConvert.DeserializeObject <RFQ>(s); } catch (Exception ex) { response.ErrorThrown = true; response.ResponseDescription = "ERROR: When trying to parse JSON in server. " + ex.Message; return(JsonConvert.SerializeObject(response)); } UserCRUD user_CRUD = new UserCRUD(); string strAuthUser = HttpContext.Current.User.Identity.Name; User user = user_CRUD.readById(strAuthUser); SupplierCRUD supplier_CRUD = new SupplierCRUD(); Supplier supplier = supplier_CRUD.readById(rfqToResend.SupplierId); if (supplier != null) { if (supplier.ContactEmail.Trim() != rfqToResend.LastEmail.Trim()) { supplier.ContactEmail = rfqToResend.LastEmail.Trim(); if (!supplier_CRUD.update(supplier)) { response.ErrorThrown = true; response.ResponseDescription = "ERROR:" + supplier_CRUD.ErrorMessage; return(JsonConvert.SerializeObject(response)); } } } TokenCRUD token_CRUD = new TokenCRUD(); Token token = token_CRUD.readByRFQ(rfqToResend); ConnectionManager CM = new ConnectionManager(); Data_Base_MNG.SQL DM = CM.getDataManager(); /*Begin Transaction*/ DM.Open_Connection("RFQ Re-send"); rfqToResend.SentToVendor = DateTime.Now; if (!rfq_CRUD.update(rfqToResend, ref DM)) { response.ErrorThrown = true; response.ResponseDescription = "ERROR:" + rfq_CRUD.ErrorMessage; return(JsonConvert.SerializeObject(response)); } if (token == null) { token = new Token(); token.Subject = "RFQ"; token.SubjectKey = rfqToResend.Id; token.TokenNumber = MD5HashGenerator.GenerateKey(DateTime.Now); token_CRUD.create(token, ref DM); if (token_CRUD.ErrorOccur) { response.ErrorThrown = true; response.ResponseDescription = "ERROR:" + token_CRUD.ErrorMessage; return(JsonConvert.SerializeObject(response)); } } Email NewMail = new Email(); MailMessage Message = new MailMessage(); try { Message.From = new MailAddress("*****@*****.**", "*****@*****.**"); Message.To.Add(new MailAddress(supplier.ContactEmail.ToString())); Message.Subject = "Request For Quote"; Message.IsBodyHtml = true; Message.BodyEncoding = System.Text.Encoding.UTF8; var url = ResolveUrl("~/Vendor/Email_RFQ_Request.htm"); var strEmailContent = HTMLContent(url); strEmailContent = strEmailContent.Replace("{BuyerName}", user.Name); strEmailContent = strEmailContent.Replace("{BuyerPhone}", user.Phone1); strEmailContent = strEmailContent.Replace("{BuyerEmail}", user.Email); strEmailContent = strEmailContent.Replace("{RFQ Number}", rfqToResend.RfqGenerated); strEmailContent = strEmailContent.Replace("{Part Number}", rfqToResend.PartNumber); strEmailContent = strEmailContent.Replace("{RFQLink}", "http://" + Request.Url.Authority + Request.ApplicationPath + "/Vendor/RFQHandler.ashx?token=" + token.TokenNumber); Message.Body = strEmailContent; NewMail.SendMail(Message); } catch (Exception ex) { DM.RollBack(); response.ErrorThrown = true; response.ResponseDescription = "ERROR: Could not send email to: " + supplier.ContactEmail.ToString(); return(JsonConvert.SerializeObject(response)); } DM.CommitTransaction(); DM.Close_Open_Connection(); if (DM.ErrorOccur) { response.ErrorThrown = true; response.ResponseDescription = "ERROR:" + DM.Error_Mjs; return(JsonConvert.SerializeObject(response)); } response.ErrorThrown = false; response.ResponseDescription = "RFQ " + rfqToResend.RfqGenerated + " re-sent successfully."; response.Result = rfqToResend; return(JsonConvert.SerializeObject(response)); }
internal static T Deserialize <T>(this GatewayResponse response) { return(response.Data.ToString().Deserialize <T>()); }
public Task RegisterResponse(GatewayResponse response) { responses.Add(response); return(Task.CompletedTask); }
public void ProcessRequest(HttpContext context) { var ThisCustomer = ((InterpriseSuiteEcommercePrincipal)context.User).ThisCustomer; var m_PayPalExpress = new PayPalExpress(); //Get PayPal info var PayPalDetails = m_PayPalExpress.GetExpressCheckoutDetails(context.Request.QueryString["token"]).GetExpressCheckoutDetailsResponseDetails; var paypalShippingAddress = Address.New(ThisCustomer, AddressTypes.Shipping); if (PayPalDetails.PayerInfo.Address.Name.IsNullOrEmptyTrimmed() && (PayPalDetails.PayerInfo.Address.Street1.IsNullOrEmptyTrimmed() || PayPalDetails.PayerInfo.Address.Street2.IsNullOrEmptyTrimmed()) && PayPalDetails.PayerInfo.Address.CityName.IsNullOrEmptyTrimmed() && PayPalDetails.PayerInfo.Address.StateOrProvince.IsNullOrEmptyTrimmed() && PayPalDetails.PayerInfo.Address.PostalCode.IsNullOrEmptyTrimmed() && PayPalDetails.PayerInfo.Address.CountryName.ToString().IsNullOrEmptyTrimmed() || PayPalDetails.PayerInfo.ContactPhone.IsNullOrEmptyTrimmed()) { paypalShippingAddress = ThisCustomer.PrimaryShippingAddress; } else { string streetAddress = PayPalDetails.PayerInfo.Address.Street1 + (!PayPalDetails.PayerInfo.Address.Street2.IsNullOrEmptyTrimmed() ? Environment.NewLine : String.Empty) + PayPalDetails.PayerInfo.Address.Street2; string sql = String.Empty; if (ThisCustomer.IsRegistered) { sql = String.Format("SELECT COUNT(ShipToCode) AS N FROM CustomerShipTo where Address = {0} and City = {1} and State = {2} and PostalCode = {3} and Country = {4} and ShipToName = {5} and CustomerCode = {6}", streetAddress.ToDbQuote(), PayPalDetails.PayerInfo.Address.CityName.ToDbQuote(), PayPalDetails.PayerInfo.Address.StateOrProvince.ToDbQuote(), PayPalDetails.PayerInfo.Address.PostalCode.ToDbQuote(), AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.CountryName).ToString().ToDbQuote(), PayPalDetails.PayerInfo.Address.Name.ToDbQuote(), ThisCustomer.CustomerCode.ToDbQuote()); } else { sql = String.Format("SELECT COUNT(1) AS N FROM EcommerceAddress where ShipToAddress = {0} and ShipToCity = {1} and ShipToState = {2} and ShipToPostalCode = {3} and ShipToCountry = {4} and ShipToName = {5} and CustomerID = {6}", streetAddress.ToDbQuote(), PayPalDetails.PayerInfo.Address.CityName.ToDbQuote(), PayPalDetails.PayerInfo.Address.StateOrProvince.ToDbQuote(), PayPalDetails.PayerInfo.Address.PostalCode.ToDbQuote(), AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.CountryName).ToString().ToDbQuote(), PayPalDetails.PayerInfo.Address.Name.ToDbQuote(), ThisCustomer.CustomerCode.ToDbQuote()); paypalShippingAddress.EMail = ThisCustomer.IsRegistered ? ThisCustomer.EMail : ThisCustomer.GetAnonEmail(); paypalShippingAddress.Name = PayPalDetails.PayerInfo.Address.Name; paypalShippingAddress.Address1 = PayPalDetails.PayerInfo.Address.Street1 + (PayPalDetails.PayerInfo.Address.Street2 != String.Empty ? Environment.NewLine : String.Empty) + PayPalDetails.PayerInfo.Address.Street2; paypalShippingAddress.City = PayPalDetails.PayerInfo.Address.CityName; paypalShippingAddress.State = PayPalDetails.PayerInfo.Address.StateOrProvince; paypalShippingAddress.PostalCode = PayPalDetails.PayerInfo.Address.PostalCode; paypalShippingAddress.Country = AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.CountryName.ToString()); paypalShippingAddress.Phone = PayPalDetails.PayerInfo.ContactPhone ?? String.Empty; } int isAddressExists = DB.GetSqlN(sql); if (AppLogic.AppConfigBool("PayPalCheckout.RequireConfirmedAddress") || isAddressExists == 0) { ServiceFactory.GetInstance <ICustomerService>().UpdateCustomerNotesWhenPaypalAddressIsUsed(); } } ThisCustomer.PrimaryShippingAddress = paypalShippingAddress; paypalShippingAddress.Save(); string redirectUrl = String.Empty; //Checking for redirectURL of PayPal -- Express Checkout button in Shopping Cart page or PayPal Radio Button in Payment Page if (Customer.Current.ThisCustomerSession["paypalfrom"] == "shoppingcart" || Customer.Current.ThisCustomerSession["paypalfrom"] == "checkoutanon") { redirectUrl = "checkoutshipping.aspx?PayPal=True&token=" + context.Request.QueryString["token"]; } else { if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { if (!AppLogic.AppConfigBool("Checkout.UseOnePageCheckout.UseFinalReviewOrderPage")) { //Insert PayPal call here for response - For authorize and capture of order from paypal inside IS ThisCustomer.ThisCustomerSession["paypalfrom"] = "onepagecheckout"; string OrderNumber = String.Empty; string status = String.Empty; string receiptCode = String.Empty; var billingAddress = ThisCustomer.PrimaryBillingAddress; Address shippingAddress = null; var cart = new InterpriseShoppingCart(null, ThisCustomer.SkinID, ThisCustomer, CartTypeEnum.ShoppingCart, String.Empty, false, true); if (cart.IsNoShippingRequired()) { cart.BuildSalesOrderDetails(false, true); } else { cart.BuildSalesOrderDetails(); } if (!AppLogic.AppConfigBool("PayPalCheckout.OverrideAddress")) { if (!cart.HasShippableComponents()) { shippingAddress = ThisCustomer.PrimaryShippingAddress; } else { if (ThisCustomer.IsRegistered) { var GetShippingAddress = new Address() { Name = PayPalDetails.PayerInfo.Address.Name, Address1 = PayPalDetails.PayerInfo.Address.Street1 + (PayPalDetails.PayerInfo.Address.Street2 != String.Empty ? Environment.NewLine : String.Empty) + PayPalDetails.PayerInfo.Address.Street2, City = PayPalDetails.PayerInfo.Address.CityName, State = PayPalDetails.PayerInfo.Address.StateOrProvince, PostalCode = PayPalDetails.PayerInfo.Address.PostalCode, Country = AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.CountryName.ToString()), CountryISOCode = AppLogic.ResolvePayPalAddressCode(PayPalDetails.PayerInfo.Address.Country.ToString()), Phone = PayPalDetails.PayerInfo.ContactPhone ?? String.Empty }; shippingAddress = GetShippingAddress; } else { shippingAddress = paypalShippingAddress; } } } var doExpressCheckoutResp = m_PayPalExpress.DoExpressCheckoutPayment(PayPalDetails.Token, PayPalDetails.PayerInfo.PayerID, OrderNumber, cart); string result = String.Empty; if (doExpressCheckoutResp.Errors != null && !doExpressCheckoutResp.Errors[0].ErrorCode.IsNullOrEmptyTrimmed()) { if (AppLogic.AppConfigBool("ShowGatewayError")) { result = String.Format(AppLogic.GetString("shoppingcart.aspx.27", ThisCustomer.SkinID, ThisCustomer.LocaleSetting), doExpressCheckoutResp.Errors[0].ErrorCode, doExpressCheckoutResp.Errors[0].LongMessage); } else { result = AppLogic.GetString("shoppingcart.aspx.28", ThisCustomer.SkinID, ThisCustomer.LocaleSetting); } context.Response.Redirect("shoppingcart.aspx?ErrorMsg=" + result.ToUrlEncode(), false); return; } else { Gateway gatewayToUse = null; var payPalResp = new GatewayResponse(String.Empty) { AuthorizationCode = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID, TransactionResponse = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].PaymentStatus.ToString(), Details = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].PaymentStatus.ToString(), AuthorizationTransID = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID }; InterpriseHelper.UpdateCustomerPaymentTerm(ThisCustomer, DomainConstants.PAYMENT_METHOD_CREDITCARD); status = cart.PlaceOrder(gatewayToUse, billingAddress, shippingAddress, ref OrderNumber, ref receiptCode, true, true, payPalResp, true, false); if (status != AppLogic.ro_OK) { ThisCustomer.IncrementFailedTransactionCount(); if (ThisCustomer.FailedTransactionCount >= AppLogic.AppConfigUSInt("MaxFailedTransactionCount")) { cart.ClearTransaction(); ThisCustomer.ResetFailedTransactionCount(); context.Response.Redirect("orderfailed.aspx"); } ThisCustomer.ClearTransactions(false); context.Response.Redirect("checkout1.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + status.ToUrlEncode()); } AppLogic.ClearCardNumberInSession(ThisCustomer); ThisCustomer.ClearTransactions(true); context.Response.Redirect(String.Format("orderconfirmation.aspx?ordernumber={0}", OrderNumber.ToUrlEncode())); } } else { InterpriseHelper.UpdateCustomerPaymentTerm(ThisCustomer, DomainConstants.PAYMENT_METHOD_CREDITCARD); redirectUrl = "checkoutreview.aspx?PayPal=True&token=" + context.Request.QueryString["token"]; } } else { InterpriseHelper.UpdateCustomerPaymentTerm(ThisCustomer, DomainConstants.PAYMENT_METHOD_CREDITCARD); redirectUrl = "checkoutreview.aspx?PayPal=True&token=" + context.Request.QueryString["token"]; } } context.Response.Redirect(redirectUrl); }
private static string getAvsResponse(GatewayResponse response) { return(response.AVSResponse); }
internal static T DeserializeEx <T>(this GatewayResponse response) where T : ControllableEx { return(response.Data.ToString().DeserializeEx <T>()); }
/// <summary> /// Refund button clicked /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Capture_Click(object sender, EventArgs e) { //retrieve order ZNode.Libraries.Admin.OrderAdmin orderAdmin = new ZNode.Libraries.Admin.OrderAdmin(); Order order = orderAdmin.GetOrderByOrderID(OrderID); ZNode.Libraries.Framework.Business.ZNodeEncryption enc = new ZNode.Libraries.Framework.Business.ZNodeEncryption(); //get payment settings int paymentSettingID = (int)order.PaymentSettingID; PaymentSettingService pss = new PaymentSettingService(); PaymentSetting ps = pss.GetByPaymentSettingID(paymentSettingID); //set gateway info GatewayInfo gi = new GatewayInfo(); gi.GatewayLoginID = enc.DecryptData(ps.GatewayUsername); gi.GatewayPassword = enc.DecryptData(ps.GatewayPassword); gi.TransactionKey = enc.DecryptData(ps.TransactionKey); gi.Vendor = ps.Vendor; gi.Partner = ps.Partner; gi.TestMode = ps.TestMode; gi.gateway = (GatewayType)ps.GatewayTypeID ; string creditCardExp = Convert.ToString(order.CardExp); if (creditCardExp == null) { creditCardExp = ""; } //set credit card CreditCard cc = new CreditCard(); cc.CreditCardExp = creditCardExp; cc.OrderID = order.OrderID; cc.TransactionID = order.CardTransactionID; GatewayResponse resp = new GatewayResponse(); if ((GatewayType)ps.GatewayTypeID == GatewayType.AUTHORIZE) { GatewayAuthorize auth = new GatewayAuthorize(); resp = auth.CapturePayment(gi, cc); } else if ((GatewayType)ps.GatewayTypeID == GatewayType.VERISIGN) { GatewayPayFlowPro pp = new GatewayPayFlowPro(); resp = pp.CapturePayment(gi, cc); } else if ((GatewayType)ps.GatewayTypeID == GatewayType.PAYMENTECH) { GatewayOrbital pmt = new GatewayOrbital(); resp = pmt.CapturePayment(gi, cc); } else { lblError.Text = "Error: Credit card payment capture is not supported for your gateway."; } if (resp.IsSuccess) { //update order status order.PaymentStatusID = 1; //refund status OrderService os = new OrderService(); os.Update(order); pnlEdit.Visible = false; pnlConfirm.Visible = true; } else { System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("Could not complete request. The following response was returned by the gateway: "); sb.Append(resp.ResponseText); lblError.Text = sb.ToString(); } }
private void ProcessCheckout() { string OrderNumber = string.Empty; // ---------------------------------------------------------------- // Process The Order: // ---------------------------------------------------------------- if (string.IsNullOrEmpty(ThisCustomer.PaymentTermCode)) { Response.Redirect("checkoutpayment.aspx?errormsg=" + Server.UrlEncode(AppLogic.GetString("checkoutpayment.aspx.7", ThisCustomer.SkinID, ThisCustomer.LocaleSetting))); } else { string receiptCode = string.Empty; string status = string.Empty, multiorder = string.Empty; if (cart.HasMultipleShippingAddresses()) // Paypal will never hit this { var splittedCarts = cart.SplitIntoMultipleOrdersByDifferentShipToAddresses(); bool gatewayAuthFailed = false; for (int ctr = 0; ctr < splittedCarts.Count; ctr++) { var splitCart = splittedCarts[ctr]; splitCart.BuildSalesOrderDetails(); var shippingAddress = Address.Get(ThisCustomer, AddressTypes.Shipping, splitCart.FirstItem().m_ShippingAddressID); string processedSalesOrderCode = string.Empty; string processedReceiptCode = string.Empty; // NOTE: // 3DSecure using Sagepay Gateway is not supported on multiple shipping orders // We will revert to the regular IS gateway defined on the WebStore status = splitCart.PlaceOrder(null, ThisCustomer.PrimaryBillingAddress, shippingAddress, ref processedSalesOrderCode, ref processedReceiptCode, false, true, false); OrderNumber = processedSalesOrderCode; receiptCode = processedReceiptCode; if (status == AppLogic.ro_INTERPRISE_GATEWAY_AUTHORIZATION_FAILED) { gatewayAuthFailed = true; if (ctr == 0) { ThisCustomer.IncrementFailedTransactionCount(); if (ThisCustomer.FailedTransactionCount >= AppLogic.AppConfigUSInt("MaxFailedTransactionCount")) { cart.ClearTransaction(); ThisCustomer.ResetFailedTransactionCount(); Response.Redirect("orderfailed.aspx"); } ThisCustomer.ClearTransactions(false); if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { Response.Redirect("checkout1.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + Server.UrlEncode(status)); } else { Response.Redirect("checkoutpayment.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + Server.UrlEncode(status)); } } } // NOTE : // Should handle cases when 1 or more orders failed the payment processor // if using a payment gateway on credit card multiorder = multiorder + "," + OrderNumber; } if (multiorder != string.Empty) { OrderNumber = multiorder.Remove(0, 1); } if (!gatewayAuthFailed) { cart.ClearTransaction(); } } else { var billingAddress = ThisCustomer.PrimaryBillingAddress; Address shippingAddress = null; //added for PayPal ADDRESSOVERRIDE if (IsPayPalCheckout && !AppLogic.AppConfigBool("PayPalCheckout.OverrideAddress")) { if (!cart.HasShippableComponents()) { shippingAddress = ThisCustomer.PrimaryShippingAddress; } else { pp = new PayPalExpress(); var GetPayPalDetails = pp.GetExpressCheckoutDetails(Request.QueryString["token"]).GetExpressCheckoutDetailsResponseDetails; shippingAddress = new Address() { Name = GetPayPalDetails.PayerInfo.Address.Name, Address1 = GetPayPalDetails.PayerInfo.Address.Street1 + (GetPayPalDetails.PayerInfo.Address.Street2 != String.Empty ? Environment.NewLine : String.Empty) + GetPayPalDetails.PayerInfo.Address.Street2, City = GetPayPalDetails.PayerInfo.Address.CityName, State = GetPayPalDetails.PayerInfo.Address.StateOrProvince, PostalCode = GetPayPalDetails.PayerInfo.Address.PostalCode, Country = AppLogic.ResolvePayPalAddressCode(GetPayPalDetails.PayerInfo.Address.CountryName.ToString()), CountryISOCode = AppLogic.ResolvePayPalAddressCode(GetPayPalDetails.PayerInfo.Address.Country.ToString()), Phone = GetPayPalDetails.PayerInfo.ContactPhone }; } } else { // Handle the scenario wherein the items in the cart // does not ship to the customer's primary shipping address if (cart.OnlyShippingAddressIsNotCustomerDefault()) { shippingAddress = Address.Get(ThisCustomer, AddressTypes.Shipping, cart.FirstItem().m_ShippingAddressID); } else { shippingAddress = ThisCustomer.PrimaryShippingAddress; } } if (!cart.IsSalesOrderDetailBuilt) { cart.BuildSalesOrderDetails(); } Gateway gatewayToUse = null; try { if (IsPayPalCheckout) { //Insert PayPal call here for response - For authorize and capture of order from paypal inside IS pp = new PayPalExpress(); var PayPalDetails = pp.GetExpressCheckoutDetails(Request.QueryString["token"]).GetExpressCheckoutDetailsResponseDetails; var doExpressCheckoutResp = pp.DoExpressCheckoutPayment(PayPalDetails.Token, PayPalDetails.PayerInfo.PayerID, OrderNumber, cart); var payPalResp = new GatewayResponse(string.Empty) { AuthorizationCode = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID, TransactionResponse = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].PaymentStatus.ToString(), Details = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].PaymentStatus.ToString(), AuthorizationTransID = doExpressCheckoutResp.DoExpressCheckoutPaymentResponseDetails.PaymentInfo[0].TransactionID }; status = cart.PlaceOrder(gatewayToUse, billingAddress, shippingAddress, ref OrderNumber, ref receiptCode, true, true, payPalResp, IsPayPalCheckout, false); } else { status = cart.PlaceOrder(gatewayToUse, billingAddress, shippingAddress, ref OrderNumber, ref receiptCode, true, true, null, !IsPayPalCheckout, false); } } catch (Exception ex) { if (ex.Message == "Unable to instantiate Default Credit Card Gateway") { cart.ClearLineItems(); Response.Redirect("pageError.aspx?Parameter=" + "An Error Occured while Authorizing your Credit Card, However your order has been Placed."); } Response.Redirect("pageError.aspx?Parameter=" + Server.UrlEncode(ex.Message)); } if (status == AppLogic.ro_3DSecure) { // If credit card is enrolled in a 3D Secure service (Verified by Visa, etc.) Response.Redirect("secureform.aspx"); } if (status != AppLogic.ro_OK) { ThisCustomer.IncrementFailedTransactionCount(); if (ThisCustomer.FailedTransactionCount >= AppLogic.AppConfigUSInt("MaxFailedTransactionCount")) { cart.ClearTransaction(); ThisCustomer.ResetFailedTransactionCount(); Response.Redirect("orderfailed.aspx"); } ThisCustomer.ClearTransactions(false); if (AppLogic.AppConfigBool("Checkout.UseOnePageCheckout")) { Response.Redirect("checkout1.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + Server.UrlEncode(status)); } else { Response.Redirect("checkoutpayment.aspx?paymentterm=" + ThisCustomer.PaymentTermCode + "&errormsg=" + Server.UrlEncode(status)); } } } } AppLogic.ClearCardNumberInSession(ThisCustomer); ThisCustomer.ClearTransactions(true); if (!_PayPalFailed) { Response.Redirect(string.Format("orderconfirmation.aspx?ordernumber={0}", Server.UrlEncode(OrderNumber))); } }
private IGatewayResponse SendUpdateSubscriptionRequest(AuthorizeDotNetRequest request) { var result = string.Empty; IGatewayResponse gatewayResponse = null; long id = long.Parse(request.KeyValues[AuthorizeDotNetApi.SubscriptionID]); var authentication = new MerchantAuthenticationType(); authentication.name = request.KeyValues[AuthorizeDotNetApi.ApiLogin]; authentication.transactionKey = request.KeyValues[AuthorizeDotNetApi.TransactionKey]; //do required first ARBSubscriptionType subscription = new ARBSubscriptionType(); subscription.amount = decimal.Parse(request.KeyValues[AuthorizeDotNetApi.Amount]); subscription.amountSpecified = true; subscription.name = request.KeyValues[AuthorizeDotNetApi.SubscriptionName]; PaymentType payment = new PaymentType(); var creditCard = new CreditCardType(); creditCard.cardCode = request.KeyValues[AuthorizeDotNetApi.CreditCardCode]; creditCard.cardNumber = request.KeyValues[AuthorizeDotNetApi.CreditCardNumber]; creditCard.expirationDate = request.KeyValues[AuthorizeDotNetApi.CreditCardExpiration]; payment.Item = creditCard; subscription.payment = payment; CustomerType customer = new CustomerType(); customer.id = request.KeyValues[AuthorizeDotNetApi.CustomerId]; if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.Fax)) { customer.email = request.KeyValues[AuthorizeDotNetApi.Email]; } if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.Fax)) { customer.faxNumber = request.KeyValues[AuthorizeDotNetApi.Fax]; } if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.Phone)) { customer.phoneNumber = request.KeyValues[AuthorizeDotNetApi.Phone]; } //customer.type = CustomerTypeEnum.individual; customer.typeSpecified = false; //customer.taxId = request.KeyValues[AuthorizeDotNetApi.t]; //customer.driversLicense = request.KeyValues[AuthorizeDotNetApi.]; subscription.customer = customer; if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.Address)) { NameAndAddressType customerBilling = new NameAndAddressType(); customerBilling.address = request.KeyValues[AuthorizeDotNetApi.Address]; customerBilling.city = request.KeyValues[AuthorizeDotNetApi.City]; if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.Company)) { customerBilling.company = request.KeyValues[AuthorizeDotNetApi.Company]; } if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.Country)) { customerBilling.country = request.KeyValues[AuthorizeDotNetApi.Country]; } customerBilling.firstName = request.KeyValues[AuthorizeDotNetApi.FirstName]; customerBilling.lastName = request.KeyValues[AuthorizeDotNetApi.LastName]; customerBilling.state = request.KeyValues[AuthorizeDotNetApi.State]; customerBilling.zip = request.KeyValues[AuthorizeDotNetApi.Zip]; subscription.billTo = customerBilling; } if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.ShipAddress)) { NameAndAddressType shipping = new NameAndAddressType(); shipping.address = request.KeyValues[AuthorizeDotNetApi.ShipAddress]; shipping.city = request.KeyValues[AuthorizeDotNetApi.ShipCity]; if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.ShipCompany)) { shipping.company = request.KeyValues[AuthorizeDotNetApi.ShipCompany]; } if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.ShipCountry)) { shipping.country = request.KeyValues[AuthorizeDotNetApi.ShipCountry]; } shipping.firstName = request.KeyValues[AuthorizeDotNetApi.ShipFirstName]; shipping.lastName = request.KeyValues[AuthorizeDotNetApi.ShipLastName]; shipping.state = request.KeyValues[AuthorizeDotNetApi.ShipState]; shipping.zip = request.KeyValues[AuthorizeDotNetApi.ShipZip]; subscription.shipTo = shipping; } if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.InvoiceNumber)) { OrderType order = new OrderType(); order.invoiceNumber = request.KeyValues[AuthorizeDotNetApi.InvoiceNumber]; subscription.order = order; } //PaymentScheduleType paymentSchedule = new PaymentScheduleType(); //PaymentScheduleTypeInterval paymentScheduleTypeInterval = new PaymentScheduleTypeInterval(); //paymentScheduleTypeInterval.length = short.Parse(request.KeyValues[AuthorizeDotNetApi.BillingCycles]); //paymentScheduleTypeInterval.unit = (ARBSubscriptionUnitEnum)Enum.Parse(typeof(ARBSubscriptionUnitEnum), request.KeyValues[AuthorizeDotNetApi.BillingInterval], true); //paymentSchedule.interval = paymentScheduleTypeInterval; //paymentSchedule.startDate = DateTime.Parse(request.KeyValues[AuthorizeDotNetApi.StartsOn].ToString()); //paymentSchedule.startDateSpecified = true; //paymentSchedule.totalOccurrencesSpecified = true; //paymentSchedule.totalOccurrences = short.Parse(request.KeyValues[AuthorizeDotNetApi.TotalOccurences].ToString()); //paymentSchedule.trialOccurrencesSpecified = false; subscription.trialAmountSpecified = false; if (request.KeyValues.ContainsKey(AuthorizeDotNetApi.TrialAmount)) { subscription.trialAmount = decimal.Parse(request.KeyValues[AuthorizeDotNetApi.TrialAmount]); subscription.trialAmountSpecified = true; //paymentSchedule.trialOccurrences = short.Parse(request.KeyValues[AuthorizeDotNetApi.TrialBillingCycles]); //paymentSchedule.trialOccurrencesSpecified = true; } //authorize does not allow us to update intervals... //subscription.paymentSchedule = paymentSchedule; using (var webService = new RevStack.AuthorizeDotNet.net.authorize.api.Service()) { webService.Url = request.PostUrl; var response = webService.ARBUpdateSubscription(authentication, id, subscription, null); if (response.resultCode != MessageTypeEnum.Ok) { char del = request.KeyValues[AuthorizeDotNetApi.DelimitCharacter].ToCharArray()[0]; IList <string> list = new List <string>(); for (int i = 0; i < response.messages.Length; i++) { result += response.messages[i].text + del; list.Add(response.messages[i].text); } result = result.TrimEnd(del); gatewayResponse = new GatewayResponse(result, del); gatewayResponse.SubscriptionResponse = list; } else { IList <string> list = new List <string>(); for (int i = 0; i < response.messages.Length; i++) { list.Add(response.messages[i].text); } gatewayResponse = new GatewayResponse(id.ToString()); gatewayResponse.SubscriptionResponse = list; } //if (response.resultCode == MessageTypeEnum.Ok) //{ // char del = request.KeyValues[AuthorizeDotNetApi.DelimitCharacter].ToCharArray()[0]; // for (int i = 0; i < response.messages.Length; i++) // { // result = response.messages[i].text + del; // } // result = result.TrimEnd(del); // gatewayResponse = new AuthorizeDotNetResponse(result, del); // gatewayResponse.SubscriptionId = id.ToString(); //} } return(gatewayResponse); }