From 82bd793522b1d04e81aca3d793c80dbf0368574b Mon Sep 17 00:00:00 2001 From: Linus Holtstiege Date: Fri, 26 Jan 2024 10:36:12 +0100 Subject: [PATCH 1/2] implementation for schema namespace definition like SDD --- .../CustomerCreditTransfer/CustomerCreditTransferBuilder.php | 4 +++- .../CustomerInstantCreditTransferBuilder.php | 4 +++- src/Factories/DocumentFactory.php | 5 ++++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Builders/CustomerCreditTransfer/CustomerCreditTransferBuilder.php b/src/Builders/CustomerCreditTransfer/CustomerCreditTransferBuilder.php index b952c1e..46667e5 100644 --- a/src/Builders/CustomerCreditTransfer/CustomerCreditTransferBuilder.php +++ b/src/Builders/CustomerCreditTransfer/CustomerCreditTransferBuilder.php @@ -27,6 +27,7 @@ public function __construct() } /** + * @param string $schema has next formula urn:iso:std:iso:20022:tech:xsd:msgName.001.msgNameVersion * @param string $debitorFinInstBIC * @param string $debitorIBAN * @param string $debitorName @@ -40,6 +41,7 @@ public function __construct() * @return $this */ public function createInstance( + string $schema, string $debitorFinInstBIC, string $debitorIBAN, string $debitorName, @@ -52,7 +54,7 @@ public function createInstance( $now = new DateTime(); $xmDocument = $this->instance->createElementNS( - 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03', + $schema, 'Document' ); $xmDocument->setAttributeNS( diff --git a/src/Builders/CustomerCreditTransfer/CustomerInstantCreditTransferBuilder.php b/src/Builders/CustomerCreditTransfer/CustomerInstantCreditTransferBuilder.php index 50c28bc..8777de8 100644 --- a/src/Builders/CustomerCreditTransfer/CustomerInstantCreditTransferBuilder.php +++ b/src/Builders/CustomerCreditTransfer/CustomerInstantCreditTransferBuilder.php @@ -28,6 +28,7 @@ public function __construct() } /** + * @param string $schema has next formula urn:iso:std:iso:20022:tech:xsd:msgName.001.msgNameVersion * @param string $debtorFinInstBic * @param string $debttorIban * @param string $debitorName @@ -38,6 +39,7 @@ public function __construct() * @return CustomerInstantCreditTransferBuilder */ public function createInstance( + string $schema, string $debtorFinInstBic, string $debttorIban, string $debitorName, @@ -49,7 +51,7 @@ public function createInstance( $now = new DateTime(); $xmDocument = $this->instance->createElementNS( - 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03', + $schema, 'Document' ); $xmDocument->setAttributeNS( diff --git a/src/Factories/DocumentFactory.php b/src/Factories/DocumentFactory.php index 1e9a4b9..64d7adf 100644 --- a/src/Factories/DocumentFactory.php +++ b/src/Factories/DocumentFactory.php @@ -15,7 +15,10 @@ final class DocumentFactory public function create(string $content): Document { $document = new Document(); - $document->loadXML(utf8_encode($content)); + + $content = mb_convert_encoding($content, 'UTF-8', mb_list_encodings()); + + $document->loadXML($content); return $document; } From f70c7c9f4b4b25ec05932b94a425e1ce6b7cc828 Mon Sep 17 00:00:00 2001 From: Linus Holtstiege Date: Tue, 30 Jan 2024 12:18:08 +0100 Subject: [PATCH 2/2] code review fixes --- .../CustomerCreditTransferBuilder.php | 6 +++--- .../CustomerInstantCreditTransferBuilder.php | 6 +++--- .../CustomerSwissCreditTransferBuilder.php | 6 +++--- .../CustomerDirectDebit/CustomerDirectDebitBuilder.php | 6 +++--- src/Factories/DocumentFactory.php | 7 ++++--- 5 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/Builders/CustomerCreditTransfer/CustomerCreditTransferBuilder.php b/src/Builders/CustomerCreditTransfer/CustomerCreditTransferBuilder.php index 46667e5..7f1f3f3 100644 --- a/src/Builders/CustomerCreditTransfer/CustomerCreditTransferBuilder.php +++ b/src/Builders/CustomerCreditTransfer/CustomerCreditTransferBuilder.php @@ -27,7 +27,6 @@ public function __construct() } /** - * @param string $schema has next formula urn:iso:std:iso:20022:tech:xsd:msgName.001.msgNameVersion * @param string $debitorFinInstBIC * @param string $debitorIBAN * @param string $debitorName @@ -38,17 +37,18 @@ public function __construct() * least for 15 days. Used for rejecting duplicated transactions (max length: 35 characters) * @param string|null $paymentReference Overwrite default payment reference - * visible on creditors bank statement (max length: 35 characters) + * @param string $schema default namespace schema urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 * @return $this */ public function createInstance( - string $schema, string $debitorFinInstBIC, string $debitorIBAN, string $debitorName, DateTime $executionDate = null, bool $batchBooking = true, string $msgId = null, - string $paymentReference = null + string $paymentReference = null, + string $schema = 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03' ): CustomerCreditTransferBuilder { $this->instance = new CustomerCreditTransfer(); $now = new DateTime(); diff --git a/src/Builders/CustomerCreditTransfer/CustomerInstantCreditTransferBuilder.php b/src/Builders/CustomerCreditTransfer/CustomerInstantCreditTransferBuilder.php index 8777de8..2f07cbb 100644 --- a/src/Builders/CustomerCreditTransfer/CustomerInstantCreditTransferBuilder.php +++ b/src/Builders/CustomerCreditTransfer/CustomerInstantCreditTransferBuilder.php @@ -28,7 +28,6 @@ public function __construct() } /** - * @param string $schema has next formula urn:iso:std:iso:20022:tech:xsd:msgName.001.msgNameVersion * @param string $debtorFinInstBic * @param string $debttorIban * @param string $debitorName @@ -36,16 +35,17 @@ public function __construct() * you request your credit institution to book each transaction within this order separately. * @param string|null $msgId * @param string|null $paymentReference + * @param string $schema default namespace schema urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 * @return CustomerInstantCreditTransferBuilder */ public function createInstance( - string $schema, string $debtorFinInstBic, string $debttorIban, string $debitorName, bool $batchBooking = true, string $msgId = null, - string $paymentReference = null + string $paymentReference = null, + string $schema = 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03' ): CustomerInstantCreditTransferBuilder { $this->instance = new CustomerCreditTransfer(); $now = new DateTime(); diff --git a/src/Builders/CustomerCreditTransfer/CustomerSwissCreditTransferBuilder.php b/src/Builders/CustomerCreditTransfer/CustomerSwissCreditTransferBuilder.php index 11628a5..5fa981b 100644 --- a/src/Builders/CustomerCreditTransfer/CustomerSwissCreditTransferBuilder.php +++ b/src/Builders/CustomerCreditTransfer/CustomerSwissCreditTransferBuilder.php @@ -33,19 +33,19 @@ public function __construct() } /** - * @param string $schema has next formula urn:iso:std:iso:20022:tech:xsd:msgName.001.msgNameVersion * @param string $debitorFinInstBIC * @param string $debitorIBAN * @param string $debitorName + * @param string $schema default namespace schema urn:iso:std:iso:20022:tech:xsd:pain.001.001.03 * * @return $this * @throws \DOMException */ public function createInstance( - string $schema, string $debitorFinInstBIC, string $debitorIBAN, - string $debitorName + string $debitorName, + string $schema = 'urn:iso:std:iso:20022:tech:xsd:pain.001.001.03' ): CustomerSwissCreditTransferBuilder { $this->instance = new CustomerCreditTransfer(); $now = new DateTime(); diff --git a/src/Builders/CustomerDirectDebit/CustomerDirectDebitBuilder.php b/src/Builders/CustomerDirectDebit/CustomerDirectDebitBuilder.php index c0a88b2..3f5ff84 100644 --- a/src/Builders/CustomerDirectDebit/CustomerDirectDebitBuilder.php +++ b/src/Builders/CustomerDirectDebit/CustomerDirectDebitBuilder.php @@ -27,7 +27,6 @@ public function __construct() } /** - * @param string $schema has next formula urn:iso:std:iso:20022:tech:xsd:msgName.001.msgNameVersion * @param string $creditorFinInstBic * @param string $creditorIban * @param string $creditorName @@ -40,12 +39,12 @@ public function __construct() * least for 15 days. Used for rejecting duplicated transactions (max length: 35 characters) * @param string|null $paymentReference Overwrite default payment reference - * visible on creditors bank statement (max length: 35 characters) + * @param string $schema default namespace schema urn:iso:std:iso:20022:tech:xsd:pain.008.001.02 * * @return $this * @throws \DOMException */ public function createInstance( - string $schema, string $creditorFinInstBic, string $creditorIban, string $creditorName, @@ -54,7 +53,8 @@ public function createInstance( DateTime $collectionDate = null, bool $batchBooking = true, string $msgId = null, - string $paymentReference = null + string $paymentReference = null, + string $schema = 'urn:iso:std:iso:20022:tech:xsd:pain.008.001.02' ): CustomerDirectDebitBuilder { $this->instance = new CustomerDirectDebit(); $now = new DateTime(); diff --git a/src/Factories/DocumentFactory.php b/src/Factories/DocumentFactory.php index 64d7adf..b6ccac8 100644 --- a/src/Factories/DocumentFactory.php +++ b/src/Factories/DocumentFactory.php @@ -12,12 +12,13 @@ */ final class DocumentFactory { + /** + * @param string $content requires already UTF-8 encoded content + * @return Document + */ public function create(string $content): Document { $document = new Document(); - - $content = mb_convert_encoding($content, 'UTF-8', mb_list_encodings()); - $document->loadXML($content); return $document;