57 lines
1.8 KiB
PHP
57 lines
1.8 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use Apoloz\AlfaBank\Data\Webhooks\Payloads\BaasWebhookData;
|
|
use Apoloz\AlfaBank\Data\Webhooks\Payloads\SbpWebhookData;
|
|
use Apoloz\AlfaBank\Webhooks\WebhookFactory;
|
|
|
|
test('can detect baas webhook', function (): void {
|
|
$payload = [
|
|
[
|
|
'object' => 'ul_transaction_default',
|
|
'actionType' => 'create',
|
|
'eventTime' => '2022-01-12T00:00:00',
|
|
'data' => [
|
|
'transactionId' => 'TX123',
|
|
'amount' => ['amount' => 100, 'currencyName' => 'RUR'],
|
|
'direction' => 'DEBIT',
|
|
'documentDate' => '2022-01-12',
|
|
'operationCode' => '01',
|
|
'paymentPurpose' => 'Test',
|
|
'uuid' => 'uuid-123',
|
|
],
|
|
],
|
|
];
|
|
|
|
expect(WebhookFactory::isBaas($payload))->toBeTrue();
|
|
|
|
$webhook = WebhookFactory::create($payload);
|
|
expect($webhook)->toBeInstanceOf(BaasWebhookData::class)
|
|
->and($webhook->object)->toBe('ul_transaction_default')
|
|
->and($webhook->data->transactionId)->toBe('TX123');
|
|
});
|
|
|
|
test('can detect sbp webhook', function (): void {
|
|
$payload = [
|
|
[
|
|
'object' => 'jp_sbp_incoming_payments',
|
|
'actionType' => 'update',
|
|
'data' => [
|
|
'qrcId' => 'QR123',
|
|
'nspkTransactionId' => 'NSPK123',
|
|
'amount' => 1000,
|
|
'currency' => 'RUR',
|
|
'timestamp' => '2024-11-26T09:09:32Z',
|
|
],
|
|
],
|
|
];
|
|
|
|
expect(WebhookFactory::isSbp($payload))->toBeTrue();
|
|
|
|
$webhook = WebhookFactory::create($payload);
|
|
expect($webhook)->toBeInstanceOf(SbpWebhookData::class)
|
|
->and($webhook->object)->toBe('jp_sbp_incoming_payments')
|
|
->and($webhook->data->qrcId)->toBe('QR123');
|
|
});
|