Skip to content
This repository has been archived by the owner on May 24, 2023. It is now read-only.

Commit

Permalink
#175: remove deprecated SetAuthorization and SetAmountPaid update act…
Browse files Browse the repository at this point in the history
…ions
  • Loading branch information
andrii-kovalenko-ct committed Oct 19, 2017
1 parent 3b935b1 commit acd708f
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 81 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import io.sphere.sdk.payments.commands.updateactions.AddTransaction;
import io.sphere.sdk.payments.commands.updateactions.ChangeTransactionInteractionId;
import io.sphere.sdk.payments.commands.updateactions.ChangeTransactionState;
import io.sphere.sdk.payments.commands.updateactions.SetAuthorization;
import io.sphere.sdk.utils.MoneyImpl;

import javax.money.MonetaryAmount;
Expand Down Expand Up @@ -78,14 +77,12 @@ protected ImmutableList<UpdateAction<Payment>> createPaymentUpdates(final Paymen
notification.getTransactionStatus().equals(TransactionStatus.COMPLETED)) {
listBuilder.add(ChangeTransactionState.of(
notification.getTransactionStatus().getCtTransactionState(), transaction.getId()));

listBuilder.add(SetAuthorization.of(payment.getAmountPlanned()));
}

return listBuilder;
})
.orElseGet(() -> {
addPaymentUpdatesForNewAuthorizationTransaction(payment, notification, listBuilder);
addPaymentUpdatesForNewAuthorizationTransaction(notification, listBuilder);
return listBuilder;
})
.build();
Expand All @@ -96,16 +93,11 @@ protected ImmutableList<UpdateAction<Payment>> createPaymentUpdates(final Paymen
}

private static void addPaymentUpdatesForNewAuthorizationTransaction(
final Payment payment,
final Notification notification,
final ImmutableList.Builder<UpdateAction<Payment>> listBuilder) {
final MonetaryAmount amount = MoneyImpl.of(notification.getPrice(), notification.getCurrency());

final TransactionState ctTransactionState = notification.getTransactionStatus().getCtTransactionState();
if (ctTransactionState.equals(TransactionState.SUCCESS)) {
final SetAuthorization setAuthorizationAction = SetAuthorization.of(payment.getAmountPlanned());
listBuilder.add(setAuthorizationAction);
}

listBuilder.add(AddTransaction.of(TransactionDraftBuilder.of(TransactionType.AUTHORIZATION, amount)
.timestamp(toZonedDateTime(notification))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import io.sphere.sdk.payments.*;
import io.sphere.sdk.payments.commands.updateactions.AddTransaction;
import io.sphere.sdk.payments.commands.updateactions.ChangeTransactionState;
import io.sphere.sdk.payments.commands.updateactions.SetAmountPaid;
import io.sphere.sdk.utils.MoneyImpl;

import javax.money.MonetaryAmount;
Expand Down Expand Up @@ -53,8 +52,6 @@ protected ImmutableList<UpdateAction<Payment>> createPaymentUpdates(final Paymen
if (transaction.getState().equals(TransactionState.PENDING)) {
listBuilder.add(ChangeTransactionState.of(ctTransactionState, transaction.getId()));
}

addSetAmountPaidForChangedAmount(payment, notification, listBuilder);
}
return listBuilder.build();
})
Expand All @@ -67,33 +64,8 @@ protected ImmutableList<UpdateAction<Payment>> createPaymentUpdates(final Paymen
.interactionId(sequenceNumber)
.build()));

if (ctTransactionState.equals(TransactionState.SUCCESS)) {
addSetAmountPaidForChangedAmount(payment, notification, listBuilder);
}

return listBuilder.build();
});
}

/**
* Adds a {@link SetAmountPaid} action to the list builder if the result of
* <pre>
* amountPaid = notification.receivable - notification.balance
* </pre>
* differs from {@code payment.getAmountPaid()}.
*
* @param payment the payment
* @param notification the "paid" notification
* @param actions the builder for the list of payment update actions
*/
private static void addSetAmountPaidForChangedAmount(final Payment payment,
final Notification notification,
final ImmutableList.Builder<UpdateAction<Payment>> actions) {
final MonetaryAmount receivable = MoneyImpl.of(notification.getReceivable(), notification.getCurrency());
final MonetaryAmount balance = MoneyImpl.of(notification.getBalance(), notification.getCurrency());
final MonetaryAmount amountPaid = receivable.subtract(balance);
if ((payment.getAmountPaid() == null) || !amountPaid.isEqualTo(payment.getAmountPaid())) {
actions.add(SetAmountPaid.of(amountPaid));
}
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
import io.sphere.sdk.commands.UpdateAction;
import io.sphere.sdk.payments.*;
import io.sphere.sdk.payments.commands.updateactions.AddTransaction;
import io.sphere.sdk.payments.commands.updateactions.SetAmountPaid;
import io.sphere.sdk.utils.MoneyImpl;

import javax.money.MonetaryAmount;
import java.util.List;
import java.util.Optional;

/**
* A NotificationProcessor for notifications with {@code txaction} "underpaid".
Expand Down Expand Up @@ -46,47 +46,19 @@ protected ImmutableList<UpdateAction<Payment>> createPaymentUpdates(final Paymen

final TransactionState ctTransactionState = notification.getTransactionStatus().getCtTransactionState();

return findMatchingTransaction(transactions, TransactionType.CHARGE, sequenceNumber)
.map(transaction -> {
addSetAmountPaidForChangedAmount(payment, notification, listBuilder);
return listBuilder.build();
})
.orElseGet(() -> {
final MonetaryAmount amount = MoneyImpl.of(notification.getPrice(), notification.getCurrency());
// if there is no matching transaction - add a new one
Optional<Transaction> matchingTransaction = findMatchingTransaction(transactions, TransactionType.CHARGE, sequenceNumber);
if (!matchingTransaction.isPresent()) {
final MonetaryAmount amount = MoneyImpl.of(notification.getPrice(), notification.getCurrency());

listBuilder.add(AddTransaction.of(TransactionDraftBuilder.of(TransactionType.CHARGE, amount)
.timestamp(toZonedDateTime(notification))
.state(ctTransactionState)
.interactionId(sequenceNumber)
.build()));

if (ctTransactionState.equals(TransactionState.SUCCESS)) {
addSetAmountPaidForChangedAmount(payment, notification, listBuilder);
}
listBuilder.add(AddTransaction.of(TransactionDraftBuilder.of(TransactionType.CHARGE, amount)
.timestamp(toZonedDateTime(notification))
.state(ctTransactionState)
.interactionId(sequenceNumber)
.build()));
}

return listBuilder.build();
});
return listBuilder.build();
}

/**
* Adds a {@link SetAmountPaid} action to the list builder if the result of
* <pre>
* amountPaid = notification.receivable - notification.balance
* </pre>
* differs from {@code payment.getAmountPaid()}.
*
* @param payment the payment
* @param notification the "underpaid" notification
* @param actions the builder for the list of payment update actions
*/
private static void addSetAmountPaidForChangedAmount(final Payment payment,
final Notification notification,
final ImmutableList.Builder<UpdateAction<Payment>> actions) {
final MonetaryAmount receivable = MoneyImpl.of(notification.getReceivable(), notification.getCurrency());
final MonetaryAmount balance = MoneyImpl.of(notification.getBalance(), notification.getCurrency());
final MonetaryAmount amountPaid = receivable.subtract(balance);
if ((payment.getAmountPaid() == null) || !amountPaid.isEqualTo(payment.getAmountPaid())) {
actions.add(SetAmountPaid.of(amountPaid));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,6 @@ private PaymentWithCartLike attemptExecution(PaymentWithCartLike paymentWithCart
setStatusInterfaceCode(response),
setStatusInterfaceText(response),
SetInterfaceId.of(response.get("txid")),
SetAuthorization.of(updatedPayment.getAmountPlanned()),
ChangeTransactionState.of(TransactionState.SUCCESS, transaction.getId()),
ChangeTransactionTimestamp.of(ZonedDateTime.now(), transaction.getId())
));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,7 @@ private PaymentWithCartLike attemptExecution(PaymentWithCartLike paymentWithCart
setStatusInterfaceText(response),
ChangeTransactionState.of(TransactionState.SUCCESS, transaction.getId()),
ChangeTransactionTimestamp.of(ZonedDateTime.now(), transaction.getId()),
SetInterfaceId.of(response.get("txid")),
SetAuthorization.of(paymentWithCartLike.getPayment().getAmountPlanned())
SetInterfaceId.of(response.get("txid"))
));
} else if (ResponseStatus.ERROR.getStateCode().equals(status)) {
return update(paymentWithCartLike, updatedPayment, ImmutableList.of(
Expand Down

0 comments on commit acd708f

Please sign in to comment.