feature/BGv1.3 added periodic_payments - step3

This commit is contained in:
hongwei 2024-08-20 08:44:51 +02:00
parent d4aa006dac
commit ea3edbe85b
5 changed files with 53 additions and 59 deletions

View File

@ -1076,7 +1076,19 @@ trait Connector extends MdcLoggable {
chargeValue <- getChargeValue(chargeLevelAmount,transactionRequestCommonBodyAmount)
charge = TransactionRequestCharge("Total charges for completed transaction", AmountOfMoney(transactionRequestCommonBody.value.currency, chargeValue))
// Always create a new Transaction Request
transactionRequest <- Future{ createTransactionRequestImpl210(TransactionRequestId(generateUUID()), transactionRequestType, fromAccount, toAccount, transactionRequestCommonBody, detailsPlain, status.toString, charge, chargePolicy)} map {
transactionRequest <- Future{
TransactionRequests.transactionRequestProvider.vend.createTransactionRequestImpl210(
TransactionRequestId(generateUUID()),
transactionRequestType,
fromAccount,
toAccount,
transactionRequestCommonBody,
detailsPlain,
status.toString,
charge,
chargePolicy,
)
} map {
unboxFullOrFail(_, callContext, s"$InvalidConnectorResponseForCreateTransactionRequestImpl210")
}
@ -1100,7 +1112,7 @@ trait Connector extends MdcLoggable {
//save transaction_id into database
_ <- Future {saveTransactionRequestTransaction(transactionRequest.id, createdTransactionId)}
//update transaction_id field for varibale 'transactionRequest'
//update transaction_id field for variable 'transactionRequest'
transactionRequest <- Future(transactionRequest.copy(transaction_ids = createdTransactionId.value))
} yield {
@ -1165,35 +1177,11 @@ trait Connector extends MdcLoggable {
berlinGroupPayments: Option[SepaCreditTransfersBerlinGroupV13],
callContext: Option[CallContext]): OBPReturnType[Box[TransactionRequest]] = Future{(Failure(setUnimplementedError), callContext)}
//place holder for various connector methods that overwrite methods like these, does the actual data access
//placeholder for various connector methods that overwrite methods like these, does the actual data access
protected def createTransactionRequestImpl(transactionRequestId: TransactionRequestId, transactionRequestType: TransactionRequestType,
fromAccount : BankAccount, counterparty : BankAccount, body: TransactionRequestBody,
status: String, charge: TransactionRequestCharge) : Box[TransactionRequest] = Failure(setUnimplementedError)
/**
*
* @param transactionRequestId
* @param transactionRequestType Support Types: SANDBOX_TAN, FREE_FORM, SEPA and COUNTERPARTY
* @param fromAccount
* @param toAccount
* @param transactionRequestCommonBody Body from http request: should have common fields:
* @param details This is the details / body of the request (contains all fields in the body)
* @param status "INITIATED" "PENDING" "FAILED" "COMPLETED"
* @param charge
* @param chargePolicy SHARED, SENDER, RECEIVER
* @return Always create a new Transaction Request in mapper, and return all the fields
*/
protected def createTransactionRequestImpl210(transactionRequestId: TransactionRequestId,
transactionRequestType: TransactionRequestType,
fromAccount: BankAccount,
toAccount: BankAccount,
transactionRequestCommonBody: TransactionRequestCommonBodyJSON,
details: String,
status: String,
charge: TransactionRequestCharge,
chargePolicy: String,
berlinGroupPayments: Option[SepaCreditTransfersBerlinGroupV13]): Box[TransactionRequest] = Failure(setUnimplementedError)
def notifyTransactionRequest(fromAccount: BankAccount, toAccount: BankAccount, transactionRequest: TransactionRequest, callContext: Option[CallContext]): OBPReturnType[Box[TransactionRequestStatusValue]] =
Future{(Failure(setUnimplementedError), callContext)}

View File

@ -434,7 +434,6 @@ object ConnectorBuilderUtil {
val protectedMethods = List(
"makePaymentImpl",
"createTransactionRequestImpl",
"createTransactionRequestImpl210",
"saveTransactionRequestTransactionImpl",
"saveTransactionRequestChallengeImpl",
"saveTransactionRequestStatusImpl",

View File

@ -2226,29 +2226,6 @@ object LocalMappedConnector extends Connector with MdcLoggable {
charge)
}
override def createTransactionRequestImpl210(transactionRequestId: TransactionRequestId,
transactionRequestType: TransactionRequestType,
fromAccount: BankAccount,
toAccount: BankAccount,
transactionRequestCommonBody: TransactionRequestCommonBodyJSON,
details: String,
status: String,
charge: TransactionRequestCharge,
chargePolicy: String,
berlinGroupPayments: Option[SepaCreditTransfersBerlinGroupV13]): Box[TransactionRequest] = {
TransactionRequests.transactionRequestProvider.vend.createTransactionRequestImpl210(transactionRequestId,
transactionRequestType,
fromAccount,
toAccount,
transactionRequestCommonBody,
details,
status,
charge,
chargePolicy,
berlinGroupPayments: Option[SepaCreditTransfersBerlinGroupV13])
}
override def saveTransactionRequestTransactionImpl(transactionRequestId: TransactionRequestId, transactionId: TransactionId): Box[Boolean] = {
TransactionRequests.transactionRequestProvider.vend.saveTransactionRequestTransactionImpl(transactionRequestId, transactionId)
}
@ -5026,7 +5003,17 @@ object LocalMappedConnector extends Connector with MdcLoggable {
charge = TransactionRequestCharge("Total charges for completed transaction", AmountOfMoney(transactionRequestCommonBody.value.currency, chargeValue))
// Always create a new Transaction Request
transactionRequest <- Future {
createTransactionRequestImpl210(TransactionRequestId(generateUUID()), transactionRequestType, fromAccount, toAccount, transactionRequestCommonBody, detailsPlain, status.toString, charge, chargePolicy)
TransactionRequests.transactionRequestProvider.vend.createTransactionRequestImpl210(
TransactionRequestId(generateUUID()),
transactionRequestType,
fromAccount,
toAccount,
transactionRequestCommonBody,
detailsPlain,
status.toString,
charge,
chargePolicy,
)
} map {
unboxFullOrFail(_, callContext, s"$InvalidConnectorResponseForCreateTransactionRequestImpl210")
}
@ -5171,7 +5158,17 @@ object LocalMappedConnector extends Connector with MdcLoggable {
charge = TransactionRequestCharge("Total charges for completed transaction", AmountOfMoney(transactionRequestCommonBody.value.currency, chargeValue))
// Always create a new Transaction Request
transactionRequest <- Future {
val transactionRequest = createTransactionRequestImpl210(TransactionRequestId(generateUUID()), transactionRequestType, fromAccount, toAccount, transactionRequestCommonBody, detailsPlain, status.toString, charge, chargePolicy)
val transactionRequest = TransactionRequests.transactionRequestProvider.vend.createTransactionRequestImpl210(
TransactionRequestId(generateUUID()),
transactionRequestType,
fromAccount,
toAccount,
transactionRequestCommonBody,
detailsPlain,
status.toString,
charge,
chargePolicy,
)
saveTransactionRequestReasons(reasons, transactionRequest)
transactionRequest
} map {

View File

@ -66,6 +66,20 @@ trait TransactionRequestProvider {
body: TransactionRequestBody,
status: String,
charge: TransactionRequestCharge) : Box[TransactionRequest]
/**
*
* @param transactionRequestId
* @param transactionRequestType Support Types: SANDBOX_TAN, FREE_FORM, SEPA and COUNTERPARTY
* @param fromAccount
* @param toAccount
* @param transactionRequestCommonBody Body from http request: should have common fields:
* @param details This is the details / body of the request (contains all fields in the body)
* @param status "INITIATED" "PENDING" "FAILED" "COMPLETED"
* @param charge
* @param chargePolicy SHARED, SENDER, RECEIVER
* @return Always create a new Transaction Request in mapper, and return all the fields
*/
def createTransactionRequestImpl210(transactionRequestId: TransactionRequestId,
transactionRequestType: TransactionRequestType,
fromAccount: BankAccount,
@ -75,7 +89,8 @@ trait TransactionRequestProvider {
status: String,
charge: TransactionRequestCharge,
chargePolicy: String,
berlinGroupPayments: Option[SepaCreditTransfersBerlinGroupV13]): Box[TransactionRequest]
berlinGroupPayments: Option[SepaCreditTransfersBerlinGroupV13] = None): Box[TransactionRequest]
def saveTransactionRequestTransactionImpl(transactionRequestId: TransactionRequestId, transactionId: TransactionId): Box[Boolean]
def saveTransactionRequestChallengeImpl(transactionRequestId: TransactionRequestId, challenge: TransactionRequestChallenge): Box[Boolean]
def saveTransactionRequestStatusImpl(transactionRequestId: TransactionRequestId, status: String): Box[Boolean]

View File

@ -1099,11 +1099,6 @@ case class InBoundCreateTransactionRequestImpl(status: Status, data: Transaction
override val inboundAdapterCallContext: InboundAdapterCallContext = InboundAdapterCallContext()
}
case class OutBoundCreateTransactionRequestImpl210(transactionRequestId: TransactionRequestId, transactionRequestType: TransactionRequestType, fromAccount: BankAccount, toAccount: BankAccount, transactionRequestCommonBody: TransactionRequestCommonBodyJSON, details: String, status: String, charge: TransactionRequestCharge, chargePolicy: String) extends TopicTrait
case class InBoundCreateTransactionRequestImpl210(status: Status, data: TransactionRequest) extends InBoundTrait[TransactionRequest] {
override val inboundAdapterCallContext: InboundAdapterCallContext = InboundAdapterCallContext()
}
case class OutBoundSaveTransactionRequestTransaction(transactionRequestId: TransactionRequestId, transactionId: TransactionId) extends TopicTrait
case class InBoundSaveTransactionRequestTransaction(status: Status, data: Boolean) extends InBoundTrait[Boolean] {
override val inboundAdapterCallContext: InboundAdapterCallContext = InboundAdapterCallContext()