Skip to content

Commit

Permalink
update akka grpc api
Browse files Browse the repository at this point in the history
  • Loading branch information
fupelaqu committed Dec 24, 2022
1 parent ac5dd0b commit 08182e2
Show file tree
Hide file tree
Showing 9 changed files with 419 additions and 85 deletions.
2 changes: 1 addition & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ ThisBuild / organization := "app.softnetwork"

name := "payment"

ThisBuild / version := "0.1.4"
ThisBuild / version := "0.1.5"

ThisBuild / scalaVersion := "2.12.15"

Expand Down
18 changes: 14 additions & 4 deletions common/src/main/protobuf/api/payment.proto
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,18 @@ message PayInWithCardPreAuthorizedRequest {
string creditedAccount = 2;
}

enum TransactionStatus{
TRANSACTION_CREATED = 0;
TRANSACTION_SUCCEEDED = 1;
TRANSACTION_FAILED = 2;
TRANSACTION_NOT_SPECIFIED = 4;
TRANSACTION_FAILED_FOR_TECHNICAL_REASON = 5;
}

message TransactionResponse {
google.protobuf.StringValue transactionId = 1;
google.protobuf.StringValue error = 2;
TransactionStatus transactionStatus = 2;
google.protobuf.StringValue error = 3;
}

message CancelPreAuthorizationRequest {
Expand Down Expand Up @@ -81,9 +90,10 @@ message TransferRequest {
}

message TransferResponse {
google.protobuf.StringValue transferedTransactionId = 1;
google.protobuf.StringValue paidOutTransactionId = 2;
google.protobuf.StringValue error = 3;
google.protobuf.StringValue transferredTransactionId = 1;
TransactionStatus transferredTransactionStatus = 2;
google.protobuf.StringValue paidOutTransactionId = 3;
google.protobuf.StringValue error = 4;
}

message DirectDebitRequest {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -581,18 +581,23 @@ object PaymentMessages {

trait PaidInResult extends PaymentResult

case class PaidIn(transactionId: String) extends PaidInResult
case class PaidIn(transactionId: String, transactionStatus: Transaction.TransactionStatus)
extends PaidInResult

case class PaidOut(transactionId: String) extends PaymentResult
case class PaidOut(transactionId: String, transactionStatus: Transaction.TransactionStatus)
extends PaymentResult

case class Refunded(transactionId: String) extends PaymentResult
case class Refunded(transactionId: String, transactionStatus: Transaction.TransactionStatus)
extends PaymentResult

case class Transfered(
transferedTransactionId: String,
case class Transferred(
transferredTransactionId: String,
transferredTransactionStatus: Transaction.TransactionStatus,
paidOutTransactionId: Option[String] = None
) extends PaymentResult

case class DirectDebited(transactionId: String) extends PaymentResult
case class DirectDebited(transactionId: String, transactionStatus: Transaction.TransactionStatus)
extends PaymentResult

case class PaymentRedirection(redirectUrl: String) extends PaidInResult

Expand All @@ -605,9 +610,15 @@ object PaymentMessages {

case class RecurringPaymentLoaded(recurringPayment: RecurringPayment) extends PaymentResult

case class FirstRecurringPaidIn(transactionId: String) extends PaidInResult
case class FirstRecurringPaidIn(
transactionId: String,
transactionStatus: Transaction.TransactionStatus
) extends PaidInResult

case class NextRecurringPaid(transactionId: String) extends PaidInResult
case class NextRecurringPaid(
transactionId: String,
transactionStatus: Transaction.TransactionStatus
) extends PaidInResult

case class PreAuthorizationCanceled(preAuthorizationCanceled: Boolean) extends PaymentResult

Expand Down Expand Up @@ -674,15 +685,35 @@ object PaymentMessages {

case class CardPreAuthorizationFailed(resultMessage: String) extends PaymentError(resultMessage)

case class PayInFailed(resultMessage: String) extends PaymentError(resultMessage)
case class PayInFailed(
transactionId: String,
transactionStatus: Transaction.TransactionStatus,
resultMessage: String
) extends PaymentError(resultMessage)

case class PayOutFailed(resultMessage: String) extends PaymentError(resultMessage)
case class PayOutFailed(
transactionId: String,
transactionStatus: Transaction.TransactionStatus,
resultMessage: String
) extends PaymentError(resultMessage)

case class RefundFailed(resultMessage: String) extends PaymentError(resultMessage)
case class RefundFailed(
transactionId: String,
transactionStatus: Transaction.TransactionStatus,
resultMessage: String
) extends PaymentError(resultMessage)

case class TransferFailed(resultMessage: String) extends PaymentError(resultMessage)
case class TransferFailed(
transferredTransactionId: String,
transferredTransactionStatus: Transaction.TransactionStatus,
resultMessage: String
) extends PaymentError(resultMessage)

case class DirectDebitFailed(resultMessage: String) extends PaymentError(resultMessage)
case class DirectDebitFailed(
transactionId: String,
transactionStatus: Transaction.TransactionStatus,
resultMessage: String
) extends PaymentError(resultMessage)

case object PaymentAccountNotFound extends PaymentError("PaymentAccountNotFound")

Expand Down Expand Up @@ -770,11 +801,17 @@ object PaymentMessages {
case object RecurringCardPaymentRegistrationNotUpdated
extends PaymentError("RecurringCardPaymentRegistrationNotUpdated")

case class FirstRecurringCardPaymentFailed(reason: String)
extends PaymentError(s"FirstRecurringPaymentFailed: $reason")
case class FirstRecurringCardPaymentFailed(
transactionId: String,
transactionStatus: Transaction.TransactionStatus,
reason: String
) extends PaymentError(s"FirstRecurringPaymentFailed: $reason")

case class NextRecurringPaymentFailed(reason: String)
extends PaymentError(s"NextRecurringPaymentFailed: $reason")
case class NextRecurringPaymentFailed(
transactionId: String,
transactionStatus: Transaction.TransactionStatus,
reason: String
) extends PaymentError(s"NextRecurringPaymentFailed: $reason")

case object Schedule4PaymentNotTriggered extends PaymentError("Schedule4PaymentNotTriggered")
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package app.softnetwork.payment

import app.softnetwork.payment.model._

import app.softnetwork.protobuf.ScalaPBSerializers
import ScalaPBSerializers.GeneratedEnumSerializer

import app.softnetwork.payment.api.TransactionStatus
import org.json4s.Formats

import app.softnetwork.serialization._

import scala.language.implicitConversions
Expand All @@ -33,4 +31,37 @@ package object serialization {
GeneratedEnumSerializer(RecurringPayment.RecurringCardPaymentStatus.enumCompanion)
)

implicit def transactionStatusToTransactionResponseStatus(
transactionStatus: Transaction.TransactionStatus
): TransactionStatus = {
transactionStatus match {
case Transaction.TransactionStatus.TRANSACTION_CREATED =>
TransactionStatus.TRANSACTION_CREATED
case Transaction.TransactionStatus.TRANSACTION_SUCCEEDED =>
TransactionStatus.TRANSACTION_SUCCEEDED
case Transaction.TransactionStatus.TRANSACTION_FAILED =>
TransactionStatus.TRANSACTION_FAILED
case Transaction.TransactionStatus.TRANSACTION_NOT_SPECIFIED =>
TransactionStatus.TRANSACTION_NOT_SPECIFIED
case Transaction.TransactionStatus.TRANSACTION_FAILED_FOR_TECHNICAL_REASON =>
TransactionStatus.TRANSACTION_FAILED_FOR_TECHNICAL_REASON
}
}

implicit def transactionResponseStatusToTransactionStatus(
transactionResponseStatus: TransactionStatus
): Transaction.TransactionStatus = {
transactionResponseStatus match {
case TransactionStatus.TRANSACTION_CREATED =>
Transaction.TransactionStatus.TRANSACTION_CREATED
case TransactionStatus.TRANSACTION_SUCCEEDED =>
Transaction.TransactionStatus.TRANSACTION_SUCCEEDED
case TransactionStatus.TRANSACTION_FAILED =>
Transaction.TransactionStatus.TRANSACTION_FAILED
case TransactionStatus.TRANSACTION_NOT_SPECIFIED =>
Transaction.TransactionStatus.TRANSACTION_NOT_SPECIFIED
case TransactionStatus.TRANSACTION_FAILED_FOR_TECHNICAL_REASON =>
Transaction.TransactionStatus.TRANSACTION_FAILED_FOR_TECHNICAL_REASON
}
}
}
Loading

0 comments on commit 08182e2

Please sign in to comment.