MultiSafepay — голландский поставщик платежных услуг, который занимается контрактами, обработкой транзакций и сбором платежей по ряду местных и международных способов оплаты. Начните продавать онлайн сегодня и управляйте всеми своими транзакциями в одном месте!
Запустите следующую команду композитора:
composer require multisafepay/php-sdkПРЕДУПРЕЖДЕНИЕ! Этот SDK не имеет прямой зависимости от Guzzle или cURL. Вместо этого он использует абстракцию клиента PSR-18 и абстракцию фабрики PSR-17. Это позволяет вам выбрать, какую реализацию PSR-7 и HTTP-клиент использовать. Вы можете заменить всех клиентов без каких-либо побочных эффектов.
Если у вас не установлена реализация клиента, запустите:
composer require guzzlehttp/guzzleЕсли у вас не установлена заводская реализация, запустите:
composer require http-interop/http-factory-guzzleТеперь у вас должно быть установлено:
Используйте автозагрузчик Composer для автоматической загрузки зависимостей классов:
require ' vendor/autoload.php ' ;Затем создайте экземпляр SDK с ключом API вашего сайта и флагом, чтобы определить, является ли это активной средой или средой тестирования.
$ yourApiKey = ' your-api-key ' ;
$ isProduction = false ;
$ multiSafepaySdk = new MultiSafepay Sdk ( $ yourApiKey , $ isProduction );Из SDK можно получить различные менеджеры:
$ multiSafepaySdk -> getTransactionManager ();
$ multiSafepaySdk -> getGatewayManager ();
$ multiSafepaySdk -> getPaymentMethodManager ();
$ multiSafepaySdk -> getIssuerManager ();
$ multiSafepaySdk -> getCategoryManager ();
$ multiSafepaySdk -> getTokenManager ();
$ multiSafepaySdk -> getApiTokenManager ();Менеджер транзакций является наиболее важным, поскольку он позволяет создавать заказы и возвраты средств.
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 ();Пример возврата:
// 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 ) ); Примеры построения полных запросов см. в USAGE.md и функциональных тестах tests/Functional/Api/Transactions .
Строгий режим:
Нестрогий режим (по умолчанию) пропускает некоторые ошибки проверки.
Пример. Если существует несоответствие между количеством десятичных знаков общего количества товаров в объекте ShoppingCart и вашей платформе электронной торговли, строгий режим создает исключение MultiSafepayExceptionInvalidTotalAmountException .
Для поддержания качества кода предусмотрены следующие проверки:
./vendor/bin/phpcs --standard=phpcs.ruleset.xml . )./vendor/bin/phpunit )tests/Unit ).tests/Integration ).tests/Functional ) — требуется ключ API. Чтобы запустить модульные тесты из этого пакета:
composer install./vendor/bin/phpunit tests/Unit Чтобы запустить функциональные тесты из этого пакета:
composer install ..env.php.example в .env.php и добавьте ключ API вашего сайта../vendor/bin/phpunit tests/Functional Модульные и интеграционные тесты выполняются без API, а это означает, что клиент имитирует все вызовы данных. Для этого в tests/fixture-data содержатся файлы JSON для подделки вызовов. Чтобы заполнить эту папку реальными данными, убедитесь, что у вас есть действительный файл .env.php , а затем используйте следующую команду:
php tests/generateApiMocks.php
Это фиксирует все сгенерированные файлы JSON в git, чтобы они служили фикстурами. Файлы, которые не используются в тестах, создавать не нужно.
Создайте проблему в этом репозитории или отправьте электронное письмо по адресу [email protected].
Если вы создадите запрос на включение, чтобы предложить улучшение, мы вышлем вам подарки MultiSafepay в качестве благодарности!
Лицензия открытого программного обеспечения (OSL 3.0)
Вы разработчик и заинтересованы в работе в MultiSafepay? Ознакомьтесь с нашими вакансиями и свяжитесь с нами!