insightbase/revolut-merchant-api-nette
Composer 安装命令:
composer require insightbase/revolut-merchant-api-nette
包简介
Revolut Merchant API client for PHP / Nette
README 文档
README
PHP client pro Revolut Merchant API s podporou Nette DI a Tracy panelu.
Instalace
Pomocí Composeru:
composer require insightbase/revolut-merchant-api-nette
Požadavky
PHP >= 8.1
ext-curl
Nette DI
Tracy (pro debug panel)
Použití
use RevolutMerchantApi\Api\RevolutHttpClient;
use RevolutMerchantApi\Api\RevolutApi;
use RevolutMerchantApi\Dto\RevolutOrder;
use RevolutMerchantApi\Enum\CaptureMode;
use RevolutMerchantApi\Enum\ChallengeMode;
$client = new RevolutHttpClient('TVUJ_API_KEY', 'https://merchant.revolut.com/api');
$api = new RevolutApi($client);
$order = (new RevolutOrder())
->setAmount(50.25)
->setCurrency('GBP')
->setCaptureMode(CaptureMode::AUTOMATIC)
->setEnforceChallenge(ChallengeMode::AUTOMATIC)
->setDescription('Ukázková platba');
$response = $api->createOrder($order);
var_dump($response);
Order payments:
try {
$payments = $revolut->getOrderPayments($orderId);
foreach ($payments->items as $payment) {
dump($payment['id'], $payment['state'], $payment['payment_method']);
}
} catch (RevolutException $e) {
dump($e->errorCode, $e->httpStatus, $e->getMessage());
}
Payment detail
use RevolutMerchantApi\Api\RevolutApi;
use RevolutMerchantApi\Dto\Response\RevolutPaymentResponse;
use RevolutMerchantApi\Dto\Response\RevolutException;
/** @var RevolutApi $api */
$api = $this->revolutMerchantApi; // v Nette přes DI
$paymentId = '6633855a-0e4f-a768-8b2c-e765d8872505';
$response = $api->getPayment($paymentId);
if ($response instanceof RevolutPaymentResponse) {
dump($response->state, $response->amount, $response->paymentMethod);
} elseif ($response instanceof RevolutException) {
dump($response->statusCode, $response->raw); // raw['errorId'], raw['code'] atd.
}
Nette DI Extension
extensions:
revolutMerchantApi: RevolutMerchantApi\Nette\RevolutMerchantApiExtension
revolutMerchantApi:
apiKey: %revolutApiKey%
apiUrl: https://merchant.revolut.com/api
debug: true
Tracy Panel
Automaticky zobrazí všechny požadavky v Tracy debug baru.
Webhook verification + auto-dispatch (Nette)
revolutMerchantApi:
webhook:
signingSecret: %revolutWebhookSigningSecret%
timestampToleranceMs: 300000
<?php
use RevolutMerchantApi\Dto\OrderCompletedWebhook;
use RevolutMerchantApi\Dto\WebhookPayload;
use RevolutMerchantApi\Enum\WebhookEvent;
use RevolutMerchantApi\Webhook\WebhookEventHandlerInterface;
final class OrderCompletedHandler implements WebhookEventHandlerInterface
{
public static function event(): WebhookEvent
{
return WebhookEvent::ORDER_COMPLETED;
}
public function handle(WebhookPayload $payload): void
{
if ($payload instanceof OrderCompletedWebhook) {
// business logic
}
}
}
Tag handler service as revolut.webhookHandler, then call
RevolutMerchantApi\Nette\RevolutWebhookRouter::handleVerifiedRequest($httpRequest).
Webhook request logging
<?php
use RevolutMerchantApi\Webhook\WebhookLoggerInterface;
use RevolutMerchantApi\Webhook\WebhookLogRecord;
final class DatabaseWebhookLogger implements WebhookLoggerInterface
{
public function log(WebhookLogRecord $record): void
{
// Persist $record->rawPayload, $record->headers, $record->status,
// $record->event, $record->errorCode, $record->errorMessage, etc.
}
}
Register the logger as a service. The extension automatically uses any service
implementing WebhookLoggerInterface; otherwise it falls back to a no-op logger.
services:
- App\Revolut\Webhook\DatabaseWebhookLogger
Logged statuses include verified, parsed_unverified, dispatched,
missing_configuration, missing_signature_headers, invalid_signature,
parse_failed, and dispatch_failed. Logger exceptions are swallowed so
logging does not change the webhook endpoint response behavior.
Sample endpoint presenter (200/400 flow)
File: examples/RevolutWebhookPresenter.php
Minimal route example:
# RouterFactory
$router->addRoute('revolut/webhook', 'Webhook:Revolut:in');
Service tag example:
services:
- App\Revolut\Webhook\OrderCompletedHandler
tags: [revolut.webhookHandler]
Controller service variant (outside presenter)
File: examples/RevolutWebhookController.php
Usage in API presenter:
<?php
use App\Api\RevolutWebhookController;
use Nette\Application\UI\Presenter;
final class RevolutWebhookPresenter extends Presenter
{
public function __construct(
private readonly RevolutWebhookController $controller
) {
parent::__construct();
}
public function actionIn(): void
{
$result = $this->controller->handle($this->getHttpRequest());
$this->sendJson($result->body, $result->statusCode);
}
}
More runnable examples
examples/CreateOrderExample.php
examples/GetOrderPaymentsExample.php
examples/GetPaymentDetailExample.php
insightbase/revolut-merchant-api-nette 适用场景与选型建议
insightbase/revolut-merchant-api-nette 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.01k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 11 月 22 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 insightbase/revolut-merchant-api-nette 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 insightbase/revolut-merchant-api-nette 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 1.01k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 20
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-11-22