Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 10 additions & 10 deletions .php-cs-fixer.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,19 @@

// But then we have some exclusions, i.e. we disable some of the checks/rules from Symfony:
// Logic
'yoda_style' => FALSE, // Allow both Yoda-style and regular comparisons.
'yoda_style' => false, // Allow both Yoda-style and regular comparisons.

// Whitespace
'blank_line_before_statement' => FALSE, // Don't put blank lines before `return` statements.
'concat_space' => FALSE, // Allow spaces around string concatenation operator.
'blank_line_after_opening_tag' => FALSE, // Allow file-level @noinspection suppressions to live on the `<?php` line.
'single_line_throw' => FALSE, // Allow `throw` statements to span multiple lines.
'blank_line_before_statement' => false, // Don't put blank lines before `return` statements.
'concat_space' => false, // Allow spaces around string concatenation operator.
'blank_line_after_opening_tag' => false, // Allow file-level @noinspection suppressions to live on the `<?php` line.
'single_line_throw' => false, // Allow `throw` statements to span multiple lines.

// phpDoc
'phpdoc_align' => FALSE, // Don't add spaces within phpDoc just to make parameter names / descriptions align.
'phpdoc_annotation_without_dot' => FALSE, // Allow terminating dot on @param and such.
'phpdoc_no_alias_tag' => FALSE, // Allow @link in addition to @see.
'phpdoc_separation' => FALSE, // Don't put blank line between @params, @throws and @return.
'phpdoc_summary' => FALSE, // Don't force terminating dot on the first line.
'phpdoc_align' => false, // Don't add spaces within phpDoc just to make parameter names / descriptions align.
'phpdoc_annotation_without_dot' => false, // Allow terminating dot on @param and such.
'phpdoc_no_alias_tag' => false, // Allow @link in addition to @see.
'phpdoc_separation' => false, // Don't put blank line between @params, @throws and @return.
'phpdoc_summary' => false, // Don't force terminating dot on the first line.
])
->setFinder($finder);
2 changes: 1 addition & 1 deletion lib/Fhp/Action/GetBalance.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ public function __unserialize(array $serialized): void
{
list(
$parentSerialized,
$this->account, $this->allAccounts
$this->account, $this->allAccounts,
) = $serialized;

is_array($parentSerialized) ?
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/Action/GetDepotAufstellung.php
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ public function __unserialize(array $serialized): void
{
list(
$parentSerialized,
$this->account
$this->account,
) = $serialized;

is_array($parentSerialized) ?
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/Action/GetStatementOfAccount.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ public function __unserialize(array $serialized): void
list(
$parentSerialized,
$this->account, $this->from, $this->to, $this->allAccounts,
$this->bankName
$this->bankName,
) = $serialized;

is_array($parentSerialized) ?
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/Action/GetStatementOfAccountXML.php
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public function __unserialize(array $serialized): void
{
list(
$parentSerialized,
$this->account, $this->camtURN, $this->from, $this->to, $this->allAccounts
$this->account, $this->camtURN, $this->from, $this->to, $this->allAccounts,
) = $serialized;

is_array($parentSerialized) ?
Expand Down
4 changes: 2 additions & 2 deletions lib/Fhp/Action/SendSEPADirectDebit.php
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ public function __unserialize(array $serialized): void
{
list(
$parentSerialized,
$this->singleDirectDebit, $this->tryToUseControlSumForSingleTransactions, $this->ctrlSum, $this->coreType, $this->painMessage, $this->painNamespace, $this->account
$this->singleDirectDebit, $this->tryToUseControlSumForSingleTransactions, $this->ctrlSum, $this->coreType, $this->painMessage, $this->painNamespace, $this->account,
) = $serialized;

is_array($parentSerialized) ?
Expand Down Expand Up @@ -151,7 +151,7 @@ protected function createRequest(BPD $bpd, ?UPD $upd)
// Sometimes the Bank reports supported schemas with a "_GBIC_X" postfix.
// GIBC_X stands for German Banking Industry Committee and a version counter.
$xmlSchema = $this->painNamespace;
$matchingSchemas = array_filter($supportedPainNamespaces, function($value) use ($xmlSchema) {
$matchingSchemas = array_filter($supportedPainNamespaces, function ($value) use ($xmlSchema) {
// For example urn:iso:std:iso:20022:tech:xsd:pain.008.001.08 from the xml matches
// urn:iso:std:iso:20022:tech:xsd:pain.008.001.08_GBIC_4
return str_starts_with($value, $xmlSchema);
Expand Down
6 changes: 3 additions & 3 deletions lib/Fhp/Action/SendSEPARealtimeTransfer.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ protected function createRequest(BPD $bpd, ?UPD $upd)
// Sometimes the Bank reports supported schemas with a "_GBIC_X" postfix.
// GIBC_X stands for German Banking Industry Committee and a version counter.
$xmlSchema = $this->xmlSchema;
$matchingSchemas = array_filter($supportedSchemas, function($value) use ($xmlSchema) {
$matchingSchemas = array_filter($supportedSchemas, function ($value) use ($xmlSchema) {
// For example urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 from the xml matches
// urn:iso:std:iso:20022:tech:xsd:pain.001.001.09_GBIC_4
return str_starts_with($value, $xmlSchema);
Expand Down Expand Up @@ -104,8 +104,8 @@ public function processResponse(Message $response)
return;
}

if ($response->findRueckmeldung(Rueckmeldungscode::ENTGEGENGENOMMEN) === null &&
$response->findRueckmeldung(Rueckmeldungscode::AUSGEFUEHRT) === null) {
if ($response->findRueckmeldung(Rueckmeldungscode::ENTGEGENGENOMMEN) === null
&& $response->findRueckmeldung(Rueckmeldungscode::AUSGEFUEHRT) === null) {
throw new UnexpectedResponseException('Bank did not confirm SEPATransfer execution');
}
}
Expand Down
14 changes: 5 additions & 9 deletions lib/Fhp/Action/SendSEPATransfer.php
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ public static function create(SEPAAccount $account, string $painMessage): SendSE

protected function createRequest(BPD $bpd, ?UPD $upd)
{
//ANALYSE XML FOR RECEIPTS AND PAYMENT DATE
$xmlAsObject = simplexml_load_string($this->painMessage, "SimpleXMLElement", LIBXML_NOCDATA);
// ANALYSE XML FOR RECEIPTS AND PAYMENT DATE
$xmlAsObject = simplexml_load_string($this->painMessage, 'SimpleXMLElement', LIBXML_NOCDATA);
$numberOfTransactions = $xmlAsObject->CstmrCdtTrfInitn->GrpHdr->NbOfTxs;
$hasReqdExDates = false;
foreach ($xmlAsObject->CstmrCdtTrfInitn?->PmtInf as $pmtInfo) {
Expand All @@ -58,25 +58,21 @@ protected function createRequest(BPD $bpd, ?UPD $upd)
}
}

//NOW READ OUT, WICH SEGMENT SHOULD BE USED:
// NOW READ OUT, WICH SEGMENT SHOULD BE USED:
if ($numberOfTransactions > 1 && $hasReqdExDates) {

// Terminierte SEPA-Sammelüberweisung (Segment HKCME / Kennung HICMES)
$segmentID = 'HICMES';
$segment = \Fhp\Segment\CME\HKCMEv1::createEmpty();
} elseif ($numberOfTransactions == 1 && $hasReqdExDates) {

// Terminierte SEPA-Überweisung (Segment HKCSE / Kennung HICSES)
$segmentID = 'HICSES';
$segment = \Fhp\Segment\CSE\HKCSEv1::createEmpty();
} elseif ($numberOfTransactions > 1 && !$hasReqdExDates) {

// SEPA-Sammelüberweisungen (Segment HKCCM / Kennung HICSES)
$segmentID = 'HICSES';
$segment = \Fhp\Segment\CCM\HKCCMv1::createEmpty();
} else {

//SEPA Einzelüberweisung (Segment HKCCS / Kennung HICCSS).
// SEPA Einzelüberweisung (Segment HKCCS / Kennung HICCSS).
$segmentID = 'HICCSS';
$segment = \Fhp\Segment\CCS\HKCCSv1::createEmpty();
}
Expand All @@ -92,7 +88,7 @@ protected function createRequest(BPD $bpd, ?UPD $upd)
// Sometimes the Bank reports supported schemas with a "_GBIC_X" postfix.
// GIBC_X stands for German Banking Industry Committee and a version counter.
$xmlSchema = $this->xmlSchema;
$matchingSchemas = array_filter($supportedSchemas, function($value) use ($xmlSchema) {
$matchingSchemas = array_filter($supportedSchemas, function ($value) use ($xmlSchema) {
// For example urn:iso:std:iso:20022:tech:xsd:pain.001.001.09 from the xml matches
// urn:iso:std:iso:20022:tech:xsd:pain.001.001.09_GBIC_4
return str_starts_with($value, $xmlSchema);
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/BaseAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ public function __unserialize(array $serialized): void
list(
$this->requestSegmentNumbers,
$this->tanRequest,
$this->needTanForSegment
$this->needTanForSegment,
) = $serialized;
}

Expand Down
4 changes: 2 additions & 2 deletions lib/Fhp/FinTs.php
Original file line number Diff line number Diff line change
Expand Up @@ -226,7 +226,7 @@ private function loadPersistedInstanceVersion2(array $data)
$this->selectedTanMedium,
$this->kundensystemId,
$this->dialogId,
$this->messageNumber
$this->messageNumber,
) = $data;
}

Expand Down Expand Up @@ -571,7 +571,7 @@ public function forgetDialog()
public function getTanModes(): array
{
$this->ensureTanModesAvailable();
$result = array();
$result = [];
foreach ($this->allowedTanModes as $tanModeId) {
if (!array_key_exists($tanModeId, $this->bpd->allTanModes)) continue;
$result[$tanModeId] = $this->bpd->allTanModes[$tanModeId];
Expand Down
4 changes: 2 additions & 2 deletions lib/Fhp/MT940/MT940.php
Original file line number Diff line number Diff line change
Expand Up @@ -142,8 +142,8 @@ public function parse(string $rawData): array
$soaDate = $this->getDate(substr($day[$i], 1, 6));

if (isset($result[$soaDate])) {
#$result[$soaDate] = ['end_balance' => []];
// $result[$soaDate] = ['end_balance' => []];

$amount = str_replace(',', '.', substr($day[$i], 10, -1));
$cdMark = substr($day[$i], 0, 1);
if ($cdMark == 'C') {
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/Model/StatementOfAccount/StatementOfAccount.php
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public static function fromMT940Array(array $array): StatementOfAccount
$statementModel->setStartBalance((float) $statement['start_balance']['amount']);
}
if (isset($statement['end_balance'])) {
$statementModel->setEndBalance((float) $statement['end_balance']['amount'] * ($statement["end_balance"]['credit_debit'] == MT940::CD_CREDIT ? 1 : -1));
$statementModel->setEndBalance((float) $statement['end_balance']['amount'] * ($statement['end_balance']['credit_debit'] == MT940::CD_CREDIT ? 1 : -1));
}
if (isset($statement['start_balance']['credit_debit'])) {
$statementModel->setCreditDebit($statement['start_balance']['credit_debit']);
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/Protocol/DialogInitialization.php
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ public function __unserialize(array $serialized): void
$this->hktanRef,
$this->kundensystemId,
$this->messageNumber,
$this->dialogId
$this->dialogId,
) = $serialized;

is_array($parentSerialized) ?
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/Protocol/UnexpectedResponseException.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
*/
class UnexpectedResponseException extends \RuntimeException
{
public function __construct(string $message, int $code = 0, \Exception $previous = null)
public function __construct(string $message, int $code = 0, ?\Exception $previous = null)
{
parent::__construct($message, $code, $previous);
}
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/Segment/CSE/HKCSEv1.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class HKCSEv1 extends BaseSegment
public \Fhp\Segment\Common\Kti $kontoverbindungInternational;
/** Max length: 256 */
public string $sepaDescriptor;
/**
/**
* The PAIN message in XML format.
* HISPAS informs which XML schemas are allowed.
* The <ReqdExctnDt> field must be 1999-01-01.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,4 @@ class ParameterTerminierteSEPAUeberweisungEinreichenV1 extends BaseDeg
/** Must be => 1 */
public int $minimaleVorlaufzeit;
public int $maximaleVorlaufzeit;

}
1 change: 0 additions & 1 deletion lib/Fhp/Segment/HIUPA/HIUPAv4.php
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ class HIUPAv4 extends BaseSegment
* it does not support it, so sending such a request to the bank will always lead to failure.
* 1: Explicitly declared types are definitely supported, anything else may be reported and can be sent; the bank
* will check online and accept/reject accordingly.
* @var int
*/
public int $updVerwendung;
/** Max length: 35 */
Expand Down
1 change: 0 additions & 1 deletion lib/Fhp/Segment/HKIDN/HKIDNv2.php
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ class HKIDNv2 extends BaseSegment
* 0: Kundensystem-ID wird nicht benötigt (HBCI DDV-Verfahren und chipkartenbasierte Verfahren ab
* Sicherheitsprofil-Version 3)
* 1: Kundensystem-ID wird benötigt (sonstige HBCI RAH-/RDH- und PIN/TAN-Verfahren)
* @var int
*/
public int $kundensystemStatus = 1; // This library only supports PIN/TAN, hence 1 is the right choice.

Expand Down
1 change: 0 additions & 1 deletion lib/Fhp/Segment/IPZ/HIIPZSv1.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
* @link https://www.hbci-zka.de/dokumente/spezifikation_deutsch/fintsv3/FinTS_3.0_Messages_Geschaeftsvorfaelle_2022-04-15_final_version.pdf
* Section: C.10.2.9.1.1 c)
*/

class HIIPZSv1 extends BaseGeschaeftsvorfallparameter
{
public ParameterSEPAInstantPaymentZahlungV1 $parameter;
Expand Down
2 changes: 0 additions & 2 deletions lib/Fhp/Segment/IPZ/HIIPZSv2.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

namespace Fhp\Segment\IPZ;

use Fhp\Segment\IPZ\ParameterSEPAInstantPaymentZahlungV2;
use Fhp\Segment\BaseGeschaeftsvorfallparameter;
use Fhp\Segment\BaseSegment;

Expand All @@ -12,7 +11,6 @@
* @link https://www.hbci-zka.de/dokumente/spezifikation_deutsch/fintsv3/FinTS_3.0_Messages_Geschaeftsvorfaelle_2022-04-15_final_version.pdf
* Section: C.10.2.9.1.2 c)
*/

class HIIPZSv2 extends BaseGeschaeftsvorfallparameter
{
public ParameterSEPAInstantPaymentZahlungV2 $parameter;
Expand Down
1 change: 0 additions & 1 deletion lib/Fhp/Segment/IPZ/HKIPZv1.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,5 +12,4 @@
*/
class HKIPZv1 extends HKCCSv1
{

}
Original file line number Diff line number Diff line change
Expand Up @@ -21,4 +21,4 @@ class ParameterSEPAInstantPaymentZahlungV1 extends BaseDeg implements Unterstuet

/** @var string[]|null @Max(9) Max length: 256 */
public ?array $unterstuetzteSEPADatenformate = null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,4 @@
*/
interface ParameterSepaKontoverbindungAnfordern extends UnterstuetzteSEPADatenformate
{

}
2 changes: 1 addition & 1 deletion lib/Fhp/Syntax/InvalidResponseException.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/
class InvalidResponseException extends \RuntimeException
{
public function __construct(string $message, int $code = 0, \Exception $previous = null)
public function __construct(string $message, int $code = 0, ?\Exception $previous = null)
{
parent::__construct($message, $code, $previous);
}
Expand Down
6 changes: 3 additions & 3 deletions lib/Fhp/Syntax/Parser.php
Original file line number Diff line number Diff line change
Expand Up @@ -159,8 +159,8 @@ public static function parseBinaryBlock(string $rawValue): ?Bin

$delimiterPos = strpos($rawValue, Delimiter::BINARY, 1);
if (
substr($rawValue, 0, 1) !== Delimiter::BINARY ||
$delimiterPos === false
substr($rawValue, 0, 1) !== Delimiter::BINARY
|| $delimiterPos === false
) {
throw new \InvalidArgumentException("Expected binary block header, got $rawValue");
}
Expand Down Expand Up @@ -205,7 +205,7 @@ public static function parseDeg(string $rawElements, $type, bool $allowEmpty = f
* write to (the same instance will be returned from this function).
* @param bool $allowEmpty If true, this returns either a valid DEG, or null if *all* the fields were empty.
* @param int $offset The position in $rawElements to be read next.
* @return array (BaseDeg|null, integer)
* @return array (BaseDeg|null, int)
* 1. The parsed value, which has the given $type or is null in case all the fields were empty and $allowEmpty
* is true.
* 2. The offset at which parsing should continue. The difference between this returned offset and the $offset
Expand Down
2 changes: 1 addition & 1 deletion lib/Fhp/UnsupportedException.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/
class UnsupportedException extends \RuntimeException
{
public function __construct(string $message, int $code = 0, \Exception $previous = null)
public function __construct(string $message, int $code = 0, ?\Exception $previous = null)
{
parent::__construct($message, $code, $previous);
}
Expand Down
20 changes: 11 additions & 9 deletions lib/Tests/Fhp/Integration/Consors/GetStatementOfAccountTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,17 @@ class GetStatementOfAccountTest extends ConsorsIntegrationTestBase
public const GET_STATEMENT_REQUEST = "HKKAZ:3:7+DExxABCDEFGH1234567890:CSDBDE71XXX:1234567890::280:50220500+N+20190601+20190922'HKTAN:4:6+4+HKKAZ'";

// Note: Consorsbank weirdly returns November statements even when only up to September was requested.
public const GET_STATEMENT_RESPONSE = "HIRMG:2:2:+3060::Teilweise liegen Warnungen/Hinweise vor.'HIRMS:3:2:3+0020::Der Auftrag wurde ausgefuhrt.+3076::Keine starke Authentifizierung erforderlich.+3997::Der Auftrag wurde nur teilweise ausgefuhrt.'"
. "HIKAZ:4:7:3+@1034@\r\n"
. ":20:0\r\n:21:NONREF\r\n:25:50220500/123456789\r\n:28C:0/7\r\n:60M:C191118EUR950,59\r\n"
. ":61:1911181118D2,8N008NONREF\r\n:86:008?00Dauerauftrag?20EREF+NOTPROVIDED ?21 ?\r\n22KREF+NONREF?23SVWZ+XY?30BICBICBICBI?31DExx444444444444444444?32\r\nMax Mustermannig\r\n:62M:C191118EUR947,79\r\n-\r\n"
. ":20:0\r\n:21:NONREF\r\n:25:50220500/123456789\r\n:28C:0/8\r\n:60M:C191120EUR947,79\r\n"
. ":61:1911201120D11,3N005NONREF\r\n:86:005?00Lastschrift (Einzugsermächtigung)?20EREF+ZAA0987654321 \r\n ?21 ?22KREF+NONREF?23SVWZ+LogPay OnlineTicket i.?\r\n24A.v. Irgendeine Firma und S?25oehne AG. Ihre Kundenn r. 2?26019\r\n999999999?30BICBICBI?31DExx555555555555555555?32LOGPAY FINANCIAL \r\nSERVICES G?33MBH\r\n"
. ":61:1911201120D15,5N005NONREF\r\n:86:005?00Lastschrift (Einzugsermächtigung)?20EREF+ZAA0123456789 \r\n ?21 ?22KREF+NONREF?23SVWZ+LogPay OnlineTicket i.?\r\n24A.v. Irgendeine Firma und S?25oehne AG. Ihre Kundenn r. 2?26019\r\n999999999?30BICBICBI?31DExx555555555555555555?32LOGPAY FINANCIAL \r\nSERVICES G?33MBH\r\n"
. ":62F:C191120EUR920,99\r\n-'"
. "HITAN:5:6:4+4++noref+nochallenge'";
public const GET_STATEMENT_RESPONSE = (
"HIRMG:2:2:+3060::Teilweise liegen Warnungen/Hinweise vor.'HIRMS:3:2:3+0020::Der Auftrag wurde ausgefuhrt.+3076::Keine starke Authentifizierung erforderlich.+3997::Der Auftrag wurde nur teilweise ausgefuhrt.'"
. "HIKAZ:4:7:3+@1034@\r\n"
. ":20:0\r\n:21:NONREF\r\n:25:50220500/123456789\r\n:28C:0/7\r\n:60M:C191118EUR950,59\r\n"
. ":61:1911181118D2,8N008NONREF\r\n:86:008?00Dauerauftrag?20EREF+NOTPROVIDED ?21 ?\r\n22KREF+NONREF?23SVWZ+XY?30BICBICBICBI?31DExx444444444444444444?32\r\nMax Mustermannig\r\n:62M:C191118EUR947,79\r\n-\r\n"
. ":20:0\r\n:21:NONREF\r\n:25:50220500/123456789\r\n:28C:0/8\r\n:60M:C191120EUR947,79\r\n"
. ":61:1911201120D11,3N005NONREF\r\n:86:005?00Lastschrift (Einzugsermächtigung)?20EREF+ZAA0987654321 \r\n ?21 ?22KREF+NONREF?23SVWZ+LogPay OnlineTicket i.?\r\n24A.v. Irgendeine Firma und S?25oehne AG. Ihre Kundenn r. 2?26019\r\n999999999?30BICBICBI?31DExx555555555555555555?32LOGPAY FINANCIAL \r\nSERVICES G?33MBH\r\n"
. ":61:1911201120D15,5N005NONREF\r\n:86:005?00Lastschrift (Einzugsermächtigung)?20EREF+ZAA0123456789 \r\n ?21 ?22KREF+NONREF?23SVWZ+LogPay OnlineTicket i.?\r\n24A.v. Irgendeine Firma und S?25oehne AG. Ihre Kundenn r. 2?26019\r\n999999999?30BICBICBI?31DExx555555555555555555?32LOGPAY FINANCIAL \r\nSERVICES G?33MBH\r\n"
. ":62F:C191120EUR920,99\r\n-'"
. "HITAN:5:6:4+4++noref+nochallenge'"
);

// Note: There is no HIKAZ at all in this response, but it's still valid.
public const GET_STATEMENT_EMPTY_RESPONSE = "HIRMG:2:2:+3060::Teilweise liegen Warnungen/Hinweise vor.'HIRMS:3:2:3+3010::Keine Umsatze gefunden+3076::Keine starke Authentifizierung erforderlich.'HITAN:4:6:4+4++noref+nochallenge'";
Expand Down
Loading