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); } }
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) { _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); } }
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); } }