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? Ознакомьтесь с нашими вакансиями и свяжитесь с нами!