=== Simply.IN ===
Contributors: inspirelabs
Tags: checkout, fast, payments, one-click, conversion
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
WC requires at least: 7.4
WC tested up to: 10.7.0
Stable tag: 6.0.2
License: GPLv3
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Universal one-click checkout addon for WooCommerce — fast, seamless shopping experience without leaving the store page.

== Description ==
Revolutionize your checkout experience with Simply.IN, the ultimate conversion booster for WooCommerce.
Simply.IN is a universal checkout addon that accelerates payments, simplifies the purchase flow, and seamlessly integrates with the Simply.IN buyer profile, allowing shoppers to complete orders in seconds — without leaving the shop page.

Thanks to deep compatibility with the WooCommerce ecosystem, Simply.IN works flawlessly with:
* Standard WooCommerce checkout
* WooCommerce Blocks (Block Checkout)
* Gutenberg
* Popular themes & builders: Astra, Elementor, Avada, Woodmart, Kadence, and more
* Logistics Plugins:
** Flexible Shipping Octolize
** Apaczka Offical Plugin
** DHL Polska Official Plugin
** DHL WooCommerce WPDesk
** DPD WooCommerce WPDesk
** Furgonetka Offical Plugin
** Furgonetka WooCommerce WPDesk
** InPost PL Offical Plugin
** InPost WooCommerce Octolize
Missing your integration?
If you use a theme builder or logistics plugin not listed here, please contact us. We will be happy to prepare a dedicated integration for you.

A universal, frictionless checkout layer

Simply.IN is fully agnostic to payment and logistics providers. It focuses solely on creating a fast, intuitive, and consistent shopping experience. Every visitor in a Simply.IN–enabled store is automatically onboarded into the Simply.IN system.
During future purchases in any other store with our plugin, the shopper can instantly prefill their checkout after entering their email and confirming via SMS or our mobile app.

We support secure, PCI-DSS–compliant storage and autofill of:

* Shipping addresses
* Billing addresses
* APM - parcel machines
* PUDO pickup points
* Preferred delivery & payment methods.
…with more features coming soon.

Fast payments via native PSP integrations

Simply.IN accelerates checkout flows through direct integrations with major payment providers:

* PayU
* Przelewy24 (P24)
* Tpay
* Adyen
* Paynow
* iMoje
* Montonio
…and more available at https://simply.in.

Unified shopping experience for buyers

Customers can view and manage all their purchases through the Simply.IN app or web profile. They can track orders, contact stores, reorder with one tap, and handle all shopping-related tasks in one place.

Simple setup for merchants

After a quick merchant registration, store owners gain access to a dedicated panel showing all transactions processed through Simply.IN.
Plugin installation and configuration are effortless, letting you stay focused on your business.

Benefits of Simply.IN

* Increase conversion rates
* Simplify and speed up the checkout process
* Accelerate customer payments
* Build trust through a consistent shopping profile
* Drive repeat purchases through effortless re-orders
* Stay independent — choose any payment or logistics provider
* Provide a seamless, fast, and modern shopping experience

Simply.IN: Where simplicity meets seamless shopping.

== Installation ==
1. Install the plugin
* Upload the plugin files to the /wp-content/plugins/ directory or install it directly from the WordPress Plugins Marketplace by searching for “Simply.IN”.
* Activate the plugin through the Plugins menu in WordPress.
2. Create your merchant account
* Go to https://merchant.simply.in
* Register or log in to your merchant dashboard.
3. Generate your API key
* In the merchant panel, navigate to Integrations → API Keys.
* Generate a new API key for your store integration.
4. Configure payment provider integrations
* In the merchant dashboard, go to Integrations → Payments.
* Connect your preferred payment providers (e.g., PayU, P24, Tpay, Adyen, Paynow, iMoje, Montonio).
5. Paste your API key in the plugin settings
* Return to your WordPress dashboard: WooCommerce → Settings → Simply.IN.
* Enter the API key generated in the merchant panel.
6. Map your logistics options
* In WooCommerce → Settings → Simply.IN → Logistics, map your delivery methods (couriers, APM machines, PUDO points) to Simply.IN options.
* Save your settings.
7. All set!
* The plugin is now fully activated.
* Your checkout is connected to Simply.IN and ready to provide a seamless, fast shopping experience to your customers.

== Frequently Asked Questions ==
1. Does the plugin work without a Simply.IN account? =
No. An active account and API keys are required. Visit https://merchant.simply.in.
2. Does it support my payment/delivery operator? =
Yes, it works with operators configured in WooCommerce.
3. Is the plugin compatible with WooCommerce blocks? =
Yes, it supports the Checkout Block. For full Block Checkout functionality (additional checkout fields), WooCommerce 8.9 or newer is required. On older WooCommerce versions the classic checkout works fully, but block checkout additional fields are inactive. A dismissable admin notice is displayed when block checkout is detected on a WooCommerce version older than 8.9.

== Hooks for Developers ==

= Actions =

- `do_action( 'simplyin_before_checkout', $cart )`
- `do_action( 'simplyin_after_checkout', $order_id )`

= Filters =

- `apply_filters( 'simplyin_supported_gateways', $gateways )`
- `apply_filters( 'simplyin_shipping_map_args', $args )`

== Translations ==

The plugin is translation-ready (`.pot`). Text domain: `simplyin-checkout`.

== GDPR Compliance ==

Simply.IN processes data according to data minimization principles.
https://www.simply.in/privacy-policy

== Support and Issues ==

- Support email: support@simply.in

== Changelog ==

= 6.0.2 =
* Maintenance release.
* No functional changes.

= 6.0.1 =
* Stabilized BLIK and card payment timeout handling.
* Improved webhook validation for invalid payment status payloads.
* Improved card timeout error logging.
* Removed duplicate BLIK AJAX registration.
* Adjusted shipping cookie flags for HTTPS compatibility.
* Documented ShipX tracking object compatibility decision.
* Removed unused legacy code paths.

= 6.0.0 =
* Security: hardened payment widget postMessage validation and origin checks.
* Security: improved authorization checks for payment AJAX endpoints.
* Security: improved session security by using cryptographically secure session IDs and httponly cookies.
* Security: masked sensitive data such as auth tokens and API keys in plugin logs.
* Security: added missing CSRF protection for widget session AJAX endpoints.
* Security: hardened payment method data unserialization with an allowed classes list.
* Security: improved URL sanitization for server-derived values.
* Declared official compatibility with WooCommerce High-Performance Order Storage (HPOS / Custom Order Tables).
* Replaced direct order meta access with the WooCommerce Order API for HPOS compatibility.
* Fixed duplicate webhook processing that could trigger redundant status synchronization back to Simply.IN.
* Fixed payment failure handling so WooCommerce correctly keeps the customer on the checkout page when payment fails.
* Fixed order notes not being saved when a payment transitions to failed status.
* Fixed multiple PHP 8.x stability issues in payment, provider, session, and synchronization flows.
* Fixed BLIK timeout and error handling so known customer-facing payment errors are returned correctly and logged when needed.
* Fixed Tax ID (NIP) handling for orders placed via WooCommerce Block Checkout.
* Fixed Simply.IN sync cron schedule to run once per day as required by the Simply.IN API.
* Improved background order and user synchronization by processing data in batches to reduce memory usage on larger stores.
* Fixed order sync crashes when an order references a deleted product.
* Fixed payment retry status handling to avoid incorrectly setting previously failed payments to processing.
* Fixed credit card iframe initialization to prevent duplicate or blank payment fields.
* Fixed Block Checkout payment data handling when selected values are stored in order meta instead of POST data.
* Fixed internal cron hook typo and added automatic migration for existing scheduled events.
* Removed unused internal loader code.
* Fixed APM/PUDO carrier point selection in WooCommerce Block Checkout by waiting for the WooCommerce Blocks cart store to confirm the selected shipping rate before applying carrier-specific point data.

= 5.5.38 =
* Improved Tax ID/NIP field compatibility with custom WooCommerce checkout fields.
* Fixed fallback rendering of the Simply.IN payment gateway icon when the payment provider data is unavailable, improving compatibility with Elementor / JetWooBuilder checkout previews.
* Fixed early Simply.IN textdomain loading notice.

= 5.5.37 =
* Fixed "Remember your details with Simply.IN" admin setting being reset after plugin updates. The setting is now preserved correctly across updates. Background sync no longer overwrites the merchant's preference, and a one-time migration normalises any values left in an inconsistent state by plugin versions 5.5.29–5.5.35.

= 5.5.36 =
* Added a dismissable admin notice for WooCommerce managers when Block Checkout is active but WooCommerce is older than version 8.9. Simply.IN's additional checkout fields require WooCommerce 8.9+ and are inactive on older versions. The notice is shown only to users with the manage_woocommerce capability and can be dismissed per-user.
* The Block Checkout Additional Fields API (woocommerce_register_additional_checkout_field) is now used only when available.
* Activated proper validation of plugin requirements (WooCommerce version, required plugins) in the system check.

= 5.5.35 =
* Fixed widget account form validation for stores where WordPress site URL and shop home URL use different base paths or configurations.

= 5.5.34 =
* Use variant thumbnail when available, falling back to parent product image.
* Update SimplyIn button label for incomplete profile state to "Confirm profile".

= 5.5.33 =
* Standardized branding across the plugin by updating all user-facing strings from SimplyIn/SimplyIN to Simply.IN.

= 5.5.32 =
* Improved synchronization of user and delivery data between the widget and WooCommerce checkout, ensuring consistent data restoration on revisit while limiting execution to standard checkout page loads.

= 5.5.31 =
* Fixed "Remember your details with Simply.IN" admin toggle saving incorrect value when other settings were saved without changing it.

= 5.5.30 =
* Added "Requires Plugins: woocommerce" in simplyin.php
* The "Remember your details with Simply.IN" checkbox is now pre-selected by default for all users. A new admin setting allows merchants to disable this behaviour.

= 5.5.29 =
* Restored the previous parcel locker selection logic in block checkout for Octolize and added a fallback to ensure backward compatibility, using setOctolizePickupPoint when available.
* Updated the presentation of the “Remember your details with Simply.IN” field to a reversed option and replaced the toggle switch with a checkbox without changing its behavior.

= 5.5.28 =
* Improved order sync and createOrder handling by adding statusInfo support, updatedAt field, and consistent status and date mapping aligned with the Simply.IN API contract.
* Improved parcel locker selection in block checkout for the InPost WooCommerce Octolize plugin by using the setOctolizePickupPoint function instead of DOM manipulation.
* Moved "Remember your details with Simply.IN" toggle to a separate "Additional Settings" section in the admin panel, below the main settings.

= 5.5.27 =

* Fixed nightly sync incorrectly calling /merchants/setLogisticsProviders (write endpoint) - logistics providers are already read via /plugin-sync/info.
* Code quality improvements and plugin checker fixes.
* Fixed duplicate createOrder API calls when both classic and block checkout hooks fire for the same order in a single request.
* Fixed background sync re-queueing orders that were already exported to Simply.IN.
* Fixed background sync query fetching already-exported orders due to redundant meta_query conditions.
* When Simply.IN API responds with "Order already exists", order is now correctly marked as exported instead of silently ignored.

= 5.5.26 =

* Fixed email field not being moved to the top of the billing form when using Elementor / JetWooBuilder or themes that do not add the field ID as a CSS class.
* Added address description (desc) display for APM parcel machines and PUDO pickup points in the widget.
* Fixed styles and added description label when adding a new parcel locker address.
* Fixed widget resetting to courier after adding a parcel locker (persist delivery type with popup restore).
* Fixed checkout staying on or switching back to courier when parcel delivery is active

= 5.5.25 =

* Fixed DHL Polska native method (dhl_polska_flat_rate) not being recognized as a pickup point when service is set to SERVICEPOINT.
* Added Poczta access point support in the widget with Apaczka provider integration.
* Fixed email field not being moved to the top of the billing form in classic checkout.
* Fixed "New" badge layout in the account creation form - badge now stacks above the logo on small screens.
* Fixed duplicate address entries in the widget by improving address matching and deduplication logic (including pickup points).
* Fixed incorrect shipping handling for mixed carts (physical + virtual products), restoring delivery options (courier and APM/PUDO).

= 5.5.24 =

* Added shipping zone–based mapping for Simply.IN shipping methods.
* Introduced automatic migration of existing global mappings to the new zone-based structure.
* Implemented zone-aware checkout resolution with fallback logic.
* Added labels for parcel machines and pickup points in the widget address list.
* Improved duplicate address detection to prevent adding the same point twice.
* Fixed tab navigation after adding a new address - the widget now opens the correct tab automatically.
* Fixed Apaczka "All providers" delivery method mapping (case-insensitive comparison).
* Fixed purchase button label in block checkout to match the classic checkout.

= 5.5.23 =

* Refactored auto-hide courier delivery option when door delivery is unavailable.

= 5.5.22 =

* Changed the order of loading elements next to the email field.
* Auto-hide courier delivery option when door delivery is unavailable.

= 5.5.21 =

* Fixed Tax ID (NIP) being sent as address ID instead of actual NIP in Billing_Data_DTO.
* Added Tax_Id_Resolver service to resolve NIP from POST and order meta.
* Fixed NIP handling in block checkout (SimplyINBlockCheckoutSaveTaxIdToOrder).
* Ensured firm/business addresses are correctly registered when NIP is provided during account creation.

= 5.5.20 =

* Refactored payment method loading in the block checkout.
* Updated selected payment class names to prevent overwriting.

= 5.5.19 =

* Display Simply.IN info element at the top of the checkout form.
* Remove Simply.IN signet from payment sections.

= 5.5.18 =

* Implemented DHL Polska shipping integration (Official DHL plugin).
* Update translations in admin panel.

= 5.5.17 =

* Improve shipping mapping layout by aligning the form and splitting it into two columns.
* Add caching for Simply.IN payment methods in block-based checkout to reduce loading time.

= 5.5.16 =

* Update provider translations.
* Fix terms text translation with linked placeholders.
* Improve payment timeout handling.
* Skip rendering the “Remember your details” section on order-received by validating the current page URL in the backend.

= 5.5.15 =

* Implemented InPost shipping integration (Octolize plugin).
* Fix issue where prices were not displayed in the widget.
* Update content in new account form.

= 5.5.14 =

* Update "Terms and Conditions" label.

= 5.5.13 =

* Fix widget shipping address creation issue.
* Fix new account form content and styles.

= 5.5.12 =

* Adjust the banner logo dimensions and simplify the "Terms and Conditions" link label.
* Adjust checkout asset loading for better compatibility with cache and optimization plugins.

= 5.5.11 =

* New UI for the Simply.IN account sign-up form.

= 5.5.10 =

* Enable Simply.IN payments on plugin activation.
* Update Documentation.

= 5.5.4 =

* First public release.
* One-click checkout, payment/delivery integrations, blocks.
