protected void Page_Load(object sender, EventArgs e) { try { if (!Page.IsPostBack) { btnConfirmOrder.Attributes.Add("OnClick", ScriptAvoidDoubleClick(btnConfirmOrder, Localization.GetString("Processing", LocalResourceFile))); lblError.Text = string.Empty; lblError.Visible = false; string message = Localization.GetString("lblConfirmMessage", LocalResourceFile); lblConfirmMessage.Text = string.Format(message, PortalSettings.PortalName); } EmailNavigation nav = new EmailNavigation(Request.QueryString); if (nav.GatewayExit.ToUpper() == "RETURN") { CheckoutControl.Hide(); pnlProceedToEmail.Visible = false; InvokeAwaitingPayment(); } } catch (Exception ex) { Exceptions.ProcessModuleLoadException(this, ex); } }
public void TestProperties() { //this will throw because auth not set and price changed CheckoutControl coc = new CheckoutControl { ProductID = "prod1", VendorID = "Vend1", AppName = "Appname" }; coc.TransactionCompleteEvent += (o, e) => { }; coc.TransactionErrorEvent += (o, e) => { }; coc.StartPurchase(); }
public void EventsTest() { int BeginEvert = 0; int CompleteEvent = 0; int CloseEvent = 0; CheckoutControl coc = new CheckoutControl("22167", "1234567", "ClivesApp"); coc.TransactionBeginEvent += (o, e) => { BeginEvert = 1; }; coc.CheckoutClosed += (o, e) => { CloseEvent = 1; }; coc.TransactionCompleteEvent += (o, e) => { CompleteEvent = 1; }; coc.FireCheckoutCloseEvent(); coc.FireTranactionCompleteEvent(new TransactionCompleteEventArgs()); coc.FireTransactionBeginEvent(); Assert.AreEqual(BeginEvert, 1); Assert.AreEqual(CompleteEvent, 1); Assert.AreEqual(CloseEvent, 1); }
private void ConfirmOrder() { //Adds order to db... OrderInfo order = CheckoutControl.GetFinalizedOrderInfo(); GenerateOrderConfirmation(); // Set order status to "Awaiting Payment"... CheckoutControl.Order = UpdateOrderStatus(order, OrderInfo.OrderStatusList.AwaitingPayment); //Clear basket CurrentCart.DeleteCart(PortalId, StoreSettings.SecureCookie); //Clear cookies ClearOrderIdCookie(); EmailNavigation nav = new EmailNavigation(Request.QueryString) { GatewayExit = "return", OrderID = order.OrderID }; Response.Redirect(nav.GetNavigationUrl()); }
public MainWindow() { InitializeComponent(); //To show control: // Create form instance //set required properties //load into Control Host CheckoutControl checkoutControl = new CheckoutControl(); //Get credentials from vendor dashboard string vendor_id = "12345"; string app_name = "AppName1"; string product_id = "123456"; checkoutControl.VendorID = vendor_id; checkoutControl.ProductID = product_id; checkoutControl.AppName = app_name; //Required checkoutControl.TransactionBeginEvent += CheckoutControl_TransactionBeginEvent; //optional checkoutControl.TransactionErrorEvent += CheckoutControl_TranactionErrorEvent; checkoutControl.TransactionCompleteEvent += CheckoutControl_TransactionCompleteEvent; checkoutControl.CheckoutClosed += CheckoutControl_CheckoutClosed; WBControlHost.Child = checkoutControl; // once form set into Control Host call the StartPurchace method checkoutControl.StartPurchase(); // Transaction Information can be retrieved before control disposed // The same information is passed in the transaction done event ProcessStatus ps = checkoutControl.ProcessStatus; string userCountry = checkoutControl.UserCountry; }
protected void btnProcess_Click(object sender, EventArgs e) { Page.Validate(); if (!Page.IsValid) { return; } PortalSecurity security = new PortalSecurity(); TransactionDetails transaction = new TransactionDetails { CardNumber = security.InputFilter(txtNumber.Text, PortalSecurity.FilterFlag.NoMarkup), VerificationCode = security.InputFilter(txtVer.Text, PortalSecurity.FilterFlag.NoMarkup), ExpirationMonth = int.Parse(ddlMonth.SelectedValue), ExpirationYear = int.Parse(ddlYear.SelectedValue) }; if (transaction.IsValid()) { IAddressInfo shippingAddress = CheckoutControl.ShippingAddress; IAddressInfo billingAddress = CheckoutControl.BillingAddress; //Adds order to db... OrderInfo order = CheckoutControl.GetFinalizedOrderInfo(); GenerateOrderConfirmation(); //Process transaction AuthNetGatewayProvider provider = new AuthNetGatewayProvider(StoreSettings.GatewaySettings); TransactionResult orderResult = provider.ProcessTransaction(shippingAddress, billingAddress, order, transaction); if (!orderResult.Succeeded) { string errorMessage = string.Empty; string localizedReason = string.Empty; // Try to get the corresponding localized reason message localizedReason = Localization.GetString("ReasonCode" + orderResult.ReasonCode, LocalResourceFile); // If a localized message do not exist use the original message if (localizedReason == string.Empty | localizedReason == null) { localizedReason = orderResult.Message.ToString(); } switch (orderResult.ResultCode) { case -5: errorMessage = Localization.GetString("ErrorCardInformation", LocalResourceFile); break; case -4: errorMessage = Localization.GetString("ErrorBillingAddress", LocalResourceFile); break; case -3: errorMessage = Localization.GetString("ErrorPaymentOption", LocalResourceFile); break; case -2: errorMessage = Localization.GetString("ErrorConnection", LocalResourceFile); break; case -1: errorMessage = Localization.GetString("ErrorUnexpected", LocalResourceFile); break; case 2: errorMessage = string.Format(Localization.GetString("ReasonMessage", LocalResourceFile), Localization.GetString("ResponseCode2", LocalResourceFile), orderResult.ReasonCode, ""); CheckoutControl.Order = UpdateOrderStatus(order, OrderInfo.OrderStatusList.AwaitingPayment); CheckoutControl.Hide(); pnlProceedToAuthorize.Visible = false; InvokePaymentFailed(); CurrentCart.DeleteCart(PortalId, StoreSettings.SecureCookie); ClearOrderIdCookie(); break; case 3: errorMessage = string.Format(Localization.GetString("ReasonMessage", LocalResourceFile), Localization.GetString("ResponseCode3", LocalResourceFile), orderResult.ReasonCode, localizedReason); break; case 4: errorMessage = string.Format(Localization.GetString("ReasonMessage", LocalResourceFile), Localization.GetString("ResponseCode4", LocalResourceFile), orderResult.ReasonCode, localizedReason); CheckoutControl.Order = UpdateOrderStatus(order, OrderInfo.OrderStatusList.AwaitingPayment); CheckoutControl.Hide(); pnlProceedToAuthorize.Visible = false; InvokePaymentRequiresConfirmation(); CurrentCart.DeleteCart(PortalId, StoreSettings.SecureCookie); ClearOrderIdCookie(); break; default: errorMessage = string.Format(Localization.GetString("ReasonMessage", LocalResourceFile), Localization.GetString("ErrorUnexpected", LocalResourceFile), orderResult.ReasonCode, localizedReason); break; } lblError.Visible = true; lblError.Text = errorMessage; } else { int portalId = PortalSettings.PortalId; // Set order status to "Paid"... CheckoutControl.Order = UpdateOrderStatus(order, OrderInfo.OrderStatusList.Paid); // Add User to Product Roles OrderController orderController = new OrderController(); orderController.AddUserToRoles(PortalId, order); // Add User to Order Role StoreInfo storeSetting = StoreController.GetStoreInfo(PortalSettings.PortalId); if (storeSetting.OnOrderPaidRoleID != Null.NullInteger) { orderController.AddUserToPaidOrderRole(portalId, order.CustomerID, storeSetting.OnOrderPaidRoleID); } CheckoutControl.Hide(); pnlProceedToAuthorize.Visible = false; lblError.Visible = false; InvokePaymentSucceeded(); CurrentCart.DeleteCart(PortalId, StoreSettings.SecureCookie); ClearOrderIdCookie(); } } else { lblError.Visible = true; lblError.Text = Localization.GetString("ErrorCardNotValid", LocalResourceFile); } btnProcess.Enabled = true; }
protected void Page_Load(object sender, EventArgs e) { // Do we have any special handling? SystempayNavigation nav = new SystempayNavigation(Request.QueryString); switch (nav.GatewayExit.ToUpper()) { case "CANCEL": { InvokePaymentCancelled(); CheckoutControl.Hide(); pnlProceedToSystempay.Visible = false; return; } case "ERROR": case "REFUSED": { InvokePaymentFailed(); CheckoutControl.Hide(); pnlProceedToSystempay.Visible = false; return; } case "RETURN": { SystempaySettings settings = new SystempaySettings(StoreSettings.GatewaySettings); SystempayIPNParameters ipn = new SystempayIPNParameters(Request.QueryString, settings.Certificate); // Here there is no check about the validity of the Systempay response (IPN), // because it's just a message displayed to the customer. // Everything is checked in the NOTIFY case received from Systempay in the SystempayIPN.aspx page. switch (ipn.vads_trans_status.ToLower()) { case "authorised": case "authorised_to_validate": InvokePaymentSucceeded(); break; default: InvokePaymentRequiresConfirmation(); break; } CheckoutControl.Hide(); pnlProceedToSystempay.Visible = false; return; } } if (nav.GatewayExit.Length > 0) { //If the SystempayExit is anything else with length > 0, then don't do any processing HttpContext.Current.Response.Redirect(Common.Globals.NavigateURL(PortalSettings.ActiveTab.TabID), false); return; } // Continue with display of payment control... if (Page.IsPostBack == false) { SystempaySettings settings = new SystempaySettings(StoreSettings.GatewaySettings); if (!settings.IsValid()) { lblError.Text = Localization.GetString("GatewayNotConfigured", LocalResourceFile); lblError.Visible = true; pnlProceedToSystempay.Visible = false; return; } btnConfirmOrder.Attributes.Add("OnClick", ScriptAvoidDoubleClick(btnConfirmOrder, Localization.GetString("Processing", this.LocalResourceFile))); string message = Localization.GetString("lblConfirmMessage", LocalResourceFile); lblConfirmMessage.Text = string.Format(message, PortalSettings.PortalName); message = Localization.GetString("systempayimage", LocalResourceFile); systempayimage.AlternateText = message; systempayimage.ImageUrl = settings.ButtonURL; lblError.Text = string.Empty; lblError.Visible = false; } }
private void ConfirmOrder() { Page.Validate(); if (Page.IsValid == false) { return; } // Adds order to db... OrderInfo order = CheckoutControl.GetFinalizedOrderInfo(); IAddressInfo billingAddress = CheckoutControl.BillingAddress; GenerateOrderConfirmation(); CheckoutControl.Hide(); pnlProceedToSystempay.Visible = false; // Set order status to "Awaiting Payment"... CheckoutControl.Order = UpdateOrderStatus(order, OrderInfo.OrderStatusList.AwaitingPayment); // Clear basket CurrentCart.DeleteCart(PortalId, StoreSettings.SecureCookie); // Clear cookies ClearOrderIdCookie(); // Process transaction string urlAuthority = Request.Url.GetLeftPart(UriPartial.Authority); TransactionDetails transaction = new TransactionDetails(); SystempayNavigation nav = new SystempayNavigation(Request.QueryString) { OrderID = order.OrderID, // Return URL GatewayExit = "return" }; transaction.ReturnURL = AddAuthority(nav.GetNavigationUrl(), urlAuthority); // Refused URL nav.GatewayExit = "refused"; transaction.RefusedURL = AddAuthority(nav.GetNavigationUrl(), urlAuthority); // Error URL nav.GatewayExit = "error"; transaction.ErrorURL = AddAuthority(nav.GetNavigationUrl(), urlAuthority); // Cancel URL nav.GatewayExit = "cancel"; transaction.CancelURL = AddAuthority(nav.GetNavigationUrl(), urlAuthority); // IPN URL string language = Request.QueryString["language"]; if (string.IsNullOrEmpty(language)) { language = System.Threading.Thread.CurrentThread.CurrentCulture.ToString(); } transaction.NotifyURL = urlAuthority + TemplateSourceDirectory + "/SystempayIPN.aspx?language=" + language; string messages = Localization.GetString("SystempayButtons", LocalResourceFile); transaction.Buttons = string.Format(messages, StoreSettings.Name); transaction.ShopName = StoreSettings.Name; transaction.Email = billingAddress.Email; SystempayGatewayProvider provider = new SystempayGatewayProvider(StoreSettings.GatewaySettings); provider.ProcessTransaction(CheckoutControl.BillingAddress, order, transaction); }