= 3.5.9 =
* Fix: Multi-currency — the approximate CNY (¥) estimate now also appears next to the shipping, cart fee, and tax lines on the cart and checkout (classic and the WooCommerce Checkout block), and correctly includes tax when prices are displayed inclusive of tax.

= 3.5.8 =
* Fix: WeChat Pay, Alipay, and UnionPay now appear and work on the WooCommerce Checkout block again (they were missing from the block checkout due to a packaging issue). Classic checkout was unaffected.
* Fix: When a payment fails, customers can now retry it from the order-pay page (My Account → Orders) — WeChat Pay and Alipay are shown there instead of "no available payment methods."
* Fix: LifterLMS — after paying with WeChat Pay or Alipay, students are taken straight to their course success page instead of being left on the payment-confirmation screen.
* Improvement: Consistent WeChat Pay, Alipay, and UnionPay icon sizing on the WooCommerce Checkout block.

= 3.5.7 =
* Fix: UnionPay now works on the classic checkout, not just the Checkout block — the card field appears and the payment completes. (Previously it stalled with no card field and left the order unpaid.) WeChat Pay and Alipay are unchanged.
* Fix (security): The UnionPay card step now keeps its after-payment redirect on your own site.
* Improvement: The WeChat Pay, Alipay, and UnionPay icons now show at a consistent size and line up with their labels at checkout.

= 3.5.6 =
* Improvement (Stripe webhooks): The `payment_intent.succeeded` webhook now acknowledges Stripe immediately and completes the WooCommerce order in the background via Action Scheduler, instead of performing the Stripe API round-trip inline before responding. This keeps the webhook response sub-second, so a burst of deliveries (or a temporarily slow response) can no longer tie up PHP-FPM workers or push Stripe into retry escalation — the failure mode that can cascade on shared hosting. Order completion is unchanged and idempotent (the background worker re-checks the order before completing, so duplicate deliveries and retries are safe), the existing 15-minute reconciliation sweep remains as a fallback, and sites without Action Scheduler automatically fall back to the previous inline behaviour.

= 3.5.5 =
* Fix (translations): The plugin's translations never loaded. The text domain loader used `china-payments` while the plugin header, .pot, all strings, and every translate.wordpress.org pack use `wp-stripe-global-payments` — so the mismatched call loaded nothing. Additionally, only the .pot template shipped in /languages/. All 13 community translations from translate.wordpress.org (Danish, German, German-formal, Spanish-CL, Spanish-ES, French-BE, French-FR, Italian, Japanese, Dutch, Portuguese-PT, Swedish, Chinese-CN) are now bundled and load correctly for the matching site language; newer community updates from wp-content/languages/plugins/ still take precedence automatically.
* Fix (Stripe webhooks): Automatic webhook-endpoint creation failed on every connected Stripe account. After Stripe Connect, the plugin calls `webhookEndpoints->create()`, but it omitted the `api_version` parameter that Stripe REQUIRES when creating an endpoint on a connected account ("When creating an endpoint on a connected account, you must specify 'api_version'."). The error was caught and logged, so Connect appeared to succeed, but no `payment_intent.succeeded` / `charge.succeeded` webhook was ever registered — payment confirmation then fell back to the 24-hour cron instead of completing orders in real time. Now pins `api_version` to the bundled Stripe library version so the endpoint is created successfully.
* Fix (admin JS crash): Uncaught TypeError "Cannot read properties of undefined (reading 'first_name')" in the admin marketing-notifications component. The component's REST response does not include a `current_user` field, but its Underscore template read `data.current_user.first_name` without a guard. The throw crashed the entire admin JS bundle, which blocked the Stripe Connect connect-button from wiring up. The controller now defaults `current_user` to an empty object so the template renders safely.
* Improvement (localization): "Chinese localization" (and any forced storefront locale) now covers the ENTIRE storefront, not just a 12-string overlay. The feature now forces the WordPress frontend locale so WordPress loads the full official translation set — WP core, WooCommerce, WooCommerce Blocks, the active theme, and the plugin's own strings — with the plugin's curated overrides still applied on top. New `storefront_locale` setting lets merchants force any installed locale (e.g. fr_FR, es_ES, ja_JP), not only Chinese; leaving it empty preserves the legacy zh_CN behaviour. Admin remains in the site language.

= 3.5.4 =
* Build: Cleaner customer ZIP — `phpunit.xml.dist`, `phpcs.xml.dist`, `phpstan.neon`, `playwright.config.js`, `.wp-env.json`, and `docs/MATRIX.md` no longer ship inside the plugin. All tests + dev tooling now live in our internal testing-suite repo. Customer-facing plugin code is byte-identical to 3.5.3.

= 3.5.3 =
* Fix: Correct Stripe minor-unit conversion for 9 PaymentIntent.amount sites. `intval( floatval( $amount ) * 100 )` could silently truncate $X.99 amounts by 1 cent (PHP float drift). Now uses `ChinaPayments\Core\CurrencyHelper::to_stripe_amount()` with round-half-up + full Stripe 0-/2-/3-decimal currency map.
* Fix: Stripe webhook now returns proper HTTP 400 on unsigned / invalid-signature payloads (was silently HTTP 200, blocking Stripe retries). Switched to `new WP_REST_Response( $body, $status )` instead of the no-op `http_response_code()`.
* Fix: Webhook catches `\Stripe\Exception\SignatureVerificationException` explicitly — returns 400 instead of 500 on bad signatures.
* Security: Migration AJAX handler now verifies a `check_ajax_referer()` nonce in addition to its existing capability check.
* i18n: Two `__('Order')` calls in the WooCommerce gateway were missing the text domain; one `__()` call in the payment-gateway REST file had a stray third argument — both corrected.

= 3.5.2 =
* Compat: WP 7.0 readiness (Tested up to 7.0).
* Compat: Declared HPOS (High-Performance Order Storage) compatibility for WooCommerce 8.x+.
* Fix: UnionPay icon max-width set to 128px to match its native aspect ratio at checkout.

= 3.5.1 =
* Fix: Stripe webhook payload reading + hardened webhook security.

= 3.5.0 =
* Added UnionPay.
* Added Optimizations for checkout localization currency display. 

= 3.4.2 =
* Update Freemius SDK. 

= 3.4.1 =
* Added improved methods for payment confirmation on WooCommerce, including cron checks for the first 24 hours after payment.
* Updated Stripe library. 
* Update Freemius SDK. 

= 3.4.0 =
* Update Freemius SDK. 

= 3.3.9 =
* Translation fixes.

= 3.3.8 =
* Freemius SDK update.
* Translation fixes.

= 3.3.7 =
* Fix to Simple Membership integration. 

= 3.3.6 =
* WooCommerce Gutenberg Block checkout now supported! 
* Update to Freemius SDK. 

= 3.3.5 =
* Fixed conflict with Google SiteKit Plugin. 
* Update to Freemius SDK. 

= 3.3.4 =
* We’ve added the LifterLMS integration! 

= 3.3.3 =
* We’ve added the Simple Membership integration! 
* Updated Freemius SDK. 

= 3.3.2 = 
* WooCommerce integration updates. 

= 3.3.1 = 
* MemberPress compatibility fix. 

= 3.3 = 
* Rebuild of MemberPress integration. 
* Update Freemius SDK. 

= 3.2.3 =
* Updated Freemius SDK to v2.4.5. 

= 3.2.2 =
* Bug fix for Stripe accounts that disconnect from the platform. 

= 3.2.1 = 
* General bug fixes.
* Updated link to documentation. 
* Freemius SDK update to v2.4.4. 

= 3.2.0 = 
* Added Alipay recurring payments via Stripe.
* Bugfix to activating payment methods from settings area in TEST mode.
* Text changes in the UI. 

= 3.1.0 = 
* Made WeChat Pay available in the free version for WooCommerce and Payment Page.
* Implemented platform fee for free version of plugin. 
* Simplified the Settings area and Quick Setup.

= 3.0.2 = 
* Fix for Live Webhook Signing Secret not rendering properly.  

= 3.0.1 = 
* Improved error handling. 

= 3.0 = 
* Completely refactored settings interface and first-time user experience. 
* New and more secure Stripe Connect API. 
* Rebuilt the integration with WooCommerce to be more reliable.
* New integration with Payment Page plugin.
* Payment Buttons and shortcodes deprecated in favor of Payment Page integration. 
* MemberPress deprecated (will be rebuilt in future).
* Some other optimizations have been deprecated. 

= 2.3.6 =
* Updates to the currency conversion API for WooCommerce.
* Added a dropdown indicator icon or the currency selector field. 
* Reset currency conversion every time the form is loaded.
* Fixed a conflict with the Conditional Checkout Fields for WooCommerce plugin. 

= 2.3.5 =
* Updates to ensure the currency conversion API is working on WooCommerce checkout and for fixed amounts on the Payment Buttons. 

= 2.3.4 =
* Bugfix for currency conversion API not showing when logged out of the site in some cases. 

= 2.3.3 =
* Currency conversion API now displays error responses. 
* Bugfix for WooCommerce checkout throwing an integer comma placement error for payments above 1,000 currency units in some cases. 

= 2.3.2 =
* CNY is now available for checking out with WeChat Pay and Alipay on the Payment Buttons.
* CNY is now available for checking out with WeChat Pay + WooCommerce.
* Payment amounts are now handled properly regardless of the WooCommerce Store's currency decimal settings.
* Improved handling for non-decimal currencies with custom payment amounts.  
* New shortcodes for managing default currencies independently for each payment method on the Payment Buttons. 
 
= 2.3.1 =
* Improved error handling for MemberPress. 

= 2.3 =
* Updated MemberPress integration to the Stripe Payment Intents API.
* Ensured the payment flow  is catching all kinds of errors when they occur to help diagnose issues.
* Fixed non-decimal currencies having an issue with the payment button checkout. 
* Updates for Stripe Partners Program.
* Removed notification to reconnect Stripe since the latest update to our Stripe Connect API in June. 

= 2.2.4 =
* Handling some Stripe console errors in certain situations.  

= 2.2.3 =
* Fixed bug for one-time WeChat Pay and Alipay payments not checking for a customer properly in Stripe. 

= 2.2.2 =
* Upgrades to meet Stripe Partners Program requirements 
* Fixed bug for one-time credit card payments not checking for a customer properly in Stripe.  

= 2.2.1 =
* Added notification to reconnect Stripe based on latest Stripe API upgrades. 

= 2.2 =
* Upgraded to Payment Intents API for all payment methods for Payment Buttons and WooCommerce (MemberPress coming next)
* Added activation options for Email functionality (beta)
* Created an option to delete all DB entries on plugin deactivation
* Small change to Freemius SDK

= 2.1.1 =
* Fixed credit card payment form redirect issue
* Fixed currency conversion API bug showing all the time
* Fixed Alipay checkout icon size
* Added improved freemium upgrade flow options

= 2.1 =
* Updated Settings UI
* Currency conversion API now supports WooCommerce checkout
* Bug fixes
* Freemius SDK Update  

= 2.0 = 
Modernized the WP Admin upgrade page, MemberPress integration 

= 1.5.7 =
* Minor updates.

1.5.6 = 
* Fixed an issue with expiring WeChat QR codes.

= 1.5.5 = 
* Improving security and Freemius SDK version updated.

= 1.5.4 = 
* Adapted for WordPress 5.5.

= 1.5.3 = 
* Minor updates and security improvements.

= 1.5.2 =
* Fixed Alipay logo size for WooCommerce checkout.

= 1.5.1 =
* Added Alipay for WooCommerce.
* Designating thank you page for the payment form.
* Improving security and minor fixes.

= 1.5.0 = 
* Minor fixes.

= 1.4.9 = 
* Minor fixes.

= 1.4.8 = 
* Updated Translations.
* Fixed amounts for all payment methods.
* New logos and minor fixes.

= 1.4.7 = 
* WooCommerce integration.
* Alipay and WeChat Pay logos updated.

= 1.4.6 = 
* Minor update.

= 1.4.5 = 
* All JS files are now minified to improve speed.
* Stripe.js now will be called only on the payment page and not on other pages. another page.
* Some console errors were fixed.
* General bug fixes.

= 1.4.4 = 
* Fixing issues related to customer creation, webhooks and console warnings.

= 1.4.3 = 
* Major bug fixes for webhooks.
* Improvements to saving customer data in Stripe.

= 1.4.2 = 
* Mobile UX improvements.
* Shortcode modifications.
* Stripe Connect upgrades.

= 1.4.1 = 
* Fixing webhook issues.

= 1.4 = 
* Improvements in the Payment method forms.

= 1.3.9 = 
* Minor upgrades regarding payment form.

= 1.3.8 = 
* Upgrade with minor changes.

= 1.3.7 = 
* Minor fix and log updates.

= 1.3.6 = 
* Minor updates and bug fixes.

= 1.3.4 = 
* Log improvements and Bug fixes.

= 1.3.3 =
* BIG update!
* Added Stripe Connect.
* Added Currency conversion.
* Added UI checkout text.
* Added Phone number field.
* Creating a Customer in Stripe for payments.
* Error logging.
* Bug fixes.

= 1.3.2 =
* Adding readme info and updating plans.

= 1.3.1 =
* Bug fixing and improved mobile experience.

= 1.2.1 =
* Minor updates.

= 1.1.2 =
* Minor updates.

= 1.1.1 =
* Our first version!
