MultiSafepay ist ein niederländischer Zahlungsdienstleister, der sich um die Vertragsabwicklung, die Abwicklung von Transaktionen und den Zahlungseinzug für eine Reihe lokaler und internationaler Zahlungsmethoden kümmert. Beginnen Sie noch heute mit dem Online-Verkauf und verwalten Sie alle Ihre Transaktionen an einem Ort!
Führen Sie den folgenden Composer-Befehl aus:
composer require multisafepay/php-sdk
WARNUNG! Dieses SDK hat keine direkte Abhängigkeit von Guzzle oder cURL. Stattdessen werden die PSR-18-Client-Abstraktion und die PSR-17-Factory-Abstraktion verwendet. Dadurch können Sie auswählen, welche PSR-7-Implementierung und welchen HTTP-Client Sie verwenden möchten. Sie können alle Clients ohne Nebenwirkungen ersetzen.
Wenn Sie keine Client-Implementierung installiert haben, führen Sie Folgendes aus:
composer require guzzlehttp/guzzle
Wenn Sie keine Factory-Implementierung installiert haben, führen Sie Folgendes aus:
composer require http-interop/http-factory-guzzle
Sie sollten jetzt Folgendes installiert haben:
Verwenden Sie den Composer-Autoloader, um Klassenabhängigkeiten automatisch zu laden:
require ' vendor/autoload.php ' ;
Als Nächstes instanziieren Sie das SDK mit Ihrem Site-API-Schlüssel und einem Flag, um zu identifizieren, ob es sich um die Live-Umgebung oder die Testumgebung handelt.
$ yourApiKey = ' your-api-key ' ;
$ isProduction = false ;
$ multiSafepaySdk = new MultiSafepay Sdk ( $ yourApiKey , $ isProduction );
Über das SDK können Sie verschiedene Manager erhalten:
$ multiSafepaySdk -> getTransactionManager ();
$ multiSafepaySdk -> getGatewayManager ();
$ multiSafepaySdk -> getPaymentMethodManager ();
$ multiSafepaySdk -> getIssuerManager ();
$ multiSafepaySdk -> getCategoryManager ();
$ multiSafepaySdk -> getTokenManager ();
$ multiSafepaySdk -> getApiTokenManager ();
Der Transaktionsmanager ist der wichtigste, denn mit ihm können Sie Bestellungen und Rückerstattungen erstellen.
use MultiSafepay ValueObject Customer Country ;
use MultiSafepay ValueObject Customer Address ;
use MultiSafepay ValueObject Customer PhoneNumber ;
use MultiSafepay ValueObject Customer EmailAddress ;
use MultiSafepay ValueObject Money ;
use MultiSafepay Api Transactions OrderRequest Arguments CustomerDetails ;
use MultiSafepay Api Transactions OrderRequest Arguments PluginDetails ;
use MultiSafepay Api Transactions OrderRequest Arguments PaymentOptions ;
use MultiSafepay Api Transactions OrderRequest ;
$ yourApiKey = ' your-api-key ' ;
$ isProduction = false ;
$ multiSafepaySdk = new MultiSafepay Sdk ( $ yourApiKey , $ isProduction );
$ orderId = ( string ) time ();
$ description = ' Order # ' . $ orderId ;
$ amount = new Money ( 2000 , ' EUR ' ); // Amount must be in cents!!
$ address = ( new Address ())
-> addStreetName ( ' Kraanspoor ' )
-> addStreetNameAdditional ( ' (blue door) ' )
-> addHouseNumber ( ' 39 ' )
-> addZipCode ( ' 1033SC ' )
-> addCity ( ' Amsterdam ' )
-> addState ( ' Noord Holland ' )
-> addCountry ( new Country ( ' NL ' ));
$ customer = ( new CustomerDetails ())
-> addFirstName ( ' John ' )
-> addLastName ( ' Doe ' )
-> addAddress ( $ address )
-> addEmailAddress ( new EmailAddress ( ' [email protected] ' ))
-> addPhoneNumber ( new PhoneNumber ( ' 0208500500 ' ))
-> addLocale ( ' nl_NL ' );
$ pluginDetails = ( new PluginDetails ())
-> addApplicationName ( ' My e-commerce application ' )
-> addApplicationVersion ( ' 0.0.1 ' )
-> addPluginVersion ( ' 1.1.0 ' );
$ paymentOptions = ( new PaymentOptions ())
-> addNotificationUrl ( ' http://www.example.com/client/notification?type=notification ' )
-> addRedirectUrl ( ' http://www.example.com/client/notification?type=redirect ' )
-> addCancelUrl ( ' http://www.example.com/client/notification?type=cancel ' )
-> addCloseWindow ( true );
$ orderRequest = ( new OrderRequest ())
-> addType ( ' redirect ' )
-> addOrderId ( $ orderId )
-> addDescriptionText ( $ description )
-> addMoney ( $ amount )
-> addGatewayCode ( ' IDEAL ' )
-> addCustomer ( $ customer )
-> addDelivery ( $ customer )
-> addPluginDetails ( $ pluginDetails )
-> addPaymentOptions ( $ paymentOptions );
$ transactionManager = $ multiSafepaySdk -> getTransactionManager ()-> create ( $ orderRequest );
$ transactionManager -> getPaymentUrl ();
Beispiel einer Rückerstattung:
// Refund example.
use MultiSafepay Api Transactions RefundRequest ;
use MultiSafepay ValueObject Money ;
$ yourApiKey = ' your-api-key ' ;
$ isProduction = false ;
$ multiSafepaySdk = new MultiSafepay Sdk ( $ yourApiKey , $ isProduction );
$ orderId = XXXXX ; // The order ID of a previously completed transaction
$ refundAmount = new Money ( 2000 , ' EUR ' );
$ transactionManager = $ multiSafepaySdk -> getTransactionManager ();
$ transaction = $ transactionManager -> get ( $ orderId );
$ transactionManager -> refund ( $ transaction , ( new RefundRequest ())-> addMoney ( $ refundAmount ) );
Beispiele für die Erstellung vollständiger Anforderungen finden Sie unter USAGE.md und den Funktionstests in tests/Functional/Api/Transactions
.
Strikter Modus:
Der nicht strikte Modus (Standard) überspringt einige Validierungsfehler.
Beispiel: Wenn es eine Diskrepanz zwischen der Anzahl der Dezimalstellen der Gesamtmenge der Artikel im ShoppingCart
Objekt und Ihrer E-Commerce-Plattform gibt, löst der strikte Modus eine MultiSafepayExceptionInvalidTotalAmountException
-Ausnahme aus.
Zur Aufrechterhaltung der Codequalität sind die folgenden Prüfungen vorhanden:
./vendor/bin/phpcs --standard=phpcs.ruleset.xml .
)./vendor/bin/phpunit
)tests/Unit
)tests/Integration
).tests/Functional
) – API-Schlüssel erforderlich So führen Sie Komponententests aus diesem Paket aus:
composer install
aus, um alle Abhängigkeiten zu installieren./vendor/bin/phpunit tests/Unit
So führen Sie Funktionstests aus diesem Paket aus:
composer install
aus..env.php.example
nach .env.php
und fügen Sie Ihren Site-API-Schlüssel hinzu../vendor/bin/phpunit tests/Functional
Unit- und Integrationstests laufen ohne die API, was bedeutet, dass der Client alle Datenaufrufe vortäuscht. Zu diesem Zweck enthält der Ordner tests/fixture-data
JSON-Dateien zum Spoofing von Aufrufen. Um diesen Ordner mit echten Daten zu füllen, stellen Sie sicher, dass Sie über eine gültige .env.php
Datei verfügen, und verwenden Sie dann den folgenden Befehl:
php tests/generateApiMocks.php
Dadurch werden alle generierten JSON-Dateien in Git übertragen, sodass sie als Fixtures dienen. Dateien, die nicht in Tests verwendet werden, müssen nicht generiert werden.
Erstellen Sie ein Problem in diesem Repository oder senden Sie eine E-Mail an [email protected]
Wenn Sie eine Pull-Anfrage erstellen, um eine Verbesserung vorzuschlagen, senden wir Ihnen als Dankeschön einige MultiSafepay-Swags!
Offene Softwarelizenz (OSL 3.0)
Sind Sie als Entwickler daran interessiert, bei MultiSafepay zu arbeiten? Schauen Sie sich unsere Stellenangebote an und nehmen Sie gerne Kontakt mit uns auf!