diff --git a/src/Sbp/Requests/CashLink/ActivateCashQrRequest.php b/src/Sbp/Requests/CashLink/ActivateCashQrRequest.php
index a3df866..907d8bd 100644
--- a/src/Sbp/Requests/CashLink/ActivateCashQrRequest.php
+++ b/src/Sbp/Requests/CashLink/ActivateCashQrRequest.php
@@ -13,11 +13,12 @@ namespace Apoloz\AlfaBank\Sbp\Requests\CashLink;
//
//
use Apoloz\AlfaBank\Sbp\Data\CashLink\ActivateCashQrRequestData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -25,7 +26,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class ActivateCashQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -56,9 +57,9 @@ class ActivateCashQrRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'ActivateCashQRc',
'TermNo' => $this->data->TermNo,
'qrcId' => $this->data->qrcId,
@@ -67,22 +68,22 @@ class ActivateCashQrRequest extends Request implements HasBody
];
if ($this->data->OrderNumber !== null) {
- $body['OrderNumber'] = $this->data->OrderNumber;
+ $bodyArray['OrderNumber'] = $this->data->OrderNumber;
}
if ($this->data->paymentPurpose !== null) {
- $body['paymentPurpose'] = $this->data->paymentPurpose;
+ $bodyArray['paymentPurpose'] = $this->data->paymentPurpose;
}
if ($this->data->qrTtl !== null) {
- $body['qrTtl'] = $this->data->qrTtl;
+ $bodyArray['qrTtl'] = $this->data->qrTtl;
}
if ($this->data->redirectUrl !== null) {
- $body['redirectUrl'] = $this->data->redirectUrl;
+ $bodyArray['redirectUrl'] = $this->data->redirectUrl;
}
if ($this->data->notificationUrl !== null) {
- $body['queryData'] = ['notificationUrl' => $this->data->notificationUrl];
+ $bodyArray['queryData'] = ['notificationUrl' => $this->data->notificationUrl];
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/CashLink/ChangeAccountForCashQrRequest.php b/src/Sbp/Requests/CashLink/ChangeAccountForCashQrRequest.php
index 4550117..7a0e820 100644
--- a/src/Sbp/Requests/CashLink/ChangeAccountForCashQrRequest.php
+++ b/src/Sbp/Requests/CashLink/ChangeAccountForCashQrRequest.php
@@ -12,20 +12,20 @@ namespace Apoloz\AlfaBank\Sbp\Requests\CashLink;
//
//
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class ChangeAccountForCashQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -53,7 +53,7 @@ class ChangeAccountForCashQrRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): array
+ public function createDtoFromResponse(Response $response): array
{
return $response->json();
}
@@ -61,9 +61,9 @@ class ChangeAccountForCashQrRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'ChangeAccForCashQRc',
'TermNo' => $this->TermNo,
'qrcId' => $this->qrcId,
@@ -71,16 +71,16 @@ class ChangeAccountForCashQrRequest extends Request implements HasBody
];
if ($this->NewTermNo !== null) {
- $body['NewTermNo'] = $this->NewTermNo;
+ $bodyArray['NewTermNo'] = $this->NewTermNo;
}
if ($this->NewMerchantId !== null) {
- $body['NewMerchantId'] = $this->NewMerchantId;
+ $bodyArray['NewMerchantId'] = $this->NewMerchantId;
}
if ($this->redirectUrl !== null) {
- $body['redirectUrl'] = $this->redirectUrl;
+ $bodyArray['redirectUrl'] = $this->redirectUrl;
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/CashLink/ChangeTermNoForCashQrRequest.php b/src/Sbp/Requests/CashLink/ChangeTermNoForCashQrRequest.php
index 94910ca..eae6cb1 100644
--- a/src/Sbp/Requests/CashLink/ChangeTermNoForCashQrRequest.php
+++ b/src/Sbp/Requests/CashLink/ChangeTermNoForCashQrRequest.php
@@ -12,20 +12,20 @@ namespace Apoloz\AlfaBank\Sbp\Requests\CashLink;
//
//
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class ChangeTermNoForCashQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -49,7 +49,7 @@ class ChangeTermNoForCashQrRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): array
+ public function createDtoFromResponse(Response $response): array
{
return $response->json();
}
@@ -57,13 +57,15 @@ class ChangeTermNoForCashQrRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return [
+ $bodyArray = [
'command' => 'ChangeTermNoForCashQRc',
'TermNo' => $this->TermNo,
'qrcId' => $this->qrcId,
];
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/CashLink/DeleteCashQrRequest.php b/src/Sbp/Requests/CashLink/DeleteCashQrRequest.php
index 116bcd7..9d8236b 100644
--- a/src/Sbp/Requests/CashLink/DeleteCashQrRequest.php
+++ b/src/Sbp/Requests/CashLink/DeleteCashQrRequest.php
@@ -12,20 +12,20 @@ namespace Apoloz\AlfaBank\Sbp\Requests\CashLink;
//
//
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class DeleteCashQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -49,7 +49,7 @@ class DeleteCashQrRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): array
+ public function createDtoFromResponse(Response $response): array
{
return $response->json();
}
@@ -57,13 +57,15 @@ class DeleteCashQrRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return [
+ $bodyArray = [
'command' => 'DelCashQRc',
'TermNo' => $this->TermNo,
'qrcId' => $this->qrcId,
];
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/CashLink/GetCashQrHistoryRequest.php b/src/Sbp/Requests/CashLink/GetCashQrHistoryRequest.php
index 4f8f7d4..3480e3f 100644
--- a/src/Sbp/Requests/CashLink/GetCashQrHistoryRequest.php
+++ b/src/Sbp/Requests/CashLink/GetCashQrHistoryRequest.php
@@ -12,20 +12,20 @@ namespace Apoloz\AlfaBank\Sbp\Requests\CashLink;
//
//
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class GetCashQrHistoryRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -51,7 +51,7 @@ class GetCashQrHistoryRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): array
+ public function createDtoFromResponse(Response $response): array
{
return $response->json();
}
@@ -59,15 +59,17 @@ class GetCashQrHistoryRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return [
+ $bodyArray = [
'command' => 'GetCashQrcId',
'TermNo' => $this->TermNo,
'qrcId' => $this->qrcId,
'dateFrom' => $this->dateFrom,
'dateTo' => $this->dateTo,
];
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/CashLink/GetCashQrStatusRequest.php b/src/Sbp/Requests/CashLink/GetCashQrStatusRequest.php
index f4fb889..06688c8 100644
--- a/src/Sbp/Requests/CashLink/GetCashQrStatusRequest.php
+++ b/src/Sbp/Requests/CashLink/GetCashQrStatusRequest.php
@@ -12,20 +12,20 @@ namespace Apoloz\AlfaBank\Sbp\Requests\CashLink;
//
//
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class GetCashQrStatusRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -49,7 +49,7 @@ class GetCashQrStatusRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): array
+ public function createDtoFromResponse(Response $response): array
{
return $response->json();
}
@@ -57,13 +57,15 @@ class GetCashQrStatusRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return [
+ $bodyArray = [
'command' => 'GetCashQRCstatus',
'TermNo' => $this->TermNo,
'qrcId' => $this->qrcId,
];
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/CashLink/RegCashQrRequest.php b/src/Sbp/Requests/CashLink/RegCashQrRequest.php
index 2315d35..6474d87 100644
--- a/src/Sbp/Requests/CashLink/RegCashQrRequest.php
+++ b/src/Sbp/Requests/CashLink/RegCashQrRequest.php
@@ -14,11 +14,12 @@ namespace Apoloz\AlfaBank\Sbp\Requests\CashLink;
//
use Apoloz\AlfaBank\Sbp\Data\CashLink\RegCashQrRequestData;
use Apoloz\AlfaBank\Sbp\Data\CashLink\RegCashQrResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -26,7 +27,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class RegCashQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,30 +58,30 @@ class RegCashQrRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'RegCashQRc',
'TermNo' => $this->data->TermNo,
];
if ($this->data->mediaType !== null) {
- $body['mediaType'] = $this->data->mediaType;
+ $bodyArray['mediaType'] = $this->data->mediaType;
}
if ($this->data->width !== null) {
- $body['width'] = $this->data->width;
+ $bodyArray['width'] = $this->data->width;
}
if ($this->data->height !== null) {
- $body['height'] = $this->data->height;
+ $bodyArray['height'] = $this->data->height;
}
if ($this->data->redirectUrl !== null) {
- $body['redirectUrl'] = $this->data->redirectUrl;
+ $bodyArray['redirectUrl'] = $this->data->redirectUrl;
}
if ($this->data->qrcId !== null) {
- $body['qrcId'] = $this->data->qrcId;
+ $bodyArray['qrcId'] = $this->data->qrcId;
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/DigitalRuble/CashLink/ChangeAccForCashUniQrRequest.php b/src/Sbp/Requests/DigitalRuble/CashLink/ChangeAccForCashUniQrRequest.php
index 635c216..0fbed08 100644
--- a/src/Sbp/Requests/DigitalRuble/CashLink/ChangeAccForCashUniQrRequest.php
+++ b/src/Sbp/Requests/DigitalRuble/CashLink/ChangeAccForCashUniQrRequest.php
@@ -18,7 +18,6 @@ use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
//
@@ -26,7 +25,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class ChangeAccForCashUniQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,42 +56,42 @@ class ChangeAccForCashUniQrRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'ChangeAccForCashUniQr',
'TermNo' => $this->data->TermNo,
];
if ($this->data->messageID !== null) {
- $body['messageID'] = $this->data->messageID;
+ $bodyArray['messageID'] = $this->data->messageID;
}
if ($this->data->qrcId !== null) {
- $body['qrcId'] = $this->data->qrcId;
+ $bodyArray['qrcId'] = $this->data->qrcId;
}
if ($this->data->account !== null) {
- $body['account'] = $this->data->account;
+ $bodyArray['account'] = $this->data->account;
}
if ($this->data->accountDR !== null) {
- $body['accountDR'] = $this->data->accountDR;
+ $bodyArray['accountDR'] = $this->data->accountDR;
}
if ($this->data->NewTermNo !== null) {
- $body['NewTermNo'] = $this->data->NewTermNo;
+ $bodyArray['NewTermNo'] = $this->data->NewTermNo;
}
if ($this->data->NewMerchantId !== null) {
- $body['NewMerchantId'] = $this->data->NewMerchantId;
+ $bodyArray['NewMerchantId'] = $this->data->NewMerchantId;
}
if ($this->data->redirectUrl !== null) {
- $body['redirectUrl'] = $this->data->redirectUrl;
+ $bodyArray['redirectUrl'] = $this->data->redirectUrl;
}
if ($this->data->paymentPageUrl !== null) {
- $body['paymentPageUrl'] = $this->data->paymentPageUrl;
+ $bodyArray['paymentPageUrl'] = $this->data->paymentPageUrl;
}
if ($this->data->fraudScore !== null) {
- $body['fraudScore'] = $this->data->fraudScore;
+ $bodyArray['fraudScore'] = $this->data->fraudScore;
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/DigitalRuble/CashLink/CreateCashUniQrRequest.php b/src/Sbp/Requests/DigitalRuble/CashLink/CreateCashUniQrRequest.php
index bc5d82b..d126621 100644
--- a/src/Sbp/Requests/DigitalRuble/CashLink/CreateCashUniQrRequest.php
+++ b/src/Sbp/Requests/DigitalRuble/CashLink/CreateCashUniQrRequest.php
@@ -18,7 +18,6 @@ use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
//
@@ -26,7 +25,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class CreateCashUniQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,40 +56,40 @@ class CreateCashUniQrRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'ReqCashUniQr',
'TermNo' => $this->data->TermNo,
];
if ($this->data->messageID !== null) {
- $body['messageID'] = $this->data->messageID;
+ $bodyArray['messageID'] = $this->data->messageID;
}
if ($this->data->redirectUrl !== null) {
- $body['redirectUrl'] = $this->data->redirectUrl;
+ $bodyArray['redirectUrl'] = $this->data->redirectUrl;
}
if ($this->data->paymentPageUrl !== null) {
- $body['paymentPageUrl'] = $this->data->paymentPageUrl;
+ $bodyArray['paymentPageUrl'] = $this->data->paymentPageUrl;
}
if ($this->data->mediaType !== null) {
- $body['mediaType'] = $this->data->mediaType;
+ $bodyArray['mediaType'] = $this->data->mediaType;
}
if ($this->data->width !== null) {
- $body['width'] = $this->data->width;
+ $bodyArray['width'] = $this->data->width;
}
if ($this->data->height !== null) {
- $body['height'] = $this->data->height;
+ $bodyArray['height'] = $this->data->height;
}
if ($this->data->qrcId !== null) {
- $body['qrcId'] = $this->data->qrcId;
+ $bodyArray['qrcId'] = $this->data->qrcId;
}
if ($this->data->notificationUrl !== null) {
- $body['queryData'] = ['notificationUrl' => $this->data->notificationUrl];
+ $bodyArray['queryData'] = ['notificationUrl' => $this->data->notificationUrl];
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/DigitalRuble/CashLink/GetCashUniQrStatusRequest.php b/src/Sbp/Requests/DigitalRuble/CashLink/GetCashUniQrStatusRequest.php
index 18f9d25..ebd62b6 100644
--- a/src/Sbp/Requests/DigitalRuble/CashLink/GetCashUniQrStatusRequest.php
+++ b/src/Sbp/Requests/DigitalRuble/CashLink/GetCashUniQrStatusRequest.php
@@ -18,7 +18,6 @@ use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
//
@@ -26,7 +25,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class GetCashUniQrStatusRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,9 +56,9 @@ class GetCashUniQrStatusRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'GetCashUniQrStatus',
'TermNo' => $this->data->TermNo,
'uniQrId' => $this->data->uniQrId,
@@ -67,13 +66,13 @@ class GetCashUniQrStatusRequest extends Request implements HasBody
];
if ($this->data->messageID !== null) {
- $body['messageID'] = $this->data->messageID;
+ $bodyArray['messageID'] = $this->data->messageID;
}
if ($this->data->payrrn !== null) {
- $body['payrrn'] = $this->data->payrrn;
+ $bodyArray['payrrn'] = $this->data->payrrn;
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/DigitalRuble/CreateUniQrRequest.php b/src/Sbp/Requests/DigitalRuble/CreateUniQrRequest.php
index 9a24fdb..dba56ce 100644
--- a/src/Sbp/Requests/DigitalRuble/CreateUniQrRequest.php
+++ b/src/Sbp/Requests/DigitalRuble/CreateUniQrRequest.php
@@ -6,15 +6,16 @@ namespace Apoloz\AlfaBank\Sbp\Requests\DigitalRuble;
use Apoloz\AlfaBank\Sbp\Data\DigitalRuble\CreateUniQrRequestData;
use Apoloz\AlfaBank\Sbp\Data\DigitalRuble\UniQrResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
class CreateUniQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
protected Method $method = Method::POST;
@@ -32,40 +33,40 @@ class CreateUniQrRequest extends Request implements HasBody
return UniQrResponseData::from($response->json());
}
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'ReqUniQr',
'TermNo' => $this->data->TermNo,
'uniQrType' => $this->data->uniQrType,
];
if ($this->data->amount !== null) {
- $body['amount'] = $this->data->amount;
+ $bodyArray['amount'] = $this->data->amount;
}
if ($this->data->paymentPurpose !== null) {
- $body['paymentPurpose'] = $this->data->paymentPurpose;
+ $bodyArray['paymentPurpose'] = $this->data->paymentPurpose;
}
if ($this->data->redirectUrl !== null) {
- $body['redirectUrl'] = $this->data->redirectUrl;
+ $bodyArray['redirectUrl'] = $this->data->redirectUrl;
}
if ($this->data->paymentPageUrl !== null) {
- $body['paymentPageUrl'] = $this->data->paymentPageUrl;
+ $bodyArray['paymentPageUrl'] = $this->data->paymentPageUrl;
}
if ($this->data->mediaType !== null) {
- $body['mediaType'] = $this->data->mediaType;
+ $bodyArray['mediaType'] = $this->data->mediaType;
}
if ($this->data->width !== null) {
- $body['width'] = $this->data->width;
+ $bodyArray['width'] = $this->data->width;
}
if ($this->data->height !== null) {
- $body['height'] = $this->data->height;
+ $bodyArray['height'] = $this->data->height;
}
if ($this->data->qrTtl !== null) {
- $body['qrTtl'] = $this->data->qrTtl;
+ $bodyArray['qrTtl'] = $this->data->qrTtl;
}
if ($this->data->messageID !== null) {
- $body['messageID'] = $this->data->messageID;
+ $bodyArray['messageID'] = $this->data->messageID;
}
$queryData = [];
@@ -83,9 +84,9 @@ class CreateUniQrRequest extends Request implements HasBody
}
if (! empty($queryData)) {
- $body['queryData'] = $queryData;
+ $bodyArray['queryData'] = $queryData;
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
}
diff --git a/src/Sbp/Requests/DigitalRuble/GetUniQrStatusRequest.php b/src/Sbp/Requests/DigitalRuble/GetUniQrStatusRequest.php
index b4648ec..622a3d2 100644
--- a/src/Sbp/Requests/DigitalRuble/GetUniQrStatusRequest.php
+++ b/src/Sbp/Requests/DigitalRuble/GetUniQrStatusRequest.php
@@ -12,20 +12,21 @@ namespace Apoloz\AlfaBank\Sbp\Requests\DigitalRuble;
//
//
+use Apoloz\AlfaBank\Sbp\Data\DigitalRuble\GetUniQrStatusResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class GetUniQrStatusRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -49,21 +50,23 @@ class GetUniQrStatusRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): \Apoloz\AlfaBank\Sbp\Data\DigitalRuble\GetUniQrStatusResponseData
+ public function createDtoFromResponse(Response $response): GetUniQrStatusResponseData
{
- return \Apoloz\AlfaBank\Sbp\Data\DigitalRuble\GetUniQrStatusResponseData::from($response->json());
+ return GetUniQrStatusResponseData::from($response->json());
}
//
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return [
+ $bodyArray = [
'command' => 'GetUniQrStatus',
'TermNo' => $this->TermNo,
'uniQrIds' => $this->uniQrIds,
];
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Management/BlockQrRequest.php b/src/Sbp/Requests/Management/BlockQrRequest.php
index 9150ff1..2aa4a16 100644
--- a/src/Sbp/Requests/Management/BlockQrRequest.php
+++ b/src/Sbp/Requests/Management/BlockQrRequest.php
@@ -13,20 +13,21 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Management;
//
//
use Apoloz\AlfaBank\Sbp\Data\Management\BlockQrRequestData;
+use Apoloz\AlfaBank\Sbp\Data\Management\SbpManagementResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class BlockQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -49,20 +50,22 @@ class BlockQrRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): \Apoloz\AlfaBank\Sbp\Data\Management\SbpManagementResponseData
+ public function createDtoFromResponse(Response $response): SbpManagementResponseData
{
- return \Apoloz\AlfaBank\Sbp\Data\Management\SbpManagementResponseData::from($response->json());
+ return SbpManagementResponseData::from($response->json());
}
//
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return array_merge(
+ $bodyArray = array_merge(
['command' => 'BlockQRcId'],
$this->data->toArray()
);
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Management/GetBlockedQrListRequest.php b/src/Sbp/Requests/Management/GetBlockedQrListRequest.php
index 3236afd..724ab7a 100644
--- a/src/Sbp/Requests/Management/GetBlockedQrListRequest.php
+++ b/src/Sbp/Requests/Management/GetBlockedQrListRequest.php
@@ -12,20 +12,21 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Management;
//
//
+use Apoloz\AlfaBank\Sbp\Data\Management\GetBlockedQrListResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class GetBlockedQrListRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -48,20 +49,22 @@ class GetBlockedQrListRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): \Apoloz\AlfaBank\Sbp\Data\Management\GetBlockedQrListResponseData
+ public function createDtoFromResponse(Response $response): GetBlockedQrListResponseData
{
- return \Apoloz\AlfaBank\Sbp\Data\Management\GetBlockedQrListResponseData::from($response->json());
+ return GetBlockedQrListResponseData::from($response->json());
}
//
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return [
+ $bodyArray = [
'command' => 'GetBlockedQRcIdList',
'TermNo' => $this->TermNo,
];
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Management/UnblockQrRequest.php b/src/Sbp/Requests/Management/UnblockQrRequest.php
index 34039a2..adcdd93 100644
--- a/src/Sbp/Requests/Management/UnblockQrRequest.php
+++ b/src/Sbp/Requests/Management/UnblockQrRequest.php
@@ -13,20 +13,21 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Management;
//
//
use Apoloz\AlfaBank\Sbp\Data\Management\BlockQrRequestData;
+use Apoloz\AlfaBank\Sbp\Data\Management\SbpManagementResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class UnblockQrRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -49,20 +50,22 @@ class UnblockQrRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): \Apoloz\AlfaBank\Sbp\Data\Management\SbpManagementResponseData
+ public function createDtoFromResponse(Response $response): SbpManagementResponseData
{
- return \Apoloz\AlfaBank\Sbp\Data\Management\SbpManagementResponseData::from($response->json());
+ return SbpManagementResponseData::from($response->json());
}
//
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return array_merge(
+ $bodyArray = array_merge(
['command' => 'UnblockQRcId'],
$this->data->toArray()
);
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Registry/GetBankListRequest.php b/src/Sbp/Requests/Registry/GetBankListRequest.php
index 9c6d5f6..c4d3318 100644
--- a/src/Sbp/Requests/Registry/GetBankListRequest.php
+++ b/src/Sbp/Requests/Registry/GetBankListRequest.php
@@ -13,11 +13,12 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Registry;
//
//
use Apoloz\AlfaBank\Sbp\Data\Registry\GetBankListResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -25,7 +26,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class GetBankListRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,20 +58,20 @@ class GetBankListRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'GetBankList',
];
if ($this->messageID !== null) {
- $body['messageID'] = $this->messageID;
+ $bodyArray['messageID'] = $this->messageID;
}
if ($this->BankMemberIdFilter !== null) {
- $body['BankMemberIdFilter'] = $this->BankMemberIdFilter;
+ $bodyArray['BankMemberIdFilter'] = $this->BankMemberIdFilter;
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Reversal/GetQrcReversalDataRequest.php b/src/Sbp/Requests/Reversal/GetQrcReversalDataRequest.php
index 57d587f..50d75b2 100644
--- a/src/Sbp/Requests/Reversal/GetQrcReversalDataRequest.php
+++ b/src/Sbp/Requests/Reversal/GetQrcReversalDataRequest.php
@@ -14,11 +14,12 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Reversal;
//
use Apoloz\AlfaBank\Sbp\Data\Reversal\GetQrcReversalDataRequestData;
use Apoloz\AlfaBank\Sbp\Data\Reversal\GetQrcReversalDataResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -26,7 +27,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class GetQrcReversalDataRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,12 +58,14 @@ class GetQrcReversalDataRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return array_merge(
+ $bodyArray = array_merge(
['command' => 'GetQRCreversalData'],
$this->data->toArray()
);
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Reversal/GetQrcReversalHistoryRequest.php b/src/Sbp/Requests/Reversal/GetQrcReversalHistoryRequest.php
index 1b25da1..813216c 100644
--- a/src/Sbp/Requests/Reversal/GetQrcReversalHistoryRequest.php
+++ b/src/Sbp/Requests/Reversal/GetQrcReversalHistoryRequest.php
@@ -5,15 +5,16 @@ declare(strict_types=1);
namespace Apoloz\AlfaBank\Sbp\Requests\Reversal;
use Apoloz\AlfaBank\Sbp\Data\Reversal\ReversalHistoryResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
class GetQrcReversalHistoryRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
protected Method $method = Method::POST;
@@ -32,12 +33,14 @@ class GetQrcReversalHistoryRequest extends Request implements HasBody
return ReversalHistoryResponseData::from($response->json());
}
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return [
+ $bodyArray = [
'command' => 'GetQRCreversalHistory',
'TermNo' => $this->TermNo,
'payrrn' => $this->payrrn,
];
+
+ return CmsSigner::canonicalize($bodyArray);
}
}
diff --git a/src/Sbp/Requests/Reversal/GetQrcReversalStatusRequest.php b/src/Sbp/Requests/Reversal/GetQrcReversalStatusRequest.php
index bcd3d0f..7634775 100644
--- a/src/Sbp/Requests/Reversal/GetQrcReversalStatusRequest.php
+++ b/src/Sbp/Requests/Reversal/GetQrcReversalStatusRequest.php
@@ -14,11 +14,12 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Reversal;
//
use Apoloz\AlfaBank\Sbp\Data\Reversal\GetQrcReversalStatusRequestData;
use Apoloz\AlfaBank\Sbp\Data\Reversal\GetQrcReversalStatusResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -26,7 +27,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class GetQrcReversalStatusRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,12 +58,14 @@ class GetQrcReversalStatusRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return array_merge(
+ $bodyArray = array_merge(
['command' => 'GetQRCreversalStatus'],
$this->data->toArray()
);
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Reversal/QrcReversalRequest.php b/src/Sbp/Requests/Reversal/QrcReversalRequest.php
index 92847d9..1b75bc4 100644
--- a/src/Sbp/Requests/Reversal/QrcReversalRequest.php
+++ b/src/Sbp/Requests/Reversal/QrcReversalRequest.php
@@ -14,11 +14,12 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Reversal;
//
use Apoloz\AlfaBank\Sbp\Data\Reversal\QrcReversalRequestData;
use Apoloz\AlfaBank\Sbp\Data\Reversal\QrcReversalResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -26,7 +27,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class QrcReversalRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,12 +58,14 @@ class QrcReversalRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return array_merge(
+ $bodyArray = array_merge(
['command' => 'QRCreversal'],
$this->data->toArray()
);
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Status/GetQrcStatusRequest.php b/src/Sbp/Requests/Status/GetQrcStatusRequest.php
index 353bd9f..f966928 100644
--- a/src/Sbp/Requests/Status/GetQrcStatusRequest.php
+++ b/src/Sbp/Requests/Status/GetQrcStatusRequest.php
@@ -14,11 +14,12 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Status;
//
use Apoloz\AlfaBank\Sbp\Data\Status\GetQrcStatusRequestData;
use Apoloz\AlfaBank\Sbp\Data\Status\GetQrcStatusResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -26,7 +27,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class GetQrcStatusRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -57,12 +58,14 @@ class GetQrcStatusRequest extends Request implements HasBody
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return array_merge(
+ $bodyArray = array_merge(
['command' => 'GetQRCstatus'],
$this->data->toArray()
);
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Subscription/GetQrSubStatusRequest.php b/src/Sbp/Requests/Subscription/GetQrSubStatusRequest.php
index 74dd176..77926d2 100644
--- a/src/Sbp/Requests/Subscription/GetQrSubStatusRequest.php
+++ b/src/Sbp/Requests/Subscription/GetQrSubStatusRequest.php
@@ -12,20 +12,21 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Subscription;
//
//
+use Apoloz\AlfaBank\Sbp\Data\Subscription\GetQrSubStatusResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Http\Response;
+use Saloon\Traits\Body\HasStringBody;
-//
-// use Saloon\Http\Response; // Explicit import would be cleaner
//
//
//
class GetQrSubStatusRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -50,27 +51,27 @@ class GetQrSubStatusRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(\Saloon\Http\Response $response): \Apoloz\AlfaBank\Sbp\Data\Subscription\GetQrSubStatusResponseData
+ public function createDtoFromResponse(Response $response): GetQrSubStatusResponseData
{
- return \Apoloz\AlfaBank\Sbp\Data\Subscription\GetQrSubStatusResponseData::from($response->json());
+ return GetQrSubStatusResponseData::from($response->json());
}
//
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- $body = [
+ $bodyArray = [
'command' => 'GetQRCSubStatus',
'TermNo' => $this->TermNo,
'qrcId' => $this->qrcId,
];
if ($this->RQperiod !== null) {
- $body['RQperiod'] = $this->RQperiod;
+ $bodyArray['RQperiod'] = $this->RQperiod;
}
- return $body;
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Subscription/QrcSubPayPetitionRequest.php b/src/Sbp/Requests/Subscription/QrcSubPayPetitionRequest.php
index 1dc5347..c4818a4 100644
--- a/src/Sbp/Requests/Subscription/QrcSubPayPetitionRequest.php
+++ b/src/Sbp/Requests/Subscription/QrcSubPayPetitionRequest.php
@@ -12,11 +12,13 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Subscription;
//
//
+use Apoloz\AlfaBank\Sbp\Data\Subscription\QrcSubPayPetitionResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -24,7 +26,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class QrcSubPayPetitionRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -50,23 +52,25 @@ class QrcSubPayPetitionRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(Response $response): \Apoloz\AlfaBank\Sbp\Data\Subscription\QrcSubPayPetitionResponseData
+ public function createDtoFromResponse(Response $response): QrcSubPayPetitionResponseData
{
- return \Apoloz\AlfaBank\Sbp\Data\Subscription\QrcSubPayPetitionResponseData::from($response->json());
+ return QrcSubPayPetitionResponseData::from($response->json());
}
//
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return [
+ $bodyArray = [
'command' => 'QRCSubPayPetition',
'TermNo' => $this->TermNo,
'subscriptionToken' => $this->subscriptionToken,
'SenderMemberId' => $this->SenderMemberId,
'qrcId' => $this->qrcId,
];
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Sbp/Requests/Subscription/RegQrSubRequest.php b/src/Sbp/Requests/Subscription/RegQrSubRequest.php
index d352a36..8a34e7a 100644
--- a/src/Sbp/Requests/Subscription/RegQrSubRequest.php
+++ b/src/Sbp/Requests/Subscription/RegQrSubRequest.php
@@ -13,11 +13,13 @@ namespace Apoloz\AlfaBank\Sbp\Requests\Subscription;
//
//
use Apoloz\AlfaBank\Sbp\Data\Subscription\RegQrSubRequestData;
+use Apoloz\AlfaBank\Sbp\Data\Subscription\RegQrSubResponseData;
+use Apoloz\AlfaBank\Utils\CmsSigner;
use Saloon\Contracts\Body\HasBody;
use Saloon\Enums\Method;
use Saloon\Http\Request;
use Saloon\Http\Response;
-use Saloon\Traits\Body\HasJsonBody;
+use Saloon\Traits\Body\HasStringBody;
//
@@ -25,7 +27,7 @@ use Saloon\Traits\Body\HasJsonBody;
//
class RegQrSubRequest extends Request implements HasBody
{
- use HasJsonBody;
+ use HasStringBody;
//
//
@@ -48,20 +50,22 @@ class RegQrSubRequest extends Request implements HasBody
//
//
- public function createDtoFromResponse(Response $response): \Apoloz\AlfaBank\Sbp\Data\Subscription\RegQrSubResponseData
+ public function createDtoFromResponse(Response $response): RegQrSubResponseData
{
- return \Apoloz\AlfaBank\Sbp\Data\Subscription\RegQrSubResponseData::from($response->json());
+ return RegQrSubResponseData::from($response->json());
}
//
//
//
- protected function defaultBody(): array
+ protected function defaultBody(): string
{
- return array_merge(
+ $bodyArray = array_merge(
['command' => 'RegQRcSub'],
$this->data->toArray()
);
+
+ return CmsSigner::canonicalize($bodyArray);
}
//
}
diff --git a/src/Services/OpenSslCmsSigner.php b/src/Services/OpenSslCmsSigner.php
index 6d308b7..2141100 100644
--- a/src/Services/OpenSslCmsSigner.php
+++ b/src/Services/OpenSslCmsSigner.php
@@ -55,15 +55,17 @@ class OpenSslCmsSigner implements SignerInterface
@unlink($inFile);
@unlink($outFile);
- // Извлекаем Base64 тело подписи согласно примеру из документации Альфы
- $parts = explode("\n\n", $signedData, 2);
- if (isset($parts[1])) {
- $signature = trim($parts[1]);
- // Удаляем возможные PEM-завершители и переносы строк
- $signature = str_replace(["-----BEGIN PKCS7-----", "-----END PKCS7-----", "\n", "\r", " "], '', $signature);
- return $signature;
+ // Надежно извлекаем только Base64 блок подписи из S/MIME или PEM структуры
+ $parts = explode("\n\n", $signedData);
+ foreach ($parts as $part) {
+ // Очищаем часть от пробелов и переносов
+ $cleaned = str_replace(["\n", "\r", ' '], '', $part);
+ // Ищем блок, который выглядит как длинный Base64 (больше 128 символов) и не содержит S/MIME заголовков
+ if (preg_match('/^[a-zA-Z0-9\/+]+=*$/', $cleaned) && strlen($cleaned) > 128) {
+ return $cleaned;
+ }
}
- throw new SignerException("Failed to extract signature body from CMS container.");
+ throw new SignerException("Failed to extract signature body from CMS container. Output: " . substr($signedData, 0, 100));
}
}