diff --git a/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala b/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala index 5321d8b66..84c69617c 100644 --- a/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala +++ b/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala @@ -1100,7 +1100,7 @@ trait APIMethods400 extends MdcLoggable { } account = BankIdAccountId(fromAccount.bankId, fromAccount.accountId) - _ <- NewStyle.function.checkAuthorisationToCreateTransactionRequest(viewId, account, u, callContext) +// _ <- NewStyle.function.checkAuthorisationToCreateTransactionRequest(viewId, account, u, callContext) // Check transReqId is valid (existingTransactionRequest, callContext) <- NewStyle.function.getTransactionRequestImpl(transReqId, callContext) diff --git a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala index 467ab239b..966a257c6 100644 --- a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala +++ b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnector.scala @@ -4381,7 +4381,9 @@ object LocalMappedConnector extends Connector with MdcLoggable { charge, chargePolicy, None, - None) + None, + callContext + ) } map { unboxFullOrFail(_, callContext, s"$InvalidConnectorResponseForCreateTransactionRequestImpl210") } @@ -4535,7 +4537,8 @@ object LocalMappedConnector extends Connector with MdcLoggable { charge, chargePolicy, None, - None + None, + callContext ) saveTransactionRequestReasons(reasons, transactionRequest) transactionRequest diff --git a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnectorInternal.scala b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnectorInternal.scala index 457d3b735..6e9a71ee2 100644 --- a/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnectorInternal.scala +++ b/obp-api/src/main/scala/code/bankconnectors/LocalMappedConnectorInternal.scala @@ -157,7 +157,8 @@ object LocalMappedConnectorInternal extends MdcLoggable { charge, "", // chargePolicy is not used in BG so far. Some(paymentServiceType.toString), - Some(transactionRequestBody) + Some(transactionRequestBody), + callContext ) transactionRequest } map { diff --git a/obp-api/src/main/scala/code/transactionrequests/MappedTransactionRequestProvider.scala b/obp-api/src/main/scala/code/transactionrequests/MappedTransactionRequestProvider.scala index 94d23ee9a..8a832409a 100644 --- a/obp-api/src/main/scala/code/transactionrequests/MappedTransactionRequestProvider.scala +++ b/obp-api/src/main/scala/code/transactionrequests/MappedTransactionRequestProvider.scala @@ -1,10 +1,11 @@ package code.transactionrequests -import code.api.util.APIUtil.DateWithMsFormat -import code.api.util.CustomJsonFormats +import code.api.util.APIUtil.{DateWithMsFormat} +import code.api.util.{APIUtil, CallContext, CustomJsonFormats} import code.api.util.ErrorMessages._ import code.api.v2_1_0.TransactionRequestBodyCounterpartyJSON import code.bankconnectors.LocalMappedConnectorInternal +import code.consent.Consents import code.model._ import code.util.{AccountIdString, UUIDString} import com.openbankproject.commons.model._ @@ -91,7 +92,8 @@ object MappedTransactionRequestProvider extends TransactionRequestProvider { charge: TransactionRequestCharge, chargePolicy: String, paymentService: Option[String], - berlinGroupPayments: Option[BerlinGroupTransactionRequestCommonBodyJson]): Box[TransactionRequest] = { + berlinGroupPayments: Option[BerlinGroupTransactionRequestCommonBodyJson], + callContext: Option[CallContext]): Box[TransactionRequest] = { val toAccountRouting = TransactionRequestTypes.withName(transactionRequestType.value) match { case SEPA => @@ -100,7 +102,7 @@ object MappedTransactionRequestProvider extends TransactionRequestProvider { case _ => toAccount.accountRoutings.headOption } - val counterpartyId = TransactionRequestTypes.withName(transactionRequestType.value) match { + val counterpartyIdOption = TransactionRequestTypes.withName(transactionRequestType.value) match { case COUNTERPARTY => Some(transactionRequestCommonBody.asInstanceOf[TransactionRequestBodyCounterpartyJSON].to.counterparty_id) case _ => None } @@ -120,6 +122,9 @@ object MappedTransactionRequestProvider extends TransactionRequestProvider { (null, null, null, null, null) } + val consentIdOption = callContext.map(_.requestHeaders).map(APIUtil.getConsentIdRequestHeaderValue).flatten + val consentOption = consentIdOption.map(consentId =>Consents.consentProvider.vend.getConsentByConsentId(consentId).toOption).flatten + val consentReferenceIdOption = consentOption.map(_.consentReferenceId) // Note: We don't save transaction_ids, status and challenge here. val mappedTransactionRequest = MappedTransactionRequest.create @@ -156,7 +161,7 @@ object MappedTransactionRequestProvider extends TransactionRequestProvider { //.mThisBankId(toAccount.bankId.value) //.mThisAccountId(toAccount.accountId.value) //.mThisViewId(toAccount.v) - .mCounterpartyId(counterpartyId.getOrElse(null)) + .mCounterpartyId(counterpartyIdOption.getOrElse(null)) //.mIsBeneficiary(toAccount.isBeneficiary) //Body from http request: SANDBOX_TAN, FREE_FORM, SEPA and COUNTERPARTY should have the same following fields: @@ -172,6 +177,7 @@ object MappedTransactionRequestProvider extends TransactionRequestProvider { .mPaymentExecutionRule(executionRule) .mPaymentFrequency(frequency) .mPaymentDayOfExecution(dayOfExecution) + .mConsentReferenceId(consentReferenceIdOption.getOrElse(null)) .saveMe Full(mappedTransactionRequest).flatMap(_.toTransactionRequest) @@ -278,6 +284,8 @@ class MappedTransactionRequest extends LongKeyedMapper[MappedTransactionRequest] object mPaymentFrequency extends MappedString(this, 64) //BGv1.3 Open API Document example value: "frequency":"Monthly", object mPaymentDayOfExecution extends MappedString(this, 64)//BGv1.3 Open API Document example value: "dayOfExecution":"01" + object mConsentReferenceId extends MappedString(this, 64) + def updateStatus(newStatus: String) = { mStatus.set(newStatus) } diff --git a/obp-api/src/main/scala/code/transactionrequests/TransactionRequests.scala b/obp-api/src/main/scala/code/transactionrequests/TransactionRequests.scala index 80f4766d8..40b831c9f 100644 --- a/obp-api/src/main/scala/code/transactionrequests/TransactionRequests.scala +++ b/obp-api/src/main/scala/code/transactionrequests/TransactionRequests.scala @@ -1,7 +1,7 @@ package code.transactionrequests -import code.api.util.APIUtil +import code.api.util.{APIUtil, CallContext} import com.openbankproject.commons.model.{TransactionRequest, TransactionRequestChallenge, TransactionRequestCharge, _} import net.liftweb.common.{Box, Logger} import net.liftweb.util.SimpleInjector @@ -76,7 +76,8 @@ trait TransactionRequestProvider { charge: TransactionRequestCharge, chargePolicy: String, paymentService: Option[String], - berlinGroupPayments: Option[BerlinGroupTransactionRequestCommonBodyJson]): Box[TransactionRequest] + berlinGroupPayments: Option[BerlinGroupTransactionRequestCommonBodyJson], + callContext: Option[CallContext]): Box[TransactionRequest] def saveTransactionRequestTransactionImpl(transactionRequestId: TransactionRequestId, transactionId: TransactionId): Box[Boolean] def saveTransactionRequestChallengeImpl(transactionRequestId: TransactionRequestId, challenge: TransactionRequestChallenge): Box[Boolean]