Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore

This file was deleted.

14 changes: 13 additions & 1 deletion Bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,14 @@
use JTL\Shop;
use JTL\Smarty\JTLSmarty;
use Plugin\s360_unzer_shop5\paymentmethod\HeidelpayFlexiPayDirect;
use Plugin\s360_unzer_shop5\paymentmethod\HeidelpayGiropay;
use Plugin\s360_unzer_shop5\paymentmethod\HeidelpayHirePurchaseDirectDebit;
use Plugin\s360_unzer_shop5\paymentmethod\HeidelpayInvoice;
use Plugin\s360_unzer_shop5\paymentmethod\HeidelpayInvoiceFactoring;
use Plugin\s360_unzer_shop5\paymentmethod\HeidelpayInvoiceGuaranteed;
use Plugin\s360_unzer_shop5\paymentmethod\HeidelpaySEPADirectDebitGuaranteed;
use Plugin\s360_unzer_shop5\paymentmethod\HeidelpaySofort;
use Plugin\s360_unzer_shop5\paymentmethod\UnzerApplePay;
use Plugin\s360_unzer_shop5\Seeders\Shop4PluginMigrationSeeder;
use Plugin\s360_unzer_shop5\src\ApplePay\CertificationService;
use Plugin\s360_unzer_shop5\src\Controllers\Admin\AdminApplePayController;
Expand Down Expand Up @@ -362,7 +368,13 @@ private function getDeprecatedPaymentMethods(): array
return [
HeidelpayInvoiceFactoring::class,
HeidelpayHirePurchaseDirectDebit::class,
HeidelpayFlexiPayDirect::class
HeidelpayFlexiPayDirect::class,
UnzerApplePay::class,
HeidelpaySofort::class,
HeidelpayGiropay::class,
HeidelpayInvoice::class,
HeidelpayInvoiceGuaranteed::class,
HeidelpaySEPADirectDebitGuaranteed::class,
];
}

Expand Down
14 changes: 14 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [2.0.0] (December 2025)

> [!CAUTION]
> Version 2.0.0 is a breaking change - remember to test and create backup before updating your LIVE environment.

### Added
- EAA Support, https://docs.unzer.com/online-payments/compliance/eaa/
- **Klarna** Payment Method
- **Wero** Payment Method

### Changed
- Migration from Unzer UI Component V1 to Unzer UI Component V2
- Deprecated payment methods have been replaced with new ones, removed or renamed. For full list see [README.md](README.md) for an updated list.

## [1.8.2] (September 2025)
### Added
- added JTL 5.6 compatability
Expand Down
87 changes: 65 additions & 22 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,48 +2,36 @@

Dieses Plugin integriert die folgenden Unzer-Zahlungsarten im JTL Shop:

- Alipay
- ApplePay
- Apple Pay
- Bancontact
- Direktüberweisung
- Kreditkarte und Click to Pay
- EPS
- Giropay
- Google Pay
- iDEAL
- Kreditkarte
- Lastschrift
- SEPA Lastschrift
- Klarna
- PayPal
- Przelewy24
- TWINT
- Direktüberweisung
- SEPA Lastschrift
- Lastschrift
- Ratenkauf
- Rechnungskauf
- SOFORT
- TWINT
- Vorkasse
- WeChat Pay
- (Veraltet) Unzer Ratenkauf
- (Veraltet) Unzer Rechnungskauf
- (Veraltet) Unzer Rechnungskauf (secured)
- (Veraltet) Unzer Lastschrift Gesichert
- Wero

## Installation / Update
### Systemvoraussetzungen
- JTL-Shop 5.0.0+ und dessen Vorraussetzungen
- PHP Version: 7.4 - 8.3
- PHP Version: 7.4 - 8.4
- Die folgenden PHP Erweiterungen
- ext-json
- ext-curl

### Weitere Voraussetzungen
Sie müssen bei Unzer registriert sein.

#### Apple Pay
Wenn Sie Apple Pay auf Ihrer Seite anbieten möchten, müssen Sie außerdem die folgenden Voraussetzungen erfüllen:

- Apple Developer Account mit Teilnahme am Apple Developer Program, siehe Mitgliedschaft auswählen - Support - Apple Developer

> **Ohne Teilnahme am am Apple Developer Program kann Apple Pay im Plugin nicht genutzt werden! Der einfache und kostenlose Apple Developer Account reicht nicht aus!**

### Plugin-Installation
Die Installation des Plugins erfolgt im Standardverfahren für JTL-Shop 5, wie es [hier](https://jtl-devguide.readthedocs.io/projects/jtl-shop/de/latest/shop_plugins/allgemein.html#pluginverwaltung-im-backend-von-jtl-shop) beschrieben ist.

Expand All @@ -55,4 +43,59 @@ Gehen Sie dann in die Pluginverwaltung und betätigen Sie den Update-Button.
## Konfiguration
Nach der eigentlichen Plugin-Installation ist es notwendig, die neuen Zahlungsmethoden zu aktivieren und zu den gewünschten Versandarten hinzuzufügen.

Weitere Informationen und Konfiguration finden Sie in der [Anleitung](https://redirect.solution360.de/?r=docsunzerjtl5)
Weitere Informationen und Konfiguration finden Sie in der [Anleitung](https://redirect.solution360.de/?r=docsunzerjtl5)




---




# Unzer payment methods (JTL Shop 5)

This plugin integrates the following Unzer payment methods into the JTL Shop:

- Apple Pay
- Bancontact
- Cards and Click to Pay
- EPS
- Google Pay
- iDEAL
- Klarna
- PayPal
- Przelewy24
- TWINT
- Direct Bank Transfer
- SEPA Direct Debit
- Direct Debit
- Installment
- Invoice
- Prepayment
- WeChat Pay
- Wero

## Installation/update
### System requirements
- JTL-Shop 5.0.0+ and its requirements
- PHP version: 7.4 - 8.4
- The following PHP extensions
- ext-json
- ext-curl

### Additional requirements
You must be registered with Unzer.

### Plugin installation
The plugin is installed using the standard procedure for JTL-Shop 5, as described [here](https://jtl-devguide.readthedocs.io/projects/jtl-shop/de/latest/shop_plugins/allgemein.html#pluginverwaltung-im-backend-von-jtl-shop).

### Plugin update
To update, upload the latest version of the plugin as you would for an installation (overwriting any existing plugin files if necessary) or follow the instructions in the Extension Store.

Then go to the plugin management section and click the update button.

## Configuration
After installing the plugin, you need to activate the new payment methods and add them to the desired shipping methods.

For more information and configuration details, see the [instructions](https://redirect.solution360.de/?r=docsunzerjtl5).
21 changes: 19 additions & 2 deletions adminmenu/template/partials/_order_detail.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -215,9 +215,26 @@
{else}
{__($hpPayment->getPaymentType()->getResourceName())}
{/if}

<em>({$hpPayment->getPaymentType()->getId()})</em>
</dd>

{if $hpOrder->Zahlungsinfo && !empty($hpOrder->Zahlungsinfo->cIBAN)}
{if !empty($hpOrder->Zahlungsinfo->cIBAN)}
<dt class="col-5">{lang key='iban' section='checkout'}</dt>
<dd class="col-7">{$hpOrder->Zahlungsinfo->cIBAN}</dd>
{/if}
{if !empty($hpOrder->Zahlungsinfo->cBIC)}
<dt class="col-5">{lang key='bic' section='checkout'}</dt>
<dd class="col-7">{$hpOrder->Zahlungsinfo->cBIC}</dd>
{/if}
{if !empty($hpOrder->Zahlungsinfo->cInhaber)}
<dt class="col-5">{lang key='accountHolder' section='checkout'}</dt>
<dd class="col-7">{$hpOrder->Zahlungsinfo->cInhaber}</dd>
{/if}
{if !empty($hpOrder->Zahlungsinfo->cVerwendungszweck)}
<dt class="col-5">{lang key='purpose' section='checkout'}</dt>
<dd class="col-7">{$hpOrder->Zahlungsinfo->cVerwendungszweck}</dd>
{/if}
{/if}
</dl>
</div>
</div>
Expand Down
4 changes: 0 additions & 4 deletions adminmenu/template/partials/_order_item.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,6 @@
{__($hpOrder->getPaymentTypeName())}
{/if}
{/if}

{if $hpOrder->getPaymentTypeId()}
<em>({$hpOrder->getPaymentTypeId()})</em>
{/if}
</td>
<td class="hp-order-table-column hp-amount tright">
{\JTL\Catalog\Product\Preise::getLocalizedPriceString($hpOrder->getOrder()->fGesamtsumme, $hpOrder->getOrder()->Waehrung)}
Expand Down
90 changes: 88 additions & 2 deletions adminmenu/template/settings.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,92 @@
</div>
</div>

{* UI Components *}
<div class="panel panel-default card mb-3">
<div class="panel-heading card-title mx-4 mt-4">
<h3 class="panel-title">{__('hpSettingsUIComponents')}</h3>
</div>

<div class="panel-body card-body">
{* Font Family *}
<div class="hp-admin-option row mb-2">
<div class="hp-admin-option__title col-xs-3 col-3">
<label for="hpSettings-ui-fontFamily">{__('hpSettingsFontFamily')}</label>
</div>
<div class="hp-admin-option__input col-xs-9 col-9">
<input type="text" class="form-control" name="ui-font-family" id="hpSettings-ui-fontFamily" placeholder="{__('hpSettingsFontFamilyPlaceholder')}" value="{if isset($hpSettings.config.ui_fontFamily)}{$hpSettings.config.ui_fontFamily}{/if}" />
<small class="form-text help-block text-muted">{__('hpSettingsFontFamilyHelp')}</small>
</div>
</div>

{* Text Color *}
<div class="hp-admin-option row mb-2">
<div class="hp-admin-option__title col-xs-3 col-3">
<label for="hpSettings-ui-TextColor">{__('hpSettingsTextColor')}</label>
</div>
<div class="hp-admin-option__input col-xs-9 col-9">
<input type="text" class="form-control" name="ui-text-color" id="hpSettings-ui-TextColor" placeholder="{__('hpSettingsTextColorPlaceholder')}" value="{if isset($hpSettings.config.ui_textColor)}{$hpSettings.config.ui_textColor}{/if}" />
<small class="form-text help-block text-muted">{__('hpSettingsTextColorHelp')}</small>
</div>
</div>

{* Brand Color *}
<div class="hp-admin-option row mb-2">
<div class="hp-admin-option__title col-xs-3 col-3">
<label for="hpSettings-ui-BrandColor">{__('hpSettingsBrandColor')}</label>
</div>
<div class="hp-admin-option__input col-xs-9 col-9">
<input type="text" class="form-control" name="ui-brand-color" id="hpSettings-ui-BrandColor" placeholder="{__('hpSettingsBrandColorPlaceholder')}" value="{if isset($hpSettings.config.ui_brandColor)}{$hpSettings.config.ui_brandColor}{/if}" />
<small class="form-text help-block text-muted">{__('hpSettingsBrandColorHelp')}</small>
</div>
</div>

{* Background Color *}
<div class="hp-admin-option row mb-2">
<div class="hp-admin-option__title col-xs-3 col-3">
<label for="hpSettings-ui-BackgroundColor">{__('hpSettingsBackgroundColor')}</label>
</div>
<div class="hp-admin-option__input col-xs-9 col-9">
<input type="text" class="form-control" name="ui-background-color" id="hpSettings-ui-BackgroundColor" placeholder="{__('hpSettingsBackgroundColorPlaceholder')}" value="{if isset($hpSettings.config.ui_backgroundColor)}{$hpSettings.config.ui_backgroundColor}{/if}" />
<small class="form-text help-block text-muted">{__('hpSettingsBackgroundColorHelp')}</small>
</div>
</div>

{* Link Color *}
<div class="hp-admin-option row mb-2">
<div class="hp-admin-option__title col-xs-3 col-3">
<label for="hpSettings-ui-LinkColor">{__('hpSettingsLinkColor')}</label>
</div>
<div class="hp-admin-option__input col-xs-9 col-9">
<input type="text" class="form-control" name="ui-link-color" id="hpSettings-ui-LinkColor" placeholder="{__('hpSettingsLinkColorPlaceholder')}" value="{if isset($hpSettings.config.ui_linkColor)}{$hpSettings.config.ui_linkColor}{/if}" />
<small class="form-text help-block text-muted">{__('hpSettingsLinkColorHelp')}</small>
</div>
</div>

{* Corner Radius *}
<div class="hp-admin-option row mb-2">
<div class="hp-admin-option__title col-xs-3 col-3">
<label for="hpSettings-ui-CornerRadius">{__('hpSettingsCornerRadius')}</label>
</div>
<div class="hp-admin-option__input col-xs-9 col-9">
<input type="checkbox" class="checkbox" name="ui-corner-radius" id="hpSettings-ui-CornerRadius" {if isset($hpSettings.config.ui_cornerRadius)}checked{/if} />
<small class="form-text help-block text-muted">{__('hpSettingsCornerRadiusHelp')}</small>
</div>
</div>

{* Shadows *}
<div class="hp-admin-option row mb-2">
<div class="hp-admin-option__title col-xs-3 col-3">
<label for="hpSettings-ui-Shadows">{__('hpSettingsShadows')}</label>
</div>
<div class="hp-admin-option__input col-xs-9 col-9">
<input type="checkbox" class="checkbox" name="ui-shadows" id="hpSettings-ui-Shadows" {if isset($hpSettings.config.ui_shadows)}checked{/if} />
<small class="form-text help-block text-muted">{__('hpSettingsShadowsHelp')}</small>
</div>
</div>
</div>
</div>

{* Advanced Settings *}
<div class="panel panel-default card mb-3">
<div class="panel-heading card-title mx-4 mt-4">
Expand Down Expand Up @@ -256,8 +342,8 @@
<select class="form-control" name="pqMethodInstalmentInfo" id="hpSettings-pqMethodInstalmentInfo">
<option value="append" {if isset($hpSettings.config.pqMethodInstalmentInfo) && $hpSettings.config.pqMethodInstalmentInfo == 'append'}selected{/if}>{__('hpSettingsAppend')}</option>
<option value="prepend" {if isset($hpSettings.config.pqMethodInstalmentInfo) && $hpSettings.config.pqMethodInstalmentInfo == 'prepend'}selected{/if}>{__('hpSettingsPrepend')}</option>
<option value="before" {if isset($hpSettings.config.pqMethodInstalmentInfo) && $hpSettings.config.pqMethodInstalmentInfo == 'before'}selected{/if}>{__('hpSettingsBefore')}</option>
<option value="after" {if isset($hpSettings.config.pqMethodInstalmentInfo) && $hpSettings.config.pqMethodInstalmentInfo == 'after' || !isset($hpSettings.config.pqMethodInstalmentInfo)}selected{/if}>{__('hpSettingsAfter')}</option>
<option value="before" {if isset($hpSettings.config.pqMethodInstalmentInfo) && $hpSettings.config.pqMethodInstalmentInfo == 'before' || !isset($hpSettings.config.pqMethodInstalmentInfo)}selected{/if}>{__('hpSettingsBefore')}</option>
<option value="after" {if isset($hpSettings.config.pqMethodInstalmentInfo) && $hpSettings.config.pqMethodInstalmentInfo == 'after'}selected{/if}>{__('hpSettingsAfter')}</option>
<option value="replaceWith" {if isset($hpSettings.config.pqMethodInstalmentInfo) && $hpSettings.config.pqMethodInstalmentInfo == 'replaceWith'}selected{/if}>{__('hpSettingsReplace')}</option>
</select>
<small class="form-text help-block text-muted">{__('hpSettingsPqMethodInstalmentInfoHelp')}</small>
Expand Down
4 changes: 1 addition & 3 deletions apple-developer-merchantid-domain-association
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
7b2276657273696f6e223a312c227073704964223a22443031343439453139324330414444363230413
33641443243393834373337433245313930423230333138343431393437433743423736364338344534
323638222c22637265617465644f6e223a313731383839323737333837377d
7b2276657273696f6e223a312c227073704964223a2244303134343945313932433041444436323041333641443243393834373337433245313930423230333138343431393437433743423736364338344534323638222c22637265617465644f6e223a313731383839323737333837377d
Loading