Skip to end of metadata
Go to start of metadata


Voraussetzungen

Sie brauchen unbedingt einen aktiven PAYONE – Account. Wenn Sie noch keinen Account haben, kontaktieren Sie uns bitte.

Installation des Plugins

Sie haben 2 Möglichkeiten unser Plugin zu installieren:

Installation via Composer

Wechseln Sie in das Root-Verzeichnis Ihrer Magento 2-Installation und führen Sie die folgenden Befehle aus:

composer require payone-gmbh/magento-2
php bin/magento setup:upgrade
php bin/magento setup:di:compile
php bin/magento cache:clean

Konfiguration im PAYONE - Portal

Um den Transaktionsstatus an die richtige Adresse zu senden, melden Sie sich bitte im PAYONE Merchant Interface (PMI) an.


Unter Konfiguration → Zahlungsportale → IHR_PORTAL → Erweitert → TransactionStatus URL tragen Sie bitte folgende URL ein:

<SHOPURL>/index.php/payone/transactionstatus

Bitte belassen Sie die Hash-Prüfung auf md5, um eine korrekte Kommunikation zwischen PAYONE und dem Shop zu gewährleisten.

Additional Response-data

Setzen Sie unter General, die Additional Response-data sowohl für Live als auch für Test auf "on".

Konfiguration im Magento 2 - Admin

  • Klicken Sie unter PAYONE → Allgemein

  • Tragen Sie hier bitte Ihre Zugangsdaten, aus dem PMI, ein:

Wir empfehlen dringend, maximal 5 Zeichen als Präfix zu verwenden. Ist kein Refentenznummernpräfix gesetzt, wird nur die Magento-Bestellnummer übermittelt.

  • Legen Sie fest ob nach einer erfolgreichen Zahlung per "Autorisierung" automatisch eine E-Mail mit der Rechnung an den Kunden senden soll:

Konfiguration der Zahlungsarten

  • Klicken Sie unter PAYONE → Zahlarten


  • Aktivieren/ Deaktivieren Sie die gewünschten Zahlungsarten im Feld "Aktiviert".

Aufgrund von Einschränkungen, die in Magento 2.3.1 eingeführt wurden, sind alle Zahlungsmethoden nach der Erstinstallation standardmäßig aktiv. Bitte stellen Sie sicher, dass Sie alle Zahlungsmethoden, die Sie nicht benötigen, vor dem Start deaktivieren!

Spezielle Anpassungen

Einige Zahlungsarten benötigen spezielle Anpassungen. Die nächsten Punkte sind für Sie nur interessant, wenn Sie die jeweilige Zahlungsart nutzen:

Kreditkarte

Kreditkarte

Wählen Sie unter Kartentyp aus, welche Kreditkarten Sie anbieten wollen.

Das Feld Prüfe Kartenprüfziffer bestimmt, ob die Kreditkartenprüfnummer abgefragt wird.

Aus rein technischer Sicht ist die Abfrage der CVC optional. Die meisten Endkunden sind jedoch an die Abfrage gewöhnt.

PAYONE Lastschrift

PAYONE Lastschrift


Feld

Beschreibung

BIC abfrageBestimmt, ob die BIC im Checkout abgefragt wird. Verwenden Sie diese Konfiguration für eine bessere Kompatibilität mit Bankkonten von außerhalb der DACH-Region.
Prüfe Bankverbindung

Schaltet eine Überprüfung der Bankverbindung mittels "bankaccountcheck"-Aufforderung ein.

Diese Einstellung ist Teil unseres optionalen Risk Management Modul

Liste der unterstützten Kontoländer

Mehrfachauswahl der Länder, aus denen die Zahlungsart Lastschrift unterstützt wird. Die PAYONE Plattform unterstützt derzeit nur Lastschriften für deutsche Bankkonten.

Mandatserteilung aktivieren

Soll der SEPA-Mandatsmanager verwendet werden? Eine Prüfung der Bankverbindung ist obligatorisch. Eine Prüfung gegen die POS-Sperrliste ist nicht möglich.

Download Mandat als PDF

Bei der Auswahl Ja wird nach der Bestellung ein Link angeboten, über den der Endkunde das SEPA-Mandat als PDF-Datei herunterladen kann.

PayPal

PayPal

Mit dem PayPal Express Button entscheiden Sie, ob der PayPal Express Button im Warenkorb angezeigt werden soll.

Amazon Pay

Amazon Pay

Integrationseinstellungen in Seller Central

Bitte tragen Sie im Punkt "Integrationseinstellungen" in Seller Central unter Integrator-URL folgende URL ein: https://gpc-sys.pay1.de/gpc/amazon/1.0/notify - die "Seller URL" kann leer bleiben. Diese URL stellt sicher, dass der Shop alle Benachrichtigungen von Amazon erhält.

Bitte stellen Sie auch sicher, dass Sie alle URLs Ihres Shops als erlaubte Javascript Origin in Seller Central speichern.

  1. Wählen Sie auf der Seller Central-Startseite in der Navigationsleiste oben links "Integration - Integration Central".
  2. Scrollen Sie auf der Seite "Integration Central" nach unten zum Abschnitt "Kunden-ID/Shop-ID(s) verwalten" und klicken Sie auf "Kunden-ID/Shop-ID(s) anzeigen".
  3. Wenn Sie eine bestehende Kunden- oder Shop-ID registriert haben, überprüfen Sie die Konfiguration des ausgewählten Shops. Sie können auf den Link "Bearbeiten" auf der rechten Seite klicken, um die Informationen zu bearbeiten.
  4. Wenn Sie auf die Schaltfläche "Bearbeiten" klicken, können Sie alle Details der Kundenkonfiguration bearbeiten.
  5. Wenn Sie ab Schritt 3 auf den Link "Neue Konfiguration erstellen" oben klicken, können Sie eine neue Kundenkonfiguration erstellen und alle relevanten Informationen angeben.

Abrufen der Konfiguration im Magento-Backend

Um die Zahlungsmethode zu aktivieren, verwenden Sie bitte den Button "get configuration". Dies ruft Ihre Kunden-ID und Verkäufer-ID von unserer Plattform ab. Sie sollten dann die Werte in den entsprechenden Feldern sehen.

Aktivieren Sie die Zahlungsmethode

Bitte beachten Sie, dass Sie nur dann Live-Zahlungen vornehmen können, wenn die Zahlungsmethode für Live-Zahlungen in Seller Central zugelassen ist.

FeldBeschreibungBeispiel
Amazon Client IDZeigt die derzeitige Client ID
Amazon Seller IDZeigt die derzeitige Seller ID
Get configuration

Mit diesem Button erhalten Sie die Konfiguration von PAYONE

Diese Zahlungsart funktioniert nicht, bevor die Konfiguration gespeichert wurde!


Amazon Button Type
  • Amazon Pay (normal) 
  • Pay (smaller)
  • Amazon Pay (smallest)

Amazon Button Color
  • Gold
  • Light grey
  • Dark grey

 

Amazon Mode
  • Automatic (verwendet die Standardsprache)
  • Englisch
  • Deutsch
  • French
  • Italian
  • Spanish

Amazon Mode
  • Always Synchronous
  • Asynchronous on failure
Asynchronous on failure kann eine bessere Konversionsrate haben, kann aber Ihren Arbeitsablauf verkomplizieren.

In manchen Fällen kann es zu einer Interferenz zwischen unserem Plugin und dem Amazon-Plugin im Magento Core kommen. Wenn Sie also ein "seltsames Verhalten" feststellen, wie z.B. das Verschwinden von Amazon-Buttons, können Sie den folgenden Befehl im Magento-Root auszuführen:

php bin/magento module:disable Amazon_Payment
Klarna

Klarna


Die Klarna-Zahlungsmethoden:

  • Klarna Rechnung
  • Klarna Sofort bezahlen
  • Klarna Ratenkauf

sind in einer Klarna Basiszahlungsmethode zusammengefasst.

Ratepay

Ratepay

Ratepay erfordert die Einstellung einer oder mehrerer Shop-IDs. Diese erhalten Sie von Ratepay. Klicken Sie nach dem Hinzufügen auf "Ratepay Shop-IDs aktualisieren". Gültige Shop-IDs werden mit ihrer von Ratepay festgelegten Konfiguration angezeigt.

Apple Pay

Apple Pay

FeldBeschreibung
AktiviertJa/ Nein
TitelName der Zahlart, welcher im Checkout erscheint
Apple Pay Merchant Id

Diesen Wert können Sie dem Apple Developer Portal als "Identifier" Ihrer Merchant ID entnehmen:

Certificate fileLaden Sie bitte die merchant_id.perm Datei hoch. Die Datei finden Sie im Apple Developer Portal.
Private key fileLaden Sie bitte die merchant_id.key Datei hoch. Die Datei finden Sie im Apple Developer Portal.
Private key passwordHier können Sie das Passwort zur Verwendung des Private Keys festlegen
Allowed card typesWählen Sie hier die Kartentypen, die für Apple Pay erlaubt sind. Bitte wählen Sie hier nur die Kartentypen aus, die auch Bestandteil Ihres PAYONE-Vertrags sind.

Neben der Konfiguration in Magento ist für den Betrieb von Apple Pay als Zahlart auch das Einrichten der entsprechenden Zertifikate nötig. Hinweise dazu finden Sie hier: Special Remarks - Apple Pay

Zusätzlich verlangt Apple die Validierung der Shop-Domain für Apple Pay. Folgen Sie dafür den Anweisungen im Apple Developer Portal:

Bearbeiten der Bestellungen

  • Klicken Sie unter PAYONE → Bestellungen

Überblick

Hier finden Sie eine PAYONE-spezifische Bestellübersicht ähnlich der Magento-Bestellübersicht. Neben den Standardinformationen können Sie hier den Zahlungsstatus auf der PAYONE Plattform, die genaue Art der Zahlung (z.B. Kreditkartenmarken) und ggf. den Mahnstatus einsehen. Ein Klick auf Ansicht öffnet die Detailansicht der entsprechenden Bestellung.

Erfassung/ Capture

Vorautorisierte Transaktionen müssen erfasst werden, um den eigentlichen Geldfluss auszulösen. Unter PAYONE → Bestellungen → Bestelldetails → Rechnungsbeleg können Sie mit der Rechnungserstellung den Capture auslösen.

Durch die Auswahl von "Online erfassen" in der oben gezeigten Dropdown-Liste wird die Forderung auf der PAYONE Plattform eingezogen. Wenn Sie das Geld nicht erfassen, aber dennoch eine Rechnung und Forderung erstellen möchten, wählen Sie bitte stattdessen "Offline erfassen".

Teilerfassungen sind ebenfalls möglich, indem Sie einfach die fakturierbare Menge der Artikel anpassen.

Rückerstattung/ Refund

Bereits erfasste Gelder können durch Erstellen einer Gutschrift für eine bestehende Rechnung zurückerstattet werden.

Bitte achten Sie darauf, dass Sie eine Gutschrift innerhalb eines Rechnungsobjektes anlegen, nicht im Auftrag!

Mit Klick auf die Schaltfläche "Refund", wird das Geld an die Zahlungsmethode des Kunden zurückgeschickt. "Refund Offline" erstellt die Gutschrift, löst aber keinen Geldfluss aus.

Teilerstattungen sind nach der gleichen Methode wie bei Teilerfassungen möglich. Sie können auch die Summe der Rückerstattung anpassen, um die Gebühren während der Rückerstattung zu berücksichtigen. Bedenken Sie, dass einige Zahlungsarten darauf angewiesen sind, dass die Artikel im Warenkorb mit der ursprünglichen Bestellung übereinstimmen.

Erweiterte Konfigurationen

Hier finden Sie separate Einstellungsmöglichkeiten, mit den Sie unser Plugin genauer an Ihre Bedürfnisse anpassen können:

Rechnungsinformationen senden

Rechnungsinformationen senden

Unter PAYONE → Allgemein → Send invoicing information aktivieren Sie die Übermittlung von Artikeldaten, um eine Rechnung auf der PAYONE Plattform zu erstellen.

Der Text kann frei gewählt werden und erscheint als dynamischer Text auf der Rechnung bzw. Gutschrift. Es können verschiedene Magento-Variablen als Platzhalter verwendet werden.

Status Mapping

Status Mapping

Unter PAYONE → Allgemein → Status Mapping können die verschiedenen Transaktionsstatus der PAYONE Plattform auf Magento-Bestellstatus abgebildet werden. Wird ein neuer Transaktionsstatus empfangen, wird der entsprechende "Magento-Status" in der Bestellübersicht im Magento-Backend gesetzt. Dies kann für jede Zahlart separat eingetragen werden.

Kreditkarte - CSS Anpassungen

Kreditkarte - CSS Anpassungen

  • Klicken Sie unter PAYONE → Allgemein → Kreditkartenzahlung → Feldkonfiguration → Benutzerdefinierte Anpassung hosted-Iframe

Feld

Beschreibung

Typ

  • Numerisch - Es sind nur Zahlen erlaubt und für mobile Geräte wird die numerische Tastatur verwendet input type="tel".
  • Passwort - input type="password"
  • Text - input type="text"

Anzahl Zeichen

Länge des Feldes in Zeichen (HTML attribute size)

Zeichen Max

Maximale Länge der Eingabe (HTML attribute maxlength)

iFrame

  • Standard - Verwendet Breite und Höhe vom Standardstils
  • Benutzerdefiniert - Verwendet Breite und Höhe aus den folgenden Feldern

Breite

CSS - Spezifiziert width

Höhe

CSS - Indikator height

Stil

  • Standard - Nutzt CSS Spezifikation vom Standard
  • Benutzerdefiniert - Nutzt CSS Spezifikation von den folgenden Feldern

CSS

Spezifikation von CSS properties für das Feld
Deaktiviert mit der Vorauswahl des Standard

Standardstil

  • Eingabe - CSS Spezifikation für alle Eingabefelder (HTML input)
  • Auswahl - CSS Spezifikation für alle Auswahlfelder (HTML select )

iFrame

  • Width - CSS Spezifikation
  • Height - CSS Spezifikation

Fehlerausgabe


Aktiv

Ja/Nein

Language

Wählen Sie die Sprache, in der die Fehlermeldung ausgegeben werden soll.

Vorschau

An dieser Stelle sehen Sie, wie das Erscheinungsbild entsprechend der vorherigen Einstellung der Zahlungsart Kreditkarte im Checkout aussieht.

Simple Protect

Simple Protect

Simple Protect ist die einfache und flexible Art, alle Daten zu nutzen, die Sie haben, und zwar genau in dem Moment, in dem Ihr Shop den Checkout durchführt. Sie können z.B. Informationen von:

  • die Datenbank Ihres Magento 2 Shops
  • die aktuelle Checkout-Sitzung
  • externe Quellen, die vom Shopserver aus erreicht werden können
    • Datawarehouse
    • csv / xml / txt - Dateien, auf die mit PHP zugegriffen werden kann
    • APIs oder Erweiterungen wie die PAYONE Protect Funktionen
  • und viele mehr.

Im Folgenden finden Sie ein Beispiel für einige komplexe Entscheidungen, die mit Hilfe unseres simple protect framework getroffen werden können:

Simple Protect befindet sich derzeit im Beta-Stadium. Wenn Sie diese Funktionalität nutzen möchten, müssen Sie die PAYONE Integration aus dem Simple Protect-Zweig herunterladen:

Danach folgen Sie bitte den Anweisungen zur Installation der Simple Protect-Vorlage hier:

Bitte beachten Sie, dass alle im Legacy-Teil dieser Dokumentation beschriebenen Funktionen bei der Verwendung von simple protect nicht mehr zur Verfügung stehen. Zur Zeit bieten wir auch keinen Migrationsmechanismus an.

Konfiguration

  • Klicken Sie unter PAYONE → Protect


Diese Option betrifft nur Anfragen bezüglich der PAYONE - API wie adresscheck oder consumerscore. Sonstiger Code wird wie entwickelt ausgeführt.

Entry points / Points of action

Die Klasse app/code/Payone/SimpleProtect/Model/SimpleProtect/SimpleProtect.php ist der zentrale Punkt zur Umsetzung der Entscheidungen.

Die folgenden Methoden geben die Punkte wieder, an denen die Aktionen stattfinden.

Beispiel einer kompletten Integration
<?php

/**
 * PAYONE Magento 2 Connector is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * PAYONE Magento 2 Connector is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with PAYONE Magento 2 Connector. If not, see <http://www.gnu.org/licenses/>.
 *
 * PHP version 5
 *
 * @category  Payone
 * @package   Payone_Magento2_SimpleProtect
 * @author    FATCHIP GmbH <support@fatchip.de>
 * @copyright 2003 - 2019 Payone GmbH
 * @license   <http://www.gnu.org/licenses/> GNU Lesser General Public License
 * @link      http://www.payone.de
 */

namespace Payone\SimpleProtect\Model\SimpleProtect;

use Magento\Payment\Model\MethodInterface;
use Magento\Quote\Model\Quote;
use Payone\Core\Model\SimpleProtect\SimpleProtect as OrigSimpleProtect;
use Payone\Core\Model\PayoneConfig;
use Magento\Customer\Api\Data\CustomerInterface;
use Magento\Quote\Model\Quote\Address;
use Payone\Core\Model\Source\AddressCheckType;
use Payone\Core\Model\Source\CreditratingCheckType;
use Magento\Framework\Exception\LocalizedException;
use Payone\Core\Model\Exception\FilterMethodListException;
use Payone\Core\Model\Api\Response\AddresscheckResponse;
use Payone\Core\Model\Api\Response\ConsumerscoreResponse;
use Magento\Quote\Api\Data\AddressInterface;
use Magento\Store\Model\ScopeInterface;

class SimpleProtect extends OrigSimpleProtect
{
    const MODULE_VERSION = '1.0.0';

    /**
     * Whitelist of safe payment methods
     *
     * @var array
     */
    protected $safePaymentMethods = [
        PayoneConfig::METHOD_ADVANCE_PAYMENT,
        PayoneConfig::METHOD_CREDITCARD,
        PayoneConfig::METHOD_PAYPAL
    ];

    /**
     * PAYONE Protect model providing access to consumerscore and addresscheck requests
     *
     * @var \Payone\Core\Model\SimpleProtect\ProtectFunnel
     */
    protected $protectFunnel;

    /**
     * Database connection resource
     *
     * @var \Magento\Framework\App\ResourceConnection
     */
    protected $databaseResource;

    /**
     * Checkout session object
     *
     * @var \Magento\Checkout\Model\Session\Proxy
     */
    protected $checkoutSession;

    /**
     * Scope config object
     *
     * @var \Magento\Framework\App\Config\ScopeConfigInterface
     */
    protected $scopeConfig;

    /**
     * Constructor
     *
     * @param \Payone\Core\Model\SimpleProtect\ProtectFunnel     $protectFunnel
     * @param \Magento\Framework\App\ResourceConnection          $resource
     * @param \Magento\Checkout\Model\Session\Proxy              $checkoutSession
     * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
     */
    public function __construct(
        \Payone\Core\Model\SimpleProtect\ProtectFunnel $protectFunnel,
        \Magento\Framework\App\ResourceConnection $resource,
        \Magento\Checkout\Model\Session\Proxy $checkoutSession,
        \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
    ) {
        parent::__construct($protectFunnel);
        $this->databaseResource = $resource;
        $this->checkoutSession = $checkoutSession;
        $this->scopeConfig = $scopeConfig;
    }

    /**
     * Returns configured operation mode used for the addresscheck and consumerscore
     *
     * @return string
     */
    public function getOperationMode()
    {
        return $this->scopeConfig->getValue('payone_general/global/protect_mode', ScopeInterface::SCOPE_STORES);
    }

    /**
     * Get count of customers orders
     *
     * @param CustomerInterface $oCustomer
     * @return int
     */
    protected function getCustomersOrderCount(CustomerInterface $oCustomer)
    {
        $db = $this->databaseResource->getConnection();
        $oSelect = $db->select()
            ->from($this->databaseResource->getTableName('sales_order'), ['COUNT(entity_id)'])
            ->where("customer_id = :customerId");
        $iCount = $db->fetchOne($oSelect, ['customerId' => $oCustomer->getId()]);
        if ($iCount === null) {
            return 0;
        }
        return $iCount;
    }

    /**
     * Check if the customer has ordered before
     *
     * @param CustomerInterface $oCustomer
     * @return bool
     */
    protected function isRecurringCustomer(CustomerInterface $oCustomer)
    {
        if ($this->getCustomersOrderCount($oCustomer) == 0) {
            return false;
        }
        return true;
    }

    /**
     * Possibility to whiteliste customers with custom functionality
     *
     * @param  CustomerInterface $oCustomer
     * @return bool
     */
    protected function isCustomerWhitelisted(CustomerInterface $oCustomer)
    {
        return true; // implement this for yourself or remove completely
    }

    /**
     * Generate hash of given address for comparison
     *
     * @param  Address $oAddress
     * @return string
     */
    protected function getAddressHash(Address $oAddress) {
        $sAddress  = $oAddress->getFirstname();
        $sAddress .= $oAddress->getLastname();
        $sAddress .= $oAddress->getCity();
        $sAddress .= $oAddress->getPostcode();
        $sAddress .= $oAddress->getCountry();
        $sAddress .= $oAddress->getStreetFull();

        return md5($sAddress);
    }

    /**
     * Compare given addresses, return true if they are the same
     *
     * @param  Address $oBilling
     * @param  Address $oShipping
     * @return bool
     */
    protected function isBillingAndShippingAddressTheSame(Address $oBilling, Address $oShipping)
    {
        if ($this->getAddressHash($oBilling) != $this->getAddressHash($oShipping)) {
            return false;
        }
        return true;
    }

    /**
     * Filter out all payment methods except for the safe payment methods
     *
     * @param  MethodInterface[] $aPaymentMethods
     * @return MethodInterface[]
     */
    protected function getSafePaymentMethods($aPaymentMethods)
    {
        $aReturn = [];
        foreach ($aPaymentMethods as $oPaymentMethod) {
            if (in_array($oPaymentMethod->getCode(), $this->safePaymentMethods) === true) {
                $aReturn[] = $oPaymentMethod;
            }
        }
        return $aReturn;
    }

    /**
     * Examples of all the options for addresscheck usage
     *
     * @param  Quote $oQuote
     * @return AddresscheckResponse|bool
     */
    protected function executeAddresscheck(Quote $oQuote)
    {
        $oAddress = $oQuote->getBillingAddress();
        #$oAddress = $oQuote->getShippingAddress();

        #$sAddresscheckType = AddressCheckType::NONE;
        $sAddresscheckType = AddressCheckType::BASIC;
        #$sAddresscheckType = AddressCheckType::PERSON;
        #$sAddresscheckType = AddressCheckType::BONIVERSUM_BASIC;
        #$sAddresscheckType = AddressCheckType::BONIVERSUM_PERSON;

        return $this->protectFunnel->executeAddresscheck($oAddress, $this->getOperationMode(), $sAddresscheckType, $this->getModuleVersion());
    }

    /**
     * Examples of all the options for consumerscore usage
     *
     * @param  Quote $oQuote
     * @return ConsumerscoreResponse|bool
     */
    protected function executeConsumerscore(Quote $oQuote)
    {
        $oAddress = $oQuote->getBillingAddress();
        #$oAddress = $oQuote->getShippingAddress();

        #$sConsumerscoreType = CreditratingCheckType::INFOSCORE_HARD;
        $sConsumerscoreType = CreditratingCheckType::INFOSCORE_ALL;
        #$sConsumerscoreType = CreditratingCheckType::INFOSCORE_ALL_BONI;
        #$sConsumerscoreType = CreditratingCheckType::BONIVERSUM_VERITA;

        $sAddresscheckType = AddressCheckType::NONE;
        #$sAddresscheckType = AddressCheckType::BASIC;
        #$sAddresscheckType = AddressCheckType::PERSON;
        #$sAddresscheckType = AddressCheckType::BONIVERSUM_BASIC;
        #$sAddresscheckType = AddressCheckType::BONIVERSUM_PERSON;

        return $this->protectFunnel->executeConsumerscore($oAddress, $this->getOperationMode(), $sConsumerscoreType, $sAddresscheckType, $this->getModuleVersion());
    }

    /**
     * Check rules for recurring registered customers
     *
     * @param  Quote $oQuote
     * @return bool
     */
    protected function isOnlySafePaymentApplicableForRecurringCustomer(Quote $oQuote)
    {
        if ($oQuote->getBaseGrandTotal() > 400 || $this->isCustomerWhitelisted($oQuote->getCustomer()) === false) {
            return true;
        }
        return false;
    }

    /**
     * Check rules for first time registered customer
     *
     * @param  Quote $oQuote
     * @param  bool  $blIsPrePaymentSelection
     * @return bool
     */
    protected function isOnlySafePaymentApplicableForInitialOrder(Quote $oQuote, $blIsPrePaymentSelection)
    {
        if ($blIsPrePaymentSelection === false && $this->isBillingAndShippingAddressTheSame($oQuote->getBillingAddress(), $oQuote->getShippingAddress()) === false) {
            return true;
        }

        if ($oQuote->getBaseGrandTotal() > 120) {
            return true;
        }

        if ($blIsPrePaymentSelection === false && !in_array($oQuote->getPayment()->getMethodInstance()->getCode(), $this->safePaymentMethods)) {
            $oResponse = $this->executeConsumerscore($oQuote);
            if ($oResponse instanceof ConsumerscoreResponse && ($oResponse->getStatus() != 'VALID' || $oResponse->getScore() != 'G')) {
                return true;
            }
        }
        return false;
    }

    /**
     * Check if only safe payment methods are applicable
     *
     * @param  Quote $oQuote
     * @param  bool  $blIsPrePaymentSelection
     * @return bool
     */
    protected function isOnlySafePaymentApplicable(Quote $oQuote, $blIsPrePaymentSelection)
    {
        if ($this->checkoutSession->getPayoneSimpleProtectOnlySafePaymentsAllowed() === true) {
            return true;
        }

        if ($oQuote->getCustomerId() === null) { // if guest checkout
            return true;
        }

        if ($this->isRecurringCustomer($oQuote->getCustomer()) === true) {
            return $this->isOnlySafePaymentApplicableForRecurringCustomer($oQuote);
        }
        return $this->isOnlySafePaymentApplicableForInitialOrder($oQuote, $blIsPrePaymentSelection);
    }

    /************************* MAIN SIMPLEPROTECT HOOKS *************************/

    /**
     * This method can be extended for individual custom behaviour
     *
     * Extending this method gives the following possibilities:
     * 1. Filtering out payment methods based on your own rule set
     * 2. Throwing a LocalizedException to send the user back to shipping method selection
     *
     * @param  Quote             $oQuote
     * @param  MethodInterface[] $aPaymentMethods
     * @return MethodInterface[]
     */
    public function handlePrePaymentSelection(Quote $oQuote, $aPaymentMethods)
    {
        if ($this->isOnlySafePaymentApplicable($oQuote, true) === true) {
            return $this->getSafePaymentMethods($aPaymentMethods);
        }
        return $aPaymentMethods;
    }

    /**
     * This method can be extended for individual custom behaviour
     *
     * Extending this method gives the following possibilities:
     * 1. Throwing a LocalizedException will stop the order creation and throw the user back to payment selection with the given thrown message
     * 2. Throwing a FilterMethodListException with an array of safe payment methods will stop the order creation and
     *    throw the user back to payment selection with the given thrown message and remove all other payment methods except for the given ones
     * 3. Finishing the method - so throwing no Exception will finish the order creation
     *
     * @param  Quote $oQuote
     * @return void
     * @throws LocalizedException
     * @throws FilterMethodListException
     */
    public function handlePostPaymentSelection(Quote $oQuote)
    {
        if ($this->isOnlySafePaymentApplicable($oQuote, false) === true) {
            $sMethodCode = $oQuote->getPayment()->getMethodInstance()->getCode();
            if (!in_array($sMethodCode, $this->safePaymentMethods)) {
                $this->checkoutSession->setPayoneSimpleProtectOnlySafePaymentsAllowed(true);
                throw new FilterMethodListException(__('Please select another payment method.'), $this->safePaymentMethods);
            }
        }
    }

    /**
     * This method can be extended to transfer the version of your Simple-Protect implementation to Payone
     * It is recommended to transfer the name of your module and the version, otherwise Payone doesn't know that it is a Simple-Protect call
     *
     * @return string|null
     */
    public function getModuleVersion()
    {
        return 'Payone_SimpleProtect-'.self::MODULE_VERSION;
    }
}

Wir haben weitere Beispiele unter Magento 2 - Simple Protect zusammengestellt. Hier finden Sie weitere Informationen darüber, wie Sie Daten für Ihre Entscheidungen gewinnen können. Sie sind auch eingeladen, weitere Beispiele als Themen auf Github oder per E-Mail an docs@payone.com hinzuzufügen.

handlePrePaymentSelection

Die Umsetzung dieser Methode bietet Ihnen folgende Möglichkeiten:

  1. Das Auslösen einer LocalizedException stoppt die Auftragserstellung und wirft den Benutzer mit der angegebenen Meldung zurück zur Zahlungsauswahl
  2. Das Auslösen einer FilterMethodListException mit einem Array von sicheren Zahlungsmethoden stoppt die Auftragserstellung und wirft den Benutzer mit der angegebenen Meldung zurück zur Zahlungsauswahl und entfernt alle anderen Zahlungsmethoden außer den angegebenen
  3. Beenden der Methode - also keine Exception auslösen, beendet die Auftragserstellung

@param  Quote $oQuote
@param  MethodInterface[] $aPaymentMethods
@return MethodInterface[]

public function handlePrePaymentSelection(Quote $oQuote, $aPaymentMethods)
{
    if ($this->isOnlySafePaymentApplicable($oQuote, true) === true) {
        return $this->getSafePaymentMethods($aPaymentMethods);
    }
    return $aPaymentMethods;
}

handlePostPaymentSelection

Die Umsetzung dieser Methode bietet Ihnen folgende Möglichkeiten:

  1. Das Auslösen einer LocalizedException stoppt die Auftragserstellung und wirft den Benutzer mit der angegebenen Meldung zurück zur Zahlungsauswahl
  2. Das Auslösen einer FilterMethodListException mit einem Array von sicheren Zahlungsmethoden stoppt die Auftragserstellung und wirft den Benutzer mit der angegebenen Meldung zurück zur Zahlungsauswahl und entfernt alle anderen Zahlungsmethoden außer den angegebenen
  3. Beenden der Methode - also keine Exception auslösen, beendet die Auftragserstellung

@param  Quote $oQuote
@return void
@throws LocalizedException
@throws FilterMethodListException

public function handlePostPaymentSelection(Quote $oQuote)
{
    if ($this->isOnlySafePaymentApplicable($oQuote, false) === true) {
        $sMethodCode = $oQuote->getPayment()->getMethodInstance()->getCode();
        if (!in_array($sMethodCode, $this->safePaymentMethods)) {
            $this->checkoutSession->setPayoneSimpleProtectOnlySafePaymentsAllowed(true);
            throw new FilterMethodListException(__('Please select another payment method.'), $this->safePaymentMethods);
        }
    }
}

handleEnterOrChangeBillingAddress

Die Umsetzung dieser Methode bietet Ihnen folgende Möglichkeiten:

  1. Wenn true zurückgegeben wird, wird der Prozess fortgesetzt, ohne dass etwas geändert wird.
  2. Die Rückgabe einer (geänderten) Adressobjektinstanz von AddressInterface zeigt dem Kunden eine Aufforderung zur Adresskorrektur
  3. Das Auslösen einer LocalizedException zeigt dem Kunden die angegebene Ausnahmemeldung an

@param AddressInterface $oAddressData
@param bool $blIsVirtual
@param double $dTotal
@return AddressInterface|bool
@throws LocalizedException

public function handleEnterOrChangeBillingAddress(AddressInterface $oAddressData, $blIsVirtual, $dTotal)
    {
        $response = $this->protectFunnel->executeAddresscheck($oAddressData, $this->getOperationMode(), AddressCheckType::BASIC);
        if ($oAddressData->getCity() == "FalscheStadt") {
            $oAddressData->setCity($response->getCity());
            return $oAddressData;
        }
        return true;
    }

handleEnterOrChangeShippingAddress

Die Umsetzung dieser Methode bietet Ihnen folgende Möglichkeiten:

  1. Wenn true zurückgegeben wird, wird der Prozess fortgesetzt, ohne dass etwas geändert wird.
  2. Die Rückgabe einer (geänderten) Adressobjektinstanz von AddressInterface zeigt dem Kunden eine Aufforderung zur Adresskorrektur
  3. Das Auslösen einer LocalizedException zeigt dem Kunden die angegebene Ausnahmemeldung an

@param AddressInterface $oAddressData
@param bool $blIsVirtual
@param double $dTotal
@return AddressInterface|bool
@throws LocalizedException

public function handleEnterOrChangeShippingAddress(AddressInterface $oAddressData, $blIsVirtual, $dTotal)
    {
        $response = $this->protectFunnel->executeAddresscheck($oAddressData, $this->getOperationMode(), AddressCheckType::BASIC);
        if ($oAddressData->getCity() == "FalscheStadt") {
            $oAddressData->setCity($response->getCity());
            return $oAddressData;
        }
        return true;
    }
Protect (Legacy)

Protect (Legacy)

  • Klicken Sie unter PAYONE → Protect

Adressprüfung

Feld

Beschreibung

Aktiviert

Aktiviert die Adressprüfung

Betriebsmodus

Hier wird bestimmt, ob die PAYONE Plattform im Test- oder Live-Modus angesprochen wird.

Prüfe Rechnungsadresse

Konfiguration, mit welcher Prüfung die Rechnungsadresse geprüft werden soll.

Prüfe Lieferadresse

Konfiguration, mit welcher Prüfung die Lieferadresse geprüft werden soll.

Prüfe Rechnungsadresse für

virtuelle Bestellungen

Wählen Sie, ob die Rechnungsadresse bei virtuellen Bestellungen geprüft werden soll.

Bestätigung der Adresskorrektur

Auswahl, ob eine Adresskorrektur vom Käufer bestätigt werden muss.

Meldung bei ungültigen Daten

Tragen Sie hier die Fehlermeldung ein, die beim Status "INVALID" angezeigt werden soll.

Behandlung von Fehlern

Was soll nach einem Fehler in der Extension oder der PAYONE Plattform ausgeführt werden?

Minimaler Warenwert

Mindestbetrag für die Durchführung einer Adressprüfung.

Maximaler Warenwert

Maximalbetrag für die Durchführung einer Adressprüfung

Gültigkeit

Anzahl der Tage, an denen keine neue Adressüberprüfung durchgeführt wird.

Bonitätsprüfung

Feld

Beschreibung

Aktiviert

Aktiviert die Bonitätsprüfung

Betriebsmodus

Hier wird bestimmt, ob die PAYONE Plattform im Test- oder Live-Modus angesprochen wird.

Zeitpunkt der Prüfung

Auswahl der "Vor/Nach der Zahlartenauswahl"

Bonitätscheck-Typ

  • Infoscore
    • Harte Merkmale
    • Alle Merkmale
    • Alle Merkmale+Boniscore
  • Boniversum
    • VERITA Score

Standardwert für unbekannte Scores

Auswahl einer Ampelfarbe für den Rückgabestatus "Unbekannt"


Das betrifft nur Prüfungsergebnisse bei Verwendung des Bonitätschecks 'Boniversum VERITA Score

Erlaubte Zahlarten bei Ampelwert "Gelb/Rot"

Mehrfachauswahl der zulässigen Zahlungsarten nach Ampelfarbe

Behandlung von FehlernWas ist zu tun, wenn ein Fehler in der Integration oder auf der PAYONE Plattform auftritt?

Insufficient score error message

Meldung, die dem Kunden angezeigt wird, wenn ein unzureichender Punktwert erreicht wird.

Minimaler Warenwert

Mindestbetrag für die Durchführung einer Adressprüfung.

Maximaler Warenwert

Maximalbetrag für die Durchführung einer Adressprüfung.

Gültigkeit

Anzahl der Tage, an denen keine neue Adressüberprüfung durchgeführt wird.

Dienstleister für Adress- und Bonitätsprüfung
Für die Adress- und Bonitätsprüfung stehen verschiedene Dienstleister zur Verfügung. Unser Support-Team erklärt Ihnen gerne, welchen Leistungsumfang die einzelnen Prüfungen haben und welcher Dienstleister für Sie der Richtige ist.

Liste mit PAYONE IP-Adressen

Liste mit PAYONE IP-Adressen

  • Klicken Sie unter PAYONE → Sonstiges


Nach der Installation sind dort die aktuell gültigen IP-Adressen angegeben, die einen Transaktionsstatus liefern dürfen. Ändern Sie diese nur bei Bedarf. Sie müssen diese Adressen nur dann hinzufügen, wenn Ihre Systemlandschaft z.B. mit Load Balancern oder Proxy-Systemen arbeitet.

Weiterleitung des Transaktionsstatus

Weiterleitung des Transaktionsstatus

  • Klicken Sie unter PAYONE → Sonstiges


An dieser Stelle können Sie festlegen, welcher Status an welche URL weitergeleitet wird und wie lange der Timeout in Sekunden ist, bis der Umleitungsversuch beendet wird.

Rechnungsinformationen

Rechnungsinformationen

  • Klicken Sie unter PAYONE → Sonstiges


Rechnungsinformation - Rabatt

Hier können Sie eine SKU festlegen, die zur Identifizierung von Rabattartikeln verwendet werden soll. Dies kann leer gelassen werden, es sei denn, Sie haben Probleme mit Einkaufswagenartikeln.

Rechnungsinformation - Versandkosten

Hier können Sie eine SKU festlegen, die zur Identifizierung von Versandartikeln verwendet werden soll. Dies kann leer gelassen werden, es sei denn, Sie haben Probleme mit Einkaufswagenartikeln.

Rechnungsinformation - Gutschein

Hier können Sie eine SKU angeben, die zur Identifizierung von Gutscheinen verwendet werden soll. Dies kann leer gelassen werden, es sei denn, Sie haben Probleme mit Einkaufswagenartikeln.

Konfiguration exportieren

Konfiguration exportieren

  • Klicken Sie unter PAYONE → Konfiguration exportieren

Mit dem Klick auf Konfiguration exportieren wird eine Datei heruntergeladen.

Sie können diese Datei nun mit einem XML-Editor öffnen, ansehen oder speichern. Dieser Export ist für jede Support-Anfrage an das PAYONE Team sehr wichtig, um mögliche Konfigurationsprobleme zu vermeiden. Anhand dieser Datei kann auch festgestellt werden, ob weitere Erweiterungen installiert wurden, die Kompatibilitätsprobleme verursachen könnten.

PAYONE Logs

PAYONE Logs

  • Klicken Sie unter PAYONE → Protokolle

Unter dem Punkt Protokolle finden Sie alle Informationen über die abgewickelten Zahlungen und die Kommunikation mit der PAYONE Plattform.

API Logs
  • Klicken Sie unter PAYONE → API

In dieser Übersicht finden Sie alle Anfragen des Magento Shops an die PAYONE Plattform sowie die Antworten der PAYONE Plattform auf diese Anfragen. Lediglich die Anfragen, die über die Client API an die PAYONE Plattform übermittelt wurden, sind in dieser Übersicht nicht aufgeführt. Dies gilt für Kreditkarteninformationen, die mittels Ajax-Technologie direkt vom Browser des Käufers an die PAYONE Plattform übertragen werden, so dass Ihr Shop nicht mit sensiblen Kreditkarteninformationen in Berührung kommt. Mit einem Klick auf Ansicht können Sie sich eine API-Anfrage im Detail anzeigen lassen.

In der linken Spalte sehen Sie die Anfrage, die der Magento-Shop an die PAYONE Plattform gesendet hat. Auf der rechten Seite finden Sie die Antwort. Eine detaillierte Erklärung der jeweiligen Parameter finden Sie in der technischen Dokumentation der PAYONE Plattform im PAYONE Merchant Interface (PMI) unter Downloads → Dokumentation.

Transaktionsstatus Logs
  • Klicken Sie unter PAYONE → Transaktionsstatus

Der Unterpunkt Transaktionen zeigt die von Magento empfangenen Benachrichtigungen über den Transaktionsstatus für jede Bestellung und Transaktion an. Diese Benachrichtigungen werden von der PAYONE Plattform an Ihren Shop gesendet. Im Fehlerfall können Sie hier erfahren, ob der Transaktionsstatus korrekt empfangen wurde und wie der aktuelle Status einer Transaktion ist. Mit einem Klick auf Ansicht können Sie sich Details zu einem Transaktionsstatus anzeigen lassen.

Auf der Detailseite sehen Sie alle Informationen zum Transaktionsstatus, die über die PAYONE Plattform an Ihren Shop übermittelt werden. So können Sie jederzeit nachvollziehen, welche Daten Ihr Magento-Shop erhalten und verarbeitet hat.

Eine detaillierte Erklärung der jeweiligen Parameter finden Sie in der technischen Dokumentation der PAYONE Plattform im PAYONE Merchant Interface (PMI) unter Downloads → Dokumentation.

Fakten im Überblick

Payment methods + Features

2

Find our plugin documentation here .

Download our plugin from here .

Credit Cards

Visa

Mastercard

American Express

JCB

Diners Club

Maestro International

China Union Pay

Wallets

Alipay

Amazon Pay

Apple Pay

paydirekt

paydirekt Express

PayPal

PayPal Express

Wire Transfer

Cash On Delivery

PAYONE Direct Debit

PAYONE Invoice

PAYONE Prepayment

Online Bank Transfers

Bancontact

EPS

Giropay

iDEAL

PostFinance Card

PostFinance E-Finance

Przelewy24

Sofort

Trustly

Financing

Klarna Pay Later

Klarna Pay Now

Klarna Slice It

PAYONE Secure Invoice

Ratepay Direct Debit

Ratepay Open Invoice

Ratepay Installments

Unzer Lastschrift

Unzer Rechnungskauf

Unzer Ratenkauf

Cash

Barzahlen

General

Open Source

Protect

Arvato

Boniversum

Simple-Protect

Transaction - Handling

(Partial) Captures and Refunds

Payment State Mapping

Backoffice Connections

Extended Logging

Transactionstatus URL:

<SHOPURL>/index.php/payone/transactionstatus

Latest Release

v3.5.0

New Features
  • Add validation if birthday is a valid date
  • Compatibility for Magento 2.4.4 and PHP 8.1
  • New payment method: Ratepay Direct Debit
  • New payment method: Ratepay Installment
  • Saved creditcard data will be filtered by available credit card providers

Bugfixes

  • Fixed unserialize problems with encoding
  • Changed iDeal clearing information template
  • Fixed creditcard cardholder is not saved on first entry
  • Fixed cardtypes in hosted iframe config for cvc validation
  • Ratepay javascripts now only loaded if method is activated
  • Fixed display of creditcard data in order overview
  • Fixed cardtypes in hosted iframe config for cvc validation
  • Fix potential cross-site scripting flaw on checkout page

Maintenance

  • Updated iDeal bankgrouptypes
  • Add missing translation for Place Order button

tested with Magento 2.4.4 with PHP 8.1

Download

Inhaltsverzeichnis

  • No labels