- Shopware 6.7 compatibility: two fixes required to run on 6.7 (no 6.6 regression).
- Plugin install/update: replaced `Connection::PARAM_STR_ARRAY` (removed in Doctrine DBAL 4 / Shopware 6.7) with `ArrayParameterType::STRING`, which works on DBAL 3 and 4. Without this, installing the plugin failed on a 6.7 instance.
- Checkout widget/InPage rendering: the `payment-method.html.twig` override now hooks the `component_payment_method_field` block (present in both 6.6 and 6.7) instead of `component_payment_fieldset_template` (deprecated in 6.6, removed in 6.7). Without this, neither the instalment widget nor the InPage anchor rendered on 6.7.
- InPage payment: fixed a payment failure on custom themes.
- The InPage anchor (the `data-alma-checkout` config div + the Alma SDK loader) is now rendered from the payment-method component (`component/payment/payment-method.html.twig`) instead of the confirm page (`page/checkout/confirm/index.html.twig`).
- Previously, a merchant theme overriding the `page_checkout_confirm` block without calling `parent()` dropped that anchor: the SDK and config were not loaded, the JS plugin had no element to bind to, the form submit was not intercepted, and the order was placed without an Alma payment ("Missing Alma payment ID" failure).
- The anchor is rendered exactly once (on the first eligible Alma payment method), making the InPage flow independent of the theme's page layout.
- IPN webhook: fixed the callback URL on multi-domain shops using a language path prefix.
- The IPN URL sent to Alma (`ipn_callback_url`) is now built from the sales channel domain origin only (`scheme://host[:port]`), dropping any language/path prefix (e.g. `/et`, `/ch`).
- Previously, on a domain such as `https://example.com/et`, the generated URL `https://example.com/et/api/alma/webhook` was intercepted by the Storefront RequestTransformer and resolved outside the `api` scope, causing an HTTP 500 error; the webhook never reached the controller.
- Reconciliation: the Shopware order number is now sent to Alma.
- On payment finalization (`pay()`), the order number is attached to the Alma payment via `order.merchant_reference`, allowing the order to be located from the Alma dashboard.
- Best-effort operation: a failure never interrupts the payment (warning log only).
- Payment flow: the locale is no longer sent to Alma.
- Removed the `locale` field (`fr`) from the payment creation payload sent to the Alma API (`payments.create`).
- The InPage payment iframe no longer forces a locale (`Alma.InPage.initialize`); the `locale` field of the storefront configuration has been dropped.
- As a result, Alma now relies on the customer's browser language (error messages included) instead of forcing French.
- The display widgets (instalment badges on product / cart pages) stay localised in the merchant site language.
- Tests: migrated the `AlmaPaymentHandlerTest` and `OrderAmountFeeExclusionTest` suites to the Shopware 6.6 `AbstractPaymentHandler` API (they still targeted the old 6.5 API). Full backend suite green (255 tests, 0 errors; previously 27 pre-existing errors).
- Added Shopware 6.7 compatibility (the plugin already passed Store review on 6.6):
- Broadened the `shopware/core` and `shopware/storefront` composer constraints to `~6.6.0 || ~6.7.0`.
- Validated end-to-end with `shopware-cli extension validate --check-against highest --store-compliance --full` against Shopware 6.7.10.2 (latest 6.7): 0 errors.
- Confirmed that the migrations done in 1.1.0 (extension of `AbstractPaymentHandler`, `technicalName` on every payment method, Vue 3 strict bindings, attribute-based routing) and in 1.1.2 (removal of `Context::createDefaultContext()` / `SystemSource`, Symfony HTTP client in the commission report) already cover what 6.7 enforces.
- Confirmed that the `ScheduledTaskHandler` constructor already forwards a non-null logger to the parent, matching the new 6.7 requirement.
- Cleaned residual `eslint(@typescript-eslint/no-unused-vars)` warnings in `catch` blocks and one test file.
- Silenced stylelint validation on the third-party Alma SDK CSS bundled under `scss/vendor/_alma-widgets.scss` (no source change to vendor styling).
- Aligned with the Shopware Store automated review feedback (Round #8):
- Removed `!important` declarations from the administration SCSS override (specificity is now carried by a doubled meaningful class).
- Removed two `console.error` calls in the API key detail page; the toast notification flow is now the only error surface.
- Migrated the daily commission report cURL call to the Symfony HTTP client (`http_client`) for proper transport-error handling and testability.
- Removed inline `style=` attributes from the storefront Twig templates (footer banner, PDP widget, checkout data container) and moved the styling to dedicated SCSS classes (`.alma-plugin-info`, `.alma-checkout-data`).
- Added `parent()` calls on every overridden Twig block of the checkout summary total template so the Alma fee row remains additive over the core layout.
- Stopped instantiating `new Context(new SystemSource())` outside CLI / scheduled-task code: `ConfigService::getApiKey()` now takes a `Context` from its caller, threaded through `AlmaClient` and every public method that needs an API client (`getClient`, `getMerchantId`, `fetchPayment`, `partialRefund`, `fullRefund`); the IPN webhook controller receives the `Context` injected by Shopware's `ApiRequestContextResolver`.
- The daily commission report scheduled task handler now uses `Context::createCLIContext()` (the documented CLI / scheduled-task pattern).
- Fixed administration crash on the configuration page when no API key is selected (`sw-entity-multi-id-select` no longer receives a null value).
- Fixed Vue 3 strict event propagation on plan selection and amount fields so the API key dropdown selection and the per-plan min/max amounts are persisted on save.
- Fixed authorization on the Alma fee-plans admin endpoint so the configuration page loads the available plans without a 401 retry.
- Fixed the storefront eligibility widgets so the "Click to find out more" message and the entire widget zone open the Alma details modal as a fullscreen overlay (the Alma SDK CSS was missing from the storefront bundle).
# 1.0.3
- Renamed plugin namespace from AlmaShopwarePayment to SASALMA to match the Shopware Store technical name.
- Changed license from MIT to proprietary to match Shopware Account configuration.