nexylan / paybox-direct
PayBox Direct 和 Direct Plus API 封装器
v0.4.0
2020-12-10 19:49 UTC
Requires
- php: ^7.4 || ^8.0
- doctrine/annotations: ^1.2
- doctrine/cache: ^1.0
- greg0ire/enum: ^2.1 || ^3.0 || ^4.0
- guzzlehttp/guzzle: ^6.5
- paragonie/random_compat: ^2.0
- symfony/options-resolver: ^4.0
- symfony/validator: ^4.0 || ^5.0
Requires (Dev)
- matthiasnoback/symfony-config-test: ^4.2.1
- matthiasnoback/symfony-dependency-injection-test: ^4.2.1
- phpunit/phpunit: ^9
- symfony/dependency-injection: ^4.0 || ^5.0
- symfony/http-kernel: ^4.0 || ^5.0
Suggests
- symfony/dependency-injection: For Symfony integration as a bundle
- symfony/http-kernel: For Symfony integration as a bundle
Conflicts
- symfony/dependency-injection: <4.0|>=6.0
- symfony/http-kernel: <4.0|>=6.0
README
Paybox Direct 和 Paybox Direct Plus PHP SDK。
文档
所有安装和用法说明都位于此 README 中。请查阅特定版本
- 0.x 支持 Symfony
^2.7 || ^3.0
先决条件
此版本的项目需要
- PHP 7.4+
- Symfony 2.7+ 用于包集成
安装
首先,您需要通过 Composer 需求此库
composer require nexylan/paybox-direct
之后,您可以直接使用它。
如果您在 Symfony 项目中使用它,您应该阅读以下说明以获得更好的集成。
作为一个 Symfony 包
如果您的项目 没有使用 Symfony 全栈,您必须添加以下依赖项
composer require symfony/dependency-injection symfony/http-kernel
在您的应用程序内核中注册此包
// app/AppKernel.php public function registerBundles() { $bundles = array( // ... new Nexy\PayboxDirect\Bridge\Symfony\Bundle\NexyPayboxDirectBundle(), ); // ... return $bundles; }
需要一些配置。以下是默认配置
nexy_paybox_direct: client: null options: timeout: ~ production: ~ paybox: # Required version: ~ # Required site: ~ # Required rank: ~ # Required identifier: ~ # Required key: ~ # Required default_currency: ~ default_activity: ~
用法
获取客户端实例
为了与 Paybox Direct (Plus) API 进行通信,您必须实例化 Paybox
类
use Nexy\PayboxDirect\Enum\Version; use Nexy\PayboxDirect\Paybox; $paybox = new Paybox([ // Optional parameters: 'timeout' => 30, // Change the request timeout. 'production' => true, // Set to true to use the production API URL. // Required parameters: 'paybox_version' => Version::DIRECT_PLUS, 'paybox_site' => '1999888', 'paybox_rank' => '32', 'paybox_identifier' => '107904482', 'paybox_key' => '1999888I', ]);
如果您使用的是 Symfony 包桥接,所有参数已经在配置端定义好了。
您只需调用 paybox 服务即可
/** @var \Nexy\PayboxDirect\Paybox $paybox */ $paybox = $this->container->get('nexy_paybox_direct.sdk');
发起请求
以下是一个使用 SDK 发起 Paybox Direct 请求的注释示例
use Nexy\PayboxDirect\Exception\PayboxException; use Nexy\PayboxDirect\Request\AuthorizeAndCaptureRequest; $request = new AuthorizeAndCaptureRequest('CMD-42', 1000, '1111222233334444', '1224'); $request->setCardVerificationValue('123'); try { /** @var \Nexy\PayboxDirect\Response\DirectResponse $response */ $response = $paybox->sendDirectRequest($request); } catch (PayboxException $e) { echo $e->getMessage(); // Prints the Paybox error message. /** @var \Nexy\PayboxDirect\Response\DirectResponse $response */ $response = $e->getResponse(); // Returns the response object if you want to manipulate it. } // Do stuff with the response!
如果您想通过 Direct Plus 协议使用订阅者引用执行相同的操作
$request = new AuthorizeAndCaptureRequest('CMD-42', 1000, 'subscriberCardRef', '1224', 'subscriberRef'); try { /** @var \Nexy\PayboxDirect\Response\DirectPlusResponse $response */ $response = $paybox->sendDirectPlusRequest($request); } catch (PayboxException $e) { echo $e->getMessage(); // Prints the Paybox error message. /** @var \Nexy\PayboxDirect\Response\DirectPlusResponse $response */ $response = $e->getResponse(); // Returns the response object if you want to manipulate it. } // Do stuff with the response!
注意,您必须使用 Paybox::sendDirectPlusRequest
方法,该方法返回一个 DirectPlusResponse
对象。
请求参考
以下是列出所有可用请求的表格