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 autoloader 自动加载类依赖项:
require ' vendor/autoload.php ' ;
接下来,使用您的站点 API 密钥和一个标志来实例化 SDK,以识别这是实时环境还是测试环境。
$ 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 工作的开发人员吗?查看我们的职位空缺,并随时与我们联系!