[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[libeufin] 07/11: Fix CCT handling.
From: |
gnunet |
Subject: |
[libeufin] 07/11: Fix CCT handling. |
Date: |
Thu, 30 Apr 2020 21:46:50 +0200 |
This is an automated email from the git hooks/post-receive script.
marcello pushed a commit to branch master
in repository libeufin.
commit d5ea867db958b7962c32d5713fb8190f8bca3094
Author: Marcello Stanisci <address@hidden>
AuthorDate: Thu Apr 30 17:32:33 2020 +0200
Fix CCT handling.
---
integration-tests/test-ebics.py | 7 +++++--
nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt | 2 +-
sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt | 2 +-
.../kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt | 9 +++------
sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt | 15 +++++++++++++++
5 files changed, 25 insertions(+), 10 deletions(-)
diff --git a/integration-tests/test-ebics.py b/integration-tests/test-ebics.py
index b8f2cd0..78187d7 100755
--- a/integration-tests/test-ebics.py
+++ b/integration-tests/test-ebics.py
@@ -163,5 +163,8 @@ resp = post(
)
assert(resp.status_code == 200)
-#7 Execute such payment via EBICS
-#8 Request history again via EBICS
+#5.b
+resp = post("http://localhost:5001/ebics/execute-payments")
+assert(resp.status_code == 200)
+
+#6
diff --git a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
index 9344ed0..61ae1cc 100644
--- a/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
+++ b/nexus/src/main/kotlin/tech/libeufin/nexus/Main.kt
@@ -567,7 +567,7 @@ fun main() {
/** STATE CHANGES VIA EBICS */
- post("/ebics/admin/execute-payments") {
+ post("/ebics/execute-payments") {
val (paymentRowId, painDoc, subscriber) = transaction {
val entity = Pain001Entity.find {
(Pain001Table.submitted eq false) and
(Pain001Table.invalid eq false)
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
index a53280f..dff869c 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/DB.kt
@@ -241,7 +241,7 @@ class PaymentEntity(id: EntityID<Int>) : IntEntity(id) {
var debitorIban by PaymentsTable.debitorIban
var subject by PaymentsTable.subject
var amount by PaymentsTable.amount
- var date by PaymentsTable.date
+ var date by PaymentsTable.date /** Date when the payment was persisted in
this system. */
var ebicsSubscriber by EbicsSubscriberEntity referencedOn
PaymentsTable.ebicsSubscriber
}
diff --git
a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
index 61d70b0..7123e9b 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/EbicsProtocolBackend.kt
@@ -461,6 +461,7 @@ private fun handleCct(paymentRequest: String,
ebicsSubscriber: EbicsSubscriberEn
this.subject = subject
this.amount = "${currency}:${amount}"
this.ebicsSubscriber = ebicsSubscriber
+ this.date = DateTime.now().millis
}
}
}
@@ -832,7 +833,6 @@ private fun
handleEbicsUploadTransactionInitialization(requestContext: RequestCo
val plainSigData =
InflaterInputStream(decryptedSignatureData.inputStream()).use {
it.readAllBytes()
}
-
println("creating upload transaction for transactionID $transactionID")
EbicsUploadTransactionEntity.new(transactionID) {
this.host = requestContext.ebicsHost
@@ -856,7 +856,6 @@ private fun
handleEbicsUploadTransactionInitialization(requestContext: RequestCo
this.signatureValue = SerialBlob(sig.signatureValue)
}
}
-
return EbicsResponse.createForUploadInitializationPhase(transactionID,
orderID)
}
@@ -882,11 +881,9 @@ private fun
handleEbicsUploadTransactionTransmission(requestContext: RequestCont
(EbicsOrderSignaturesTable.orderID eq uploadTransaction.orderID)
and
(EbicsOrderSignaturesTable.orderType eq
uploadTransaction.orderType)
}
-
if (sigs.count() == 0) {
throw EbicsInvalidRequestError()
}
-
for (sig in sigs) {
if (sig.signatureAlgorithm == "A006") {
@@ -902,8 +899,8 @@ private fun
handleEbicsUploadTransactionTransmission(requestContext: RequestCont
}
}
- /** Handling a payment request */
- if ("CCT" ==
requestContext.requestObject.header.static.orderDetails?.orderType) {
+ if (getOrderTypeFromTransactionId(requestTransactionID) == "CCT") {
+ logger.debug("Attempting a payment.")
handleCct(unzippedData.toString(Charsets.UTF_8),
requestContext.subscriber)
}
return EbicsResponse.createForUploadTransferPhase(
diff --git a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt
b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt
index 5e7afa5..5338b89 100644
--- a/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt
+++ b/sandbox/src/main/kotlin/tech/libeufin/sandbox/Helpers.kt
@@ -5,6 +5,21 @@ import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
import org.jetbrains.exposed.sql.and
import org.jetbrains.exposed.sql.transactions.transaction
+
+fun getOrderTypeFromTransactionId(transactionID: String): String {
+ val uploadTransaction = transaction {
+ EbicsUploadTransactionEntity.findById(transactionID)
+ } ?: throw SandboxError(
+ /**
+ * NOTE: at this point, it might even be the server's fault.
+ * For example, if it failed to store a ID earlier.
+ */
+ HttpStatusCode.NotFound,
+ "Could not retrieve order type for transaction: $transactionID"
+ )
+ return uploadTransaction.orderType
+}
+
fun getBankAccountFromSubscriber(subscriber: EbicsSubscriberEntity):
BankAccountEntity {
return transaction {
BankAccountEntity.find(BankAccountsTable.subscriber eq subscriber.id)
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [libeufin] branch master updated (9cd5454 -> 96b5026), gnunet, 2020/04/30
- [libeufin] 04/11: Integration test., gnunet, 2020/04/30
- [libeufin] 01/11: Sandbox admin., gnunet, 2020/04/30
- [libeufin] 03/11: fix db problem in test, gnunet, 2020/04/30
- [libeufin] 02/11: HTD response content comes from DB now., gnunet, 2020/04/30
- [libeufin] 06/11: Integration test., gnunet, 2020/04/30
- [libeufin] 07/11: Fix CCT handling.,
gnunet <=
- [libeufin] 09/11: fix time parser, gnunet, 2020/04/30
- [libeufin] 11/11: Fix amount format., gnunet, 2020/04/30
- [libeufin] 05/11: Reducing code., gnunet, 2020/04/30
- [libeufin] 10/11: Move more generic helpers to util package., gnunet, 2020/04/30
- [libeufin] 08/11: Integration test., gnunet, 2020/04/30