packsys / tatrapay
Nette 框架中用于 Tatra 银行 TatraPay 通道的库。
Requires
- php: >=7.1
- ext-openssl: *
- nette/application: ~2.3@dev
- nette/di: ~2.4@dev
- nette/http: ~2.3@dev
- nette/utils: ~2.4@dev
- paysys/paysys: ^0.1@dev
Requires (Dev)
- ext-mbstring: *
- jakub-onderka/php-parallel-lint: ~0.8
- nette/tester: ~1.7@dev
- nikic/php-parser: ^3.0.2
- phpstan/phpstan: dev-master as 0.6.x-dev
- phpstan/phpstan-nette: ~0.6
Suggests
- paysys/cardpay: Allows use CardPay in Nette framework
This package is not auto-updated.
Last update: 2024-09-15 03:18:57 UTC
README
实现 TatraPay 通道的库(使用 HMAC & ECDSA,版本 v4.0)(点击查看)来自 Tatra 银行,在 Nette 框架中。
要求
需要 PHP 7.1 或更高版本。
使用通用库 PaySys\PaySys。
安装
安装 Unique 的最佳方式是使用 Composer 包 PaySys/TatraPay
。
$ composer require paysys/tatrapay
配置
extensions: TatraPay: PaySys\TatraPay\DI\TatraPayExtension TatraPay: mid: '1234' key: '64-bit hexadecimal string'
事件
对象 PaySys\PaySys\Button
服务 PaySys\TatraPay\Security\Response
示例
生成支付按钮
设置 PaySys\TatraPay\Payment
。
按钮需要 PaySys\PaySys\IConfiguration
服务。使用 DI 生成的工厂 PaySys\TatraPay\IButtonFactory
获取配置的 PaySys\PaySys\Button
组件。
现在在 PaySys\PaySys\Button
上设置 $onPayRequest
事件以重定向到 TatraPay 通道。由服务 PaySys\TatraPay\Security\Request->getUrl(PaySys\TatraPay\Payment $payment)
生成的签名重定向 URL。
class OrderPresenter extends Presenter { /** @var \PaySys\TatraPay\IButtonFactory @inject */ public $tatraPayButtonFactory; /** @var \PaySys\TatraPay\Security\Request @inject */ public $tatraPayRequest; protected function createComponentTatraPayButton() { $payment = new \PaySys\TatraPay\Payment("12.34", "00456", "John Doe"); $button = $this->tatraPayButtonFactory->create($payment); $button->onPayRequest[] = function ($payment) { $this->redirectUrl($this->TatraPayRequest->getUrl($payment)); }; return $button; } }
处理支付响应
事件驱动处理
默认情况下,银行响应将路由到包含的表示器 TatraPay:TatraPay:process
。在这种情况下,将自动在服务 PaySys\TatraPay\Security\Response
上调用事件。
为了通过事件处理支付,例如使用 Kdyby\Events。
自定义表示器
还可以编写自己的 Nette\Application\UI\Presenter
来处理支付。在这种情况下,事件调用方式与前面的示例相同。
class OrderPresenter extends Presenter { /** @var Nette\Http\IRequest @inject */ public $httpRequest; /** @var \PaySys\TatraPay\Security\Response @inject */ public $bankResponse; public function actionProcessTatraPay() { try { $this->bankResponse->paid($this->httpRequest->getQuery()); // store info about payment $this->flashMessage('Thanks for payment.', 'success'); } catch (\PaySys\PaySys\Exception $e) { // log $this->flashMessage('Payment failed. Please try it later.', 'danger'); } $this->redirect('finish'); } }
现在只需将路由添加到配置中
tatraPay: rurl: Order:processTatraPay
异常
class \PaySys\PaySys\Exception extends \Exception {} class \PaySys\PaySys\SignatureException extends \PaySys\PaySys\Exception {} class \PaySys\PaySys\ServerException extends \PaySys\PaySys\Exception {} class \PaySys\PaySys\InvalidArgumentException extends \PaySys\PaySys\Exception {} class \PaySys\PaySys\ConfigurationException extends \PaySys\PaySys\Exception {}