gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[libeufin] branch master updated: Require BIC from Pain.01.


From: gnunet
Subject: [libeufin] branch master updated: Require BIC from Pain.01.
Date: Fri, 04 Dec 2020 16:18:19 +0100

This is an automated email from the git hooks/post-receive script.

ms pushed a commit to branch master
in repository libeufin.

The following commit(s) were added to refs/heads/master by this push:
     new 6b21f20  Require BIC from Pain.01.
6b21f20 is described below

commit 6b21f20211cc174aee8c7bb2d14ef42309e9a802
Author: MS <ms@taler.net>
AuthorDate: Fri Dec 4 16:18:01 2020 +0100

    Require BIC from Pain.01.
---
 integration-tests/tests.py                         |  1 -
 .../tech/libeufin/sandbox/EbicsProtocolBackend.kt  | 80 +++++++++++++++-------
 2 files changed, 54 insertions(+), 27 deletions(-)

diff --git a/integration-tests/tests.py b/integration-tests/tests.py
index 27e2246..b82fcc0 100755
--- a/integration-tests/tests.py
+++ b/integration-tests/tests.py
@@ -361,7 +361,6 @@ def test_ingestion_camt53():
 
 def test_sandbox_camt():
     payment_instruction = dict(
-        # NOTE: this format is very outdated in the docs repo.
         creditorIban="GB33BUKB20201555555555",
         creditorBic="BUKBGB22",
         creditorName="Oliver Smith",
diff --git 
a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt 
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
index 08c7242..7f2cedb 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
@@ -65,8 +65,10 @@ val EbicsHostIdAttribute = 
AttributeKey<String>("RequestedEbicsHostID")
 data class PainParseResult(
     val creditorIban: String,
     val creditorName: String,
+    val creditorBic: String,
     val debitorIban: String,
     val debitorName: String,
+    val debitorBic: String,
     val subject: String,
     val amount: Amount,
     val currency: String,
@@ -482,41 +484,65 @@ private fun parsePain001(paymentRequest: String, 
initiatorName: String): PainPar
                     requireUniqueChildNamed("MsgId") { 
focusElement.textContent }
                 }
                 requireUniqueChildNamed("PmtInf") {
-                    val pmtInfId = requireUniqueChildNamed("PmtInfId") { 
focusElement.textContent }
-                    val creditorIban = requireUniqueChildNamed("CdtTrfTxInf") {
-                        requireUniqueChildNamed("CdtrAcct") {
-                            requireUniqueChildNamed("Id") {
-                                requireUniqueChildNamed("IBAN") { 
focusElement.textContent }
-                            }
+                    val debtorName = requireUniqueChildNamed("Dbtr"){
+                        requireUniqueChildNamed("Nm") {
+                            focusElement.textContent
                         }
                     }
-                    val txInf = requireUniqueChildNamed("CdtTrfTxInf") {
-                        val amt = requireUniqueChildNamed("Amt") {
-                            requireOnlyChild {
-                                focusElement
+                    val debtorIban = requireUniqueChildNamed("DbtrAcct"){
+                        requireUniqueChildNamed("Type") {
+                            requireUniqueChildNamed("IBAN") {
+                                focusElement.textContent
                             }
                         }
-                        val creditorName = requireUniqueChildNamed("Cdtr") {
-                            requireUniqueChildNamed("Nm") { 
focusElement.textContent }
-                        }
-                        val subject = requireUniqueChildNamed("RmtInf") {
-                            requireUniqueChildNamed("Ustrd") { 
focusElement.textContent }
+                    }
+                    val debtorBic = requireUniqueChildNamed("DbtrAgt"){
+                        requireUniqueChildNamed("FinInstnId") {
+                            requireUniqueChildNamed("BICFI") {
+                                focusElement.textContent
+                            }
                         }
-                        object {val amt = amt; val subject = subject; val 
creditorName = creditorName}
                     }
-                    val debitorIban = requireUniqueChildNamed("DbtrAcct") {
-                        requireOnlyChild {
-                            requireOnlyChild { focusElement.textContent }
+                    val pmtInfId = requireUniqueChildNamed("PmtInfId") { 
focusElement.textContent }
+                    val txDetails = requireUniqueChildNamed("CdtTrfTxInf") {
+                        object {
+                            val creditorIban = 
requireUniqueChildNamed("CdtrAcct") {
+                                requireUniqueChildNamed("Id") {
+                                    requireUniqueChildNamed("IBAN") { 
focusElement.textContent }
+                                }
+                            }
+                            val creditorName = requireUniqueChildNamed("Cdtr") 
{
+                                requireUniqueChildNamed("Nm") {
+                                    focusElement.textContent
+                                }
+                            }
+                            val creditorBic = 
requireUniqueChildNamed("CdtrAgt") {
+                                requireUniqueChildNamed("InstnId") {
+                                    requireUniqueChildNamed("BICFI") {
+                                        focusElement.textContent
+                                    }
+                                }
+
+                            }
+                            val amt = requireUniqueChildNamed("Amt") {
+                                requireOnlyChild { focusElement }
+                            }
+                            val subject = requireUniqueChildNamed("RmtInf") {
+                                requireUniqueChildNamed("Ustrd") { 
focusElement.textContent }
+                            }
+
                         }
                     }
                     PainParseResult(
-                        currency = txInf.amt.getAttribute("Ccy"),
-                        amount = Amount(txInf.amt.textContent),
-                        subject = txInf.subject,
-                        debitorIban = debitorIban,
-                        debitorName = initiatorName,
-                        creditorName = txInf.creditorName,
-                        creditorIban = creditorIban,
+                        currency = txDetails.amt.getAttribute("Ccy"),
+                        amount = Amount(txDetails.amt.textContent),
+                        subject = txDetails.subject,
+                        debitorIban = debtorIban,
+                        debitorName = debtorName,
+                        debitorBic = debtorBic,
+                        creditorName = txDetails.creditorName,
+                        creditorIban = txDetails.creditorIban,
+                        creditorBic = txDetails.creditorBic,
                         pmtInfId = pmtInfId,
                         msgId = msgId
                     )
@@ -537,8 +563,10 @@ private fun handleCct(paymentRequest: String, 
initiatorName: String, ctx: Reques
                 it[account] = 
getBankAccountFromIban(parseResult.debitorIban).id
                 it[creditorIban] = parseResult.creditorIban
                 it[creditorName] = parseResult.creditorName
+                it[creditorBic] = parseResult.creditorBic
                 it[debitorIban] = parseResult.debitorIban
                 it[debitorName] = parseResult.debitorName
+                it[debitorBic] = parseResult.debitorBic
                 it[subject] = parseResult.subject
                 it[amount] = parseResult.amount.toString()
                 it[currency] = parseResult.currency

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]