6.0.3, 2026-06-12
-------------------------------------
- Feature: send the WooCommerce order id as metadata.reference_id on the Conekta order for the Blocks checkout (read from the checkout-draft order at checkout-request time). Classic keeps relying on the reverse conekta-order-id order meta.
- Fix: "Undefined array key instructions" warning during checkout. Gateways read settings via get_option() instead of direct $this->settings[...] access, so configs saved before the instructions field existed fall back to the field default. Affects the cash, bank-transfer and pay-by-bank gateways.

6.0.2, 2026-06-09
-------------------------------------
- Fix: prevent a single paid Conekta order from completing more than one WooCommerce order (duplicate orders on checkout resubmission). The gateway now detects the duplicate via the unique conekta-order-id meta and redirects to the already-paid order.
- Fix: build the Conekta shipping_contact from a single address block — shipping when the customer filled it, otherwise billing as a whole; the contact phone follows the same block.

6.0.1, 2026-06-04
-------------------------------------
- Security: hardened handling of payment method data on the Blocks checkout.

6.0.0, 2026-04-27
-------------------------------------
- BREAKING: Card payments migrated from the Card tokenizer SDK component to the Integration SDK component. Conekta order is pre-created at iframe-mount time and updated on every cart change; process_payment only validates the already-paid order.
- Feature: New endpoint POST /conekta/v1/checkout-request (also via WC AJAX conekta_checkout_request) that creates the Conekta Integration order on first call and PUTs line_items/discount_lines/shipping_lines on subsequent calls. customer_info and currency set once at creation.
- Feature: Amount-mismatch guard in process_payment — requires payment_status='paid' AND conekta_order.amount === wc_total*100 before completing the WC order.
- Feature: MSI passed via the Integration checkout config (monthly_installments_enabled defaults to false; when enabled, monthly_installments_options ships the configured plazos).
- Removal: All custom 3DS handling — the Integration SDK runs 3DS internally. Dropped threeDsHandler, custom 3DS iframe, create_3ds_order REST endpoint, three_ds_enabled/three_ds_mode properties, get_companies_api_instance helper.
- Removal: JS no longer scrapes the DOM or ships cart/billing/shipping data. Request body is { nonce }; server reads WC()->cart + WC()->customer (kept in sync by WC's update_order_review in classic and wc/store/v1/cart/update-customer in blocks).
- Removal: Fragment system (#conekta-cart-data, ckpg_build_conekta_cart_snapshot, woocommerce_update_order_review_fragments filter).
- Removal: assets/styles.css (only had 3DS slide-in/out animations) and its enqueue in conekta_cash_block_gateway.php.
- Cleanup: conekta_settings localized to classic JS reduced from 11 keys to 5. Blocks conekta_data similarly trimmed.
- Cleanup: Token + MSI hidden fields in payment_fields() replaced by a single conekta_order_id hidden field.
- Compat: WooCommerce Blocks checkout migrated to the same flow — paymentMethodData is now { conekta_order_id }.
- Tests: PHPUnit trimmed of legacy 3DS/MSI/token tests; 105 tests / 226 assertions pass against the Mockoon sandbox.
- Net diff vs 5.4.14: ~ -1000 lines.
5.4.15, 2026-05-25
-------------------------------------
- Fix: ckpg_build_tax_lines now reads tax_total/shipping_tax_total from WC_Order_Item_Tax objects (WooCommerce 3.0+), so IVA over items and shipping is reported correctly to Conekta instead of being collapsed into a "Round Adjustment" line


5.4.14, 2026-04-10
-------------------------------------
- Fix: Webhook order.paid/order.expired now uses wc_get_order() with fallback lookup by conekta-order-id meta, fixing HPOS compatibility and 3DS temp order mismatch
- Fix: validate_reference_id now rejects empty, non-numeric, zero, and negative values
- Enhancement: Optimized WordPress.org SVN deployment — exclude dev files, add --delete for clean sync, use --no-dev for composer, and shallow SVN checkout to skip historical tags
- Enhancement: Reduced CI log noise with quiet flags on svn, rsync, and apt-get commands

## [5.4.13]() - 2026-04-10
- Enhancement: Optimize WordPress.org SVN deployment — exclude dev files, add `--delete` for clean sync, use `--no-dev` for composer, and shallow SVN checkout to skip historical tags
- Enhancement: Reduce CI log noise with quiet flags on svn, rsync, and apt-get commands
5.4.12, 2026-04-10
-------------------------------------
- Feature: Full support for dynamic pricing plugins (Advanced Dynamic Pricing and Discount Rules)
- Feature: Three discount sources for Conekta: native coupons (coupon), fee-based (campaign), price-level (campaign)
- Feature: line_items use original regular_price; dynamic discounts go to discount_lines for visibility
- Fix: 3DS classic checkout recalculates cart so dynamic pricing hooks fire before order creation
- Fix: 3DS order uses cart subtotal/total instead of catalog prices
- Fix: Cart fees (negative fees from dynamic pricing) copied to 3DS WC order
- Enhancement: Fragment system keeps JS conekta_settings in sync after checkout AJAX refreshes
- Enhancement: Classic checkout JS sends discount_lines in 3DS request
- Enhancement: Price-level discount detection across all 6 payment gateways
- Tests: 40 PHPUnit tests, 127 assertions

5.4.11, 2026-03-30
-------------------------------------
- Fix: Resolved fatal error when plugin is activated without API key configured by moving 3DS company fetch inside api_key guard

5.4.10, 2026-03-27
-------------------------------------
- Security: Added CSRF protection to the WC AJAX 3DS order endpoint via nonce verification
- Security: Nonce is now generated in PHP and passed to Classic and Blocks checkout scripts, then verified server-side before processing

5.4.9, 2026-03-25
-------------------------------------
- Fix: Resolved 404 errors on checkout and 3DS endpoints when WordPress is installed in a subdirectory
- Fix: Replaced hardcoded URLs with dynamic WordPress functions (WC_AJAX::get_endpoint and rest_url) for Classic and Blocks checkout

5.4.8, 2025-11-25
-------------------------------------
- Fix: Resolved critical issue where discount_lines were not being sent to Conekta in 3DS orders
- Fix: Coupons now correctly apply to orders created during 3DS authentication flow
- Enhancement: Added automatic coupon detection and application from WooCommerce cart for both Classic and Blocks checkout
- Enhancement: Implemented intelligent fallback mechanism to capture discounts when frontend data is unavailable
- Enhancement: Improved discount handling consistency between WooCommerce Blocks and Classic checkout with 3DS enabled

5.4.7, 2025-11-12
-------------------------------------
- Fix: Improved shipping method handling in classic checkout by prioritizing conekta_settings
- Fix: Enhanced fallback logic for label and cost extraction in shipping information
- Enhancement: Added shipping information handling in classic checkout script

5.4.6, 2025-10-17
-------------------------------------
- Chore: Re-release of the plugin to address deployment configuration

5.4.5, 2025-10-15
-------------------------------------
- Feature: Added BBVA Pay by Bank (Pago Directo) payment method support
- Feature: Automatic device detection for payment redirect (desktop uses web URL, mobile uses deep link)
- Feature: Added order expiration configuration in minutes (10-1440 min) for Pay by Bank
- Enhancement: Automatic payment window opening with intelligent fallback for blocked popups
- Enhancement: Improved user experience with seamless BBVA payment flow

5.4.4, 2025-10-13
- Fix: Resolved issue where classic checkout was not sending product names correctly in 3DS validation
- Fix: Eliminated 'Temporary 3DS validation' placeholder appearing in classic checkout orders
- Enhancement: Classic checkout now sends real cart item data (product names, quantities, totals) to Conekta API
- Enhancement: Improved cart data handling consistency between WooCommerce Blocks and Classic checkout
- Enhancement: Added fallback mechanism to retrieve cart data from WooCommerce session when not provided

5.4.3, 2025-09-26
-------------------------------------
- Fix: Resolved shipping_lines amount not being sent correctly for credit card payments
- Fix: Corrected double conversion to cents issue that caused incorrect shipping amounts
- Enhancement: Improved shipping data capture from both WooCommerce Blocks and Classic checkout
- Enhancement: Added comprehensive shipping method support for credit card payment flows
- Enhancement: Better consistency between payment methods for shipping cost handling

5.4.2, 2024-09-15
-------------------------------------
- Enhancement: Updated Conekta PHP SDK to v7.0.5 and refactored to use new SDK methods.

5.4.1, 2024-09-05
-------------------------------------
- Fix: Classic checkout now properly supports 3D Secure (3DS) functionality

5.4.0, 2024-08-28
-------------------------------------
- Feature: Added 3D Secure (3DS) v2 support for enhanced payment security
- Feature: Improved fraud prevention measures with latest 3DS authentication
- Enhancement: Better compatibility with modern payment security standards

5.3.0, 2025-08-06
-------------------------------------
- Fix: WooCommerce Blocks now correctly update payment amount when coupons are applied or removed
- Fix: Monthly installments (MSI) now calculate correctly with discounted totals in Blocks checkout

4.0.3, 2024-02-13
-------------------------------------
- Fix status orders, new orders are created with status "pending payment" and not "on-hold"

4.0.2, 2024-01-24
-------------------------------------
- Fix error when creating order with empty shipping contact

4.0.1, 2024-01-23
-------------------------------------
- Fix error when create charge in php 7.4

4.0.0, 2024-01-23
-------------------------------------
- Update conekta-php library
- Checkout Blocks compatibility.
- Updated to the new redirected checkout process: Conekta Component.
- Simplified integration process using one API key for all payment methods.

3.7.7, 2023-12-05
-------------------------------------
- fix shipping lines amount

3.7.6, 2023-11-14
-------------------------------------
- supports order.expired and order.cancelled for changing order status

3.7.5, 2023-04-28
-------------------------------------
- Remove tests on lib conekta

3.7.3, 2023-04-27
-------------------------------------
- Fix error when create charge in php 7.4

3.7.2, 2023-04-24
-------------------------------------
- Update version

3.7.1, 2023-04-18
-------------------------------------
- Update conekta-php library

3.7.0, 2022-02-15
-------------------------------------
- Homologation with Wordpress standards

3.0.8, 2020-06-19
-------------------------------------
- Fix problem whit amount in discount_lines

3.0.7, 2020-05-30
-------------------------------------
- Fix problem whit amount -1
- Fix problem whit reference oxxo pay

3.0.6, 2020-01-10
-------------------------------------
- Fix problem with amount -1

3.0.5, 2019-08-10
-------------------------------------
- Updated images for Conekta Payments

3.0.4, 2018-04-11
-------------------------------------
- Fix for error token already used

3.0.3, 2018-01-10
-------------------------------------
- Update PHP Lib compatible with PHP 7+

3.0.2, 2017-11-30
-------------------------------------
- Custom instructions and description for Oxxo and Spei payment
- Order info in email templates

3.0.1, 2017-09-09
-------------------------------------
- Bundle CA Root Certificates

3.0.0, 2017-08-21
-------------------------------------
- Compatibility with WooCommerce 3
- Correction in access to order properties