Exemple #1
0
        protected void lnkbtnSave_Click(object sender, EventArgs e)
        {
            //Update the order status...
            OrderInfo Order = _orderController.GetOrder(PortalId, _customerNav.OrderID);

            if (Order != null)
            {
                int orderStatusID = Convert.ToInt32(ddlOrderStatus.SelectedValue);
                Order.OrderStatusID = orderStatusID;
                Order.Status        = _orderController.GetStatusText(orderStatusID);
                // Update Status Order
                _orderController.UpdateOrder(Order.OrderID, Order.OrderDate, Order.OrderNumber, Order.ShippingAddressID, Order.BillingAddressID, Order.TaxTotal, Order.ShippingCost, Order.CouponID, Order.Discount, true, Order.OrderStatusID, Order.CustomerID);

                // If order is paid
                if (orderStatusID == 7)
                {
                    // Add User to Product Roles
                    _orderController.AddUserToRoles(PortalId, Order);
                    // Add User to Order Role
                    if (StoreSettings.OnOrderPaidRoleID != Null.NullInteger)
                    {
                        _orderController.AddUserToPaidOrderRole(PortalId, Order.CustomerID, StoreSettings.OnOrderPaidRoleID);
                    }
                }

                // If order is canceled
                if (orderStatusID == 6)
                {
                    if (StoreSettings.InventoryManagement)
                    {
                        // Update Stock Products
                        List <OrderDetailInfo> orderDetails = _orderController.GetOrderDetails(Order.OrderID);
                        foreach (OrderDetailInfo detail in orderDetails)
                        {
                            _orderController.UpdateStockQuantity(detail.ProductID, detail.Quantity);
                        }
                    }
                    // Remove User from Roles
                    _orderController.RemoveUserFromRoles(PortalId, Order);
                }

                // Send email
                if (chkSendEmailStatus.Checked)
                {
                    string commentToCustomer = txtCommentToCustomer.Text;
                    if (string.IsNullOrEmpty(commentToCustomer) == false)
                    {
                        Order.CommentToCustomer = commentToCustomer;
                    }
                    SendOrderStatusChangeEmail(Order);
                }

                // Redirect to order list
                _customerNav.OrderID = Null.NullInteger;
                Response.Redirect(_customerNav.GetNavigationUrl(), false);
            }
        }
Exemple #2
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;
        }
Exemple #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            _portalLanguage = PortalSettings.DefaultLanguage;
            string subject          = string.Empty;
            string reason           = string.Empty;
            bool   sendEmail        = false;
            PayPalIPNParameters ipn = new PayPalIPNParameters(Request.Form, Request.BinaryRead(Request.ContentLength));

            _settings        = new PayPalSettings(StoreSettings.GatewaySettings);
            _verificationURL = _settings.UseSandbox ? SandboxVerificationURL : _settings.VerificationURL;
            // Verify payment with PayPal
            PaymentStatus status = VerifyPayment(ipn);

            // What's the user language?
            _userLanguage = Request.QueryString["language"];
            switch (status)
            {
            case PaymentStatus.Payed:
                int portalId = PortalSettings.PortalId;
                // Set order status to "Paid"...
                OrderInfo order = UpdateOrderStatus(ipn.invoice, OrderInfo.OrderStatusList.Paid, _userLanguage);
                // Add User to Product Roles
                OrderController orderController = new OrderController();
                orderController.AddUserToRoles(portalId, order);
                // Add User to Order Role
                StoreInfo storeSetting = StoreController.GetStoreInfo(portalId);
                if (storeSetting.OnOrderPaidRoleID != Null.NullInteger)
                {
                    orderController.AddUserToPaidOrderRole(portalId, order.CustomerID, storeSetting.OnOrderPaidRoleID);
                }
                break;

            case PaymentStatus.Pending:
                // Inform Store Admin
                subject   = Localization.GetString("StorePayPalGateway", LocalResourceFile, _portalLanguage) + Localization.GetString("IPNInfo", LocalResourceFile, _portalLanguage);
                reason    = Localization.GetString("PendingReason_" + ipn.pending_reason, LocalResourceFile, _portalLanguage);
                sendEmail = true;
                break;

            case PaymentStatus.Refunded:
                // Inform Store Admin
                subject   = Localization.GetString("StorePayPalGateway", LocalResourceFile, _portalLanguage) + Localization.GetString("IPNInfo", LocalResourceFile, _portalLanguage);
                reason    = Localization.GetString("ReasonCode_" + ipn.reason_code, LocalResourceFile, _portalLanguage);
                sendEmail = true;
                break;

            case PaymentStatus.Reversed:
                // Inform Store Admin
                subject   = Localization.GetString("StorePayPalGateway", LocalResourceFile, _portalLanguage) + Localization.GetString("IPNInfo", LocalResourceFile, _portalLanguage);
                reason    = Localization.GetString("ReasonCode_" + ipn.reason_code, LocalResourceFile, _portalLanguage);
                sendEmail = true;
                break;

            case PaymentStatus.Unattended:
                // Alert Store Admin
                subject   = Localization.GetString("StorePayPalGateway", LocalResourceFile, _portalLanguage) + Localization.GetString("IPNAlert", LocalResourceFile, _portalLanguage);
                reason    = Localization.GetString("ReasonCode_" + ipn.reason_code, LocalResourceFile, _portalLanguage);
                sendEmail = true;
                break;

            default:
                break;
            }
            // Do we need to send an email to the store admin?
            if (sendEmail)
            {
                if (string.IsNullOrEmpty(reason))
                {
                    reason = ipn.reason_code;
                }
                string paymentType = Localization.GetString("PaymentType_" + ipn.payment_type, LocalResourceFile, _portalLanguage);
                if (string.IsNullOrEmpty(paymentType))
                {
                    paymentType = ipn.payment_type;
                }
                string paymentStatus = Localization.GetString("PaymentStatus_" + ipn.payment_status, LocalResourceFile, _portalLanguage);
                if (string.IsNullOrEmpty(paymentStatus))
                {
                    paymentStatus = ipn.payment_status;
                }
                string emailIPN = Localization.GetString("EmailIPN", LocalResourceFile, _portalLanguage);
                string body     = string.Format(emailIPN, ipn.invoice, ipn.txn_id, paymentType, paymentStatus, reason);
                SendEmailToAdmin(subject, body);
            }
        }
Exemple #4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            _portalLanguage = PortalSettings.DefaultLanguage;
            string subject   = Localization.GetString("StoreSystempayGateway", LocalResourceFile, _portalLanguage) + Localization.GetString("IPNInfo", LocalResourceFile, _portalLanguage);;
            string reason    = string.Empty;
            bool   sendEmail = false;

            _settings = new SystempaySettings(StoreSettings.GatewaySettings);
            SystempayIPNParameters ipn = new SystempayIPNParameters(Request.Form, _settings.Certificate);
            // Verify payment with Systempay certificate
            PaymentStatus status = VerifyPayment(ipn);

            // What's the user language?
            _userLanguage = Request.QueryString["language"];
            switch (status)
            {
            case PaymentStatus.Abandoned:
            case PaymentStatus.Canceled:
            case PaymentStatus.Captured:
                break;

            case PaymentStatus.Authorised:
                int portalId = PortalSettings.PortalId;
                // Set order status to "Paid"...
                OrderInfo order = UpdateOrderStatus(ipn.vads_order_id, OrderInfo.OrderStatusList.Paid, _userLanguage);
                // Add User to Product Roles
                OrderController orderController = new OrderController();
                orderController.AddUserToRoles(portalId, order);
                // Add User to Order Role
                StoreInfo storeSetting = StoreController.GetStoreInfo(portalId);
                if (storeSetting.OnOrderPaidRoleID != Null.NullInteger)
                {
                    orderController.AddUserToPaidOrderRole(portalId, order.CustomerID, storeSetting.OnOrderPaidRoleID);
                }
                // Special case request validation
                if (ipn.vads_trans_status == "AUTHORISED_TO_VALIDATE")
                {
                    sendEmail = true;
                }
                break;

            case PaymentStatus.Expired:
            case PaymentStatus.Refused:
            case PaymentStatus.Pending:
                // Inform Store Admin
                sendEmail = true;
                break;

            case PaymentStatus.Unattended:
                // Alert Store Admin
                subject   = Localization.GetString("StoreSystempayGateway", LocalResourceFile, _portalLanguage) + Localization.GetString("IPNAlert", LocalResourceFile, _portalLanguage);
                sendEmail = true;
                break;

            default:
                break;
            }
            // Do we need to send an email to the store admin?
            if (sendEmail)
            {
                string paymentStatus = Localization.GetString("PaymentStatus_" + ipn.vads_trans_status, LocalResourceFile, _portalLanguage);
                if (string.IsNullOrEmpty(paymentStatus))
                {
                    paymentStatus = ipn.vads_trans_status;
                }
                string emailIPN = Localization.GetString("EmailIPN", LocalResourceFile, _portalLanguage);
                string body     = string.Format(emailIPN, ipn.vads_order_id, ipn.vads_trans_id, ipn.vads_page_action, paymentStatus, ipn.vads_auth_result, ipn.vads_payment_error);
                SendEmailToAdmin(subject, body);
            }
        }