Example #1
0
        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);
            }
        }
Example #2
0
        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();
        }
Example #3
0
        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);
        }
Example #4
0
        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;
        }
Example #6
0
        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;
        }
Example #7
0
        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;
            }
        }
Example #8
0
        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);
        }