=== MakeMeHappy QR Code ===
Contributors: makemehappysk
Donate link: https://makemehappy.sk/donate/
Tags: woocommerce, qr code, bank transfer, pay by square, payments
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Payment QR codes for WooCommerce orders and customer emails, including PAY by square. Free and translation-ready.

== Description ==

MakeMeHappy QR Code adds a payment QR image to the order received page for unpaid WooCommerce Direct bank transfer (BACS) orders. You can also include it in customer HTML emails for pending or on-hold orders.

All plugin features are free. No registration number, activation key or plugin license purchase is required. There is no custom update server or telemetry. QR image generation uses the external services documented below. QR payment is enabled by default and automatically uses the selected service once bank details are configured. A dismissible information box explains this in the settings.

* PAY by square for Slovak IBAN accounts and EUR orders, generated by Profit365.
* SPAYD and SEPA EPC modes retained from the earlier plugin; images generated by QR Server. SEPA EPC requires EUR. Bank application support varies by format.
* Select a bank account from the existing WooCommerce BACS accounts.
* Optional variable symbol from the order number (up to 10 digits, PAY by square/SPAYD).
* Payment message with {order_number} and {site} placeholders.
* Image sizes: 64, 128, 256 or 512 pixels.
* Translation-ready English interface; directory translations are delivered by WordPress language packs.
* WooCommerce High-Performance Order Storage (HPOS) support.

The plugin does not execute payments or confirm receipt of funds. Customers should check the recipient and amount in their banking application. The store must reconcile payments as usual. External image availability and email image loading depend on the provider and email client. A QR in an already sent email is static and cannot reflect later order changes or payments.

== External services ==

This plugin connects to external image services as its core QR-generation functionality. Activating it with QR payment enabled and valid bank details allows QR images to load automatically on eligible order pages and, if enabled separately, in customer emails. There is no separate external-services checkbox. An information box at the top of WooCommerce > Settings > QR payment explains the service and data transfer; dismissing it only saves a display preference for the current administrator and site. Turn off Enable QR payment to stop new QR output. Existing saved values of that main switch are respected. The obsolete mmh_qr_external_consent option from the earlier unpublished 1.1.0 test build no longer controls output. The selected format determines the service. There is no automatic switch to a different service or format on failure. No account credentials are required by this plugin for either image endpoint.

When an order page or customer email loads the QR image, the browser or email proxy contacts the provider directly over HTTPS. The plugin does not download remote PHP, JavaScript or CSS. Disabling QR payment stops new QR output; it cannot recall images in previously sent emails.

= Profit365 (PAY by square) =

Endpoint: https://services.profit365.eu/API/QR/PayBySquare.png

Purpose: generate a PAY by square payment image for a Slovak IBAN and EUR amount.
Sent data: recipient IBAN and BIC, amount, currency, current date as due date, optional variable symbol derived from the order number, payment message and requested image size. The default message contains the order number and site hostname. The requesting browser/proxy also exposes its IP address and usual HTTP metadata to the service. The image uses a no-referrer policy where the client supports it.

Service documentation: https://www2.profit365.eu/services/qr-generator/
Provider terms: https://www.profit365.eu/sk/sk/obchodne-podmienky
Provider data security information: https://www.profit365.eu/sk/sk/bezpecnost
Provider service agreement: https://www.profit365.eu/sk/sk/zmluva-o-poskytovani-sluzieb

= QR Server / goQR.me (SPAYD and SEPA EPC) =

Endpoint: https://api.qrserver.com/v1/create-qr-code/

Purpose: turn the selected SPAYD or SEPA EPC payment payload into a QR image.
Sent data: payment payload (recipient IBAN/BIC, amount, currency, payment message, optional variable symbol for SPAYD, recipient name for SEPA EPC) and requested image size. The browser/proxy also exposes its IP address and HTTP metadata. The plugin does not add the customer's name, postal address or email to either service request. Administrators should not include private customer details in the payment message or custom order numbering.

Documentation: https://goqr.me/api/
Terms: https://goqr.me/legal/tos-api.html
Privacy: https://goqr.me/de/rechtliches/datenschutz-api.html

== Installation ==

1. Install and activate WooCommerce, then MakeMeHappy QR Code.
2. Configure Direct bank transfer and its bank account details under WooCommerce > Settings > Payments.
3. Open WooCommerce > Settings > QR payment. Select the matching account and format.
4. Read the external-service information box. QR payment is enabled by default; use Enable QR payment to switch it on or off. Closing the box does not change payment settings.
5. Configure the payment message, size and optional customer email output, then save.
6. Place a test bank transfer order. Scan the QR code and verify the recipient, currency, amount and reference before making the plugin available to customers.

== Frequently Asked Questions ==

= Does it require a license key? =

No. There is no license activation or registration screen. Donations are optional.

= Can I upgrade from 1.0.2? =

Yes. Back up your site, then replace the existing plugin using this ZIP. The folder and main file remain makemehappy-qr-code/makemehappy-qr-code.php. Existing mmh_qr_* options and legacy values inside woocommerce_bacs_settings are read as fallbacks; bank accounts and orders are not deleted. Saving QR settings writes new makeqrco_* options, which take precedence over the old standalone options and then the legacy BACS values. The QR payment tab is the single place to edit QR settings; the BACS screen links to it.

After upgrading, QR uses the main Enable QR payment setting without another activation step. Version 1.1.0 does not contact the former update endpoint and does not read or modify WordPress update transients or alter the built-in update process. Directory updates depend on publication under this same slug; the ZIP does not itself publish the plugin or push updates to existing stores.

Plugin functions, options, hooks, script handles and AJAX actions now use the distinctive makeqrco prefix. Custom integrations using the former mmh_qr_* filters must switch to their makeqrco_* equivalents. Old settings remain readable as described above.

= How are translations installed? =

WordPress automatically loads available language packs for the makemehappy-qr-code text domain. Translation files are not bundled in the plugin ZIP. Slovak and Czech source translations are prepared for contribution to translate.wordpress.org after approval; until a language pack is published or installed separately, the interface uses English.

= Why is no QR displayed? =

Check the Enable QR payment setting, selected account, IBAN checksum, BIC, order status, positive total and currency. PAY by square requires SK/EUR; SEPA EPC requires EUR. The plugin does not silently choose another account or format. QR output is omitted for paid, completed, cancelled, failed and refunded orders, other payment methods, administrator emails and plain-text emails. Clients may block external images. Standard WooCommerce bank transfer instructions remain available.

= Does it run without WooCommerce? =

WooCommerce is required for settings and order output. Without WooCommerce the plugin does not register its payment hooks.

== Screenshots ==

1. PAY by square on an unpaid bank transfer order in a demonstration store.
2. Payment QR code in a customer HTML order email.
3. Slovak QR payment settings with the dismissible external-service information box.

== Changelog ==

= 1.1.0 =
* Removed the custom updater and all license-validation code; all functions remain free.
* Added a dismissible external-service information box and service documentation; QR generation works automatically when QR payment is enabled.
* Preserved plugin identity, bank accounts and settings from 1.0.2.
* Consolidated QR settings to avoid conflicting values across settings screens.
* Restricted QR output to authorized order views and unpaid customer orders.
* Added IBAN checksum and BIC validation; no silent account or format fallback.
* Corrected SEPA EPC field order and SPAYD BIC formatting.
* Added translation-ready English source strings, GPL license and HPOS declaration.
* Standardized plugin identifiers on makeqrco, with read-only compatibility for old settings.
* Removed all update-cache handling and manual translation loading; language packs are managed by WordPress.

= 1.0.2 =
* Earlier standalone release with external QR image generation and a custom updater.

== Upgrade Notice ==

= 1.1.0 =
Free release without license activation or custom updates. Existing main QR settings remain. QR generation works automatically without a separate external-services checkbox.
