libeufin

Integration and sandbox testing for FinTech APIs and data formats
Log | Files | Refs | Submodules | README | LICENSE

commit 8e54274d33d7af9d0db849b66a9487e78691a238
parent 0a176158746167e5fb4fc7c2db3f1df031e80e83
Author: MS <ms@taler.net>
Date:   Thu, 26 Oct 2023 18:34:17 +0200

nexus: fixing EBICS upload and testing with PoFi.

Diffstat:
Mnexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 2+-
Mnexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt | 2+-
Mnexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt | 2+-
Mnexus/src/test/kotlin/PostFinance.kt | 31++++++++++++++++++++-----------
Mutil/src/main/kotlin/Ebics.kt | 1+
5 files changed, 24 insertions(+), 14 deletions(-)

diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt @@ -65,7 +65,7 @@ val myJson = Json { * If even one of the fields could not be instantiated, then * throws TalerConfigError. */ -class EbicsSetupConfig(config: TalerConfig) { +class EbicsSetupConfig(val config: TalerConfig) { // abstracts the section name. private val ebicsSetupRequireString = { option: String -> config.requireString("nexus-ebics", option) diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/Ebics3.kt @@ -83,7 +83,7 @@ fun createEbics3RequestForUploadTransferPhase( cfg.ebicsHostId, transactionId, BigInteger.valueOf(chunkIndex.toLong()), - uploadData.encryptedPayloadChunks[chunkIndex] + uploadData.encryptedPayloadChunks[chunkIndex - 1] ) val doc = XMLUtil.convertJaxbToDocument(req) XMLUtil.signEbicsDocument( diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt b/nexus/src/main/kotlin/tech/libeufin/nexus/ebics/EbicsCommon.kt @@ -504,7 +504,7 @@ suspend fun doEbicsUpload( client, cfg, bankKeys, - initXml, + transferXml, isEbics3 = true ) if (transferResp == null) { diff --git a/nexus/src/test/kotlin/PostFinance.kt b/nexus/src/test/kotlin/PostFinance.kt @@ -4,6 +4,7 @@ import org.junit.Ignore import org.junit.Test import tech.libeufin.nexus.* import tech.libeufin.nexus.ebics.fetchBankAccounts +import tech.libeufin.nexus.ebics.submitPayment import tech.libeufin.util.IbanPayto import tech.libeufin.util.parsePayto import java.io.File @@ -14,32 +15,40 @@ import java.time.format.DateTimeFormatter import kotlin.test.assertNotNull import kotlin.test.assertTrue +private fun prep(): EbicsSetupConfig { + val handle = TalerConfig(NEXUS_CONFIG_SOURCE) + val ebicsUserId = File("/tmp/pofi-ebics-user-id.txt").readText() + val ebicsPartnerId = File("/tmp/pofi-ebics-partner-id.txt").readText() + handle.loadFromString(getPofiConfig(ebicsUserId, ebicsPartnerId)) + return EbicsSetupConfig(handle) +} + class Iso20022 { @Test fun sendPayment() { + val cfg = prep() val xml = createPain001( "random", Instant.now(), parsePayto("payto://iban/POFICHBE/CH9789144829733648596?receiver-name=NotGiven")!!, TalerAmount(4, 0, "CHF"), - "Test reimbursement", + "Test reimbursement, part 2", parsePayto("payto://iban/CH9300762011623852957?receiver-name=NotGiven")!! ) - println(xml) - File("/tmp/pain.001-test.xml").writeText(xml) + runBlocking { + submitPayment( + xml, + cfg, + loadPrivateKeysFromDisk(cfg.clientPrivateKeysFilename)!!, + loadBankKeys(cfg.bankPublicKeysFilename)!!, + HttpClient() + ) + } } } @Ignore class PostFinance { - private fun prep(): EbicsSetupConfig { - val handle = TalerConfig(NEXUS_CONFIG_SOURCE) - val ebicsUserId = File("/tmp/pofi-ebics-user-id.txt").readText() - val ebicsPartnerId = File("/tmp/pofi-ebics-partner-id.txt").readText() - handle.loadFromString(getPofiConfig(ebicsUserId, ebicsPartnerId)) - return EbicsSetupConfig(handle) - } - // Tests sending client keys to the PostFinance test platform. @Test fun postClientKeys() { diff --git a/util/src/main/kotlin/Ebics.kt b/util/src/main/kotlin/Ebics.kt @@ -496,6 +496,7 @@ enum class EbicsReturnCode(val errorCode: String) { EBICS_AMOUNT_CHECK_FAILED("091303"), EBICS_EBICS_AUTHORISATION_ORDER_IDENTIFIER_FAILED("090003"), EBICS_INVALID_XML("091010"), + EBICS_TX_MESSAGE_REPLAY("091103"), EBICS_NO_DOWNLOAD_DATA_AVAILABLE("090005"); companion object {