killbill-aplcache
Changes
payment/src/main/java/org/killbill/billing/payment/core/sm/control/ControlPluginRunner.java 44(+33 -11)
payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlInitiated.java 4(+3 -1)
payment/src/main/java/org/killbill/billing/payment/core/sm/control/OperationControlCallback.java 9(+9 -0)
Details
diff --git a/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentGatewayApi.java b/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentGatewayApi.java
index 20a0655..26bce39 100644
--- a/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentGatewayApi.java
+++ b/payment/src/main/java/org/killbill/billing/payment/api/DefaultPaymentGatewayApi.java
@@ -142,9 +142,22 @@ public class DefaultPaymentGatewayApi extends DefaultApiBase implements PaymentG
try {
priorCallResult = controlPluginRunner.executePluginPriorCalls(account,
paymentMethodId,
- null, null, null, null,
- PaymentApiType.HPP, null, HPPType.BUILD_FORM_DESCRIPTOR,
- null, null, true, paymentControlPluginNames, properties, callContext);
+ null,
+ null,
+ null,
+ null,
+ null,
+ PaymentApiType.HPP,
+ null,
+ HPPType.BUILD_FORM_DESCRIPTOR,
+ null,
+ null,
+ null,
+ null,
+ true,
+ paymentControlPluginNames,
+ properties,
+ callContext);
} catch (final PaymentControlApiAbortException e) {
throw new PaymentApiException(ErrorCode.PAYMENT_PLUGIN_API_ABORTED, e.getPluginName());
@@ -156,16 +169,42 @@ public class DefaultPaymentGatewayApi extends DefaultApiBase implements PaymentG
final T result = callback.doPaymentGatewayApiOperation(priorCallResult.getAdjustedPaymentMethodId(), priorCallResult.getAdjustedPluginProperties());
controlPluginRunner.executePluginOnSuccessCalls(account,
paymentMethodId,
- null, null, null, null, null,
- PaymentApiType.HPP, null, HPPType.BUILD_FORM_DESCRIPTOR,
- null, null, null, null, true, paymentControlPluginNames, priorCallResult.getAdjustedPluginProperties(), callContext);
+ null,
+ null,
+ null,
+ null,
+ null,
+ PaymentApiType.HPP,
+ null,
+ HPPType.BUILD_FORM_DESCRIPTOR,
+ null,
+ null,
+ null,
+ null,
+ true,
+ paymentControlPluginNames,
+ priorCallResult.getAdjustedPluginProperties(),
+ callContext);
return PluginDispatcher.createPluginDispatcherReturnType(result);
} catch (final PaymentApiException e) {
controlPluginRunner.executePluginOnFailureCalls(account,
paymentMethodId,
- null, null, null, null,
- PaymentApiType.HPP, null, HPPType.BUILD_FORM_DESCRIPTOR,
- null, null, true, paymentControlPluginNames, priorCallResult.getAdjustedPluginProperties(), callContext);
+ null,
+ null,
+ null,
+ null,
+ null,
+ PaymentApiType.HPP,
+ null,
+ HPPType.BUILD_FORM_DESCRIPTOR,
+ null,
+ null,
+ null,
+ null,
+ true,
+ paymentControlPluginNames,
+ priorCallResult.getAdjustedPluginProperties(),
+ callContext);
throw e;
}
}
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/ControlPluginRunner.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/ControlPluginRunner.java
index 1ee36fc..d212925 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/ControlPluginRunner.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/ControlPluginRunner.java
@@ -62,12 +62,15 @@ public class ControlPluginRunner {
final UUID paymentAttemptId,
final UUID paymentId,
final String paymentExternalKey,
+ final UUID paymentTransactionId,
final String paymentTransactionExternalKey,
final PaymentApiType paymentApiType,
final TransactionType transactionType,
final HPPType hppType,
final BigDecimal amount,
final Currency currency,
+ final BigDecimal processedAmount,
+ final Currency processedCurrency,
final boolean isApiPayment,
final List<String> paymentControlPluginNames,
final Iterable<PluginProperty> pluginProperties,
@@ -85,12 +88,15 @@ public class ControlPluginRunner {
paymentAttemptId,
paymentId,
paymentExternalKey,
+ paymentTransactionId,
paymentTransactionExternalKey,
paymentApiType,
transactionType,
hppType,
amount,
currency,
+ processedAmount,
+ processedCurrency,
isApiPayment,
callContext);
@@ -124,12 +130,15 @@ public class ControlPluginRunner {
paymentAttemptId,
paymentId,
paymentExternalKey,
+ paymentTransactionId,
paymentTransactionExternalKey,
paymentApiType,
transactionType,
hppType,
inputAmount,
inputCurrency,
+ processedAmount,
+ processedCurrency,
isApiPayment,
callContext);
}
@@ -143,7 +152,7 @@ public class ControlPluginRunner {
final UUID paymentAttemptId,
final UUID paymentId,
final String paymentExternalKey,
- final UUID transactionId,
+ final UUID paymentTransactionId,
final String paymentTransactionExternalKey,
final PaymentApiType paymentApiType,
final TransactionType transactionType,
@@ -162,7 +171,7 @@ public class ControlPluginRunner {
paymentAttemptId,
paymentId,
paymentExternalKey,
- transactionId,
+ paymentTransactionId,
paymentTransactionExternalKey,
paymentApiType,
transactionType,
@@ -201,12 +210,15 @@ public class ControlPluginRunner {
final UUID paymentAttemptId,
final UUID paymentId,
final String paymentExternalKey,
+ final UUID transactionId,
final String paymentTransactionExternalKey,
final PaymentApiType paymentApiType,
final TransactionType transactionType,
final HPPType hppType,
final BigDecimal amount,
final Currency currency,
+ final BigDecimal processedAmount,
+ final Currency processedCurrency,
final boolean isApiPayment,
final List<String> paymentControlPluginNames,
final Iterable<PluginProperty> pluginProperties,
@@ -217,12 +229,15 @@ public class ControlPluginRunner {
paymentAttemptId,
paymentId,
paymentExternalKey,
+ transactionId,
paymentTransactionExternalKey,
paymentApiType,
transactionType,
hppType,
amount,
currency,
+ processedAmount,
+ processedCurrency,
isApiPayment,
callContext);
@@ -273,15 +288,22 @@ public class ControlPluginRunner {
private final Currency processedCurrency;
private final boolean isApiPayment;
- public DefaultPaymentControlContext(final Account account, final UUID paymentMethodId, final UUID attemptId, @Nullable final UUID paymentId, final String paymentExternalKey, final String transactionExternalKey,
- final PaymentApiType paymentApiType, final TransactionType transactionType, final HPPType hppType, final BigDecimal amount, final Currency currency,
- final boolean isApiPayment, final CallContext callContext) {
- this(account, paymentMethodId, attemptId, paymentId, paymentExternalKey, null, transactionExternalKey, paymentApiType, transactionType, hppType, amount, currency, null, null, isApiPayment, callContext);
- }
-
- public DefaultPaymentControlContext(final Account account, final UUID paymentMethodId, final UUID attemptId, @Nullable final UUID paymentId, final String paymentExternalKey, @Nullable final UUID transactionId, final String transactionExternalKey,
- final PaymentApiType paymentApiType, final TransactionType transactionType, final HPPType hppType,
- final BigDecimal amount, final Currency currency, @Nullable final BigDecimal processedAmount, @Nullable final Currency processedCurrency, final boolean isApiPayment, final CallContext callContext) {
+ public DefaultPaymentControlContext(final Account account,
+ final UUID paymentMethodId,
+ final UUID attemptId,
+ @Nullable final UUID paymentId,
+ final String paymentExternalKey,
+ @Nullable final UUID transactionId,
+ final String transactionExternalKey,
+ final PaymentApiType paymentApiType,
+ final TransactionType transactionType,
+ final HPPType hppType,
+ final BigDecimal amount,
+ final Currency currency,
+ @Nullable final BigDecimal processedAmount,
+ @Nullable final Currency processedCurrency,
+ final boolean isApiPayment,
+ final CallContext callContext) {
super(callContext.getTenantId(), callContext.getUserName(), callContext.getCallOrigin(), callContext.getUserType(), callContext.getReasonCode(), callContext.getComments(), callContext.getUserToken(), callContext.getCreatedDate(), callContext.getUpdatedDate());
this.account = account;
this.paymentMethodId = paymentMethodId;
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlInitiated.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlInitiated.java
index dcd1707..4b35883 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlInitiated.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/DefaultControlInitiated.java
@@ -89,7 +89,9 @@ public class DefaultControlInitiated implements LeavingStateCallback {
}
if (paymentTransactionModelDao != null) {
- stateContext.setPaymentTransactionExternalKey(paymentTransactionModelDao.getTransactionExternalKey());
+ stateContext.setPaymentTransactionModelDao(paymentTransactionModelDao);
+ stateContext.setProcessedAmount(paymentTransactionModelDao.getProcessedAmount());
+ stateContext.setProcessedCurrency(paymentTransactionModelDao.getProcessedCurrency());
} else if (stateContext.getPaymentTransactionExternalKey() == null) {
stateContext.setPaymentTransactionExternalKey(UUIDs.randomUUID().toString());
}
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/OperationControlCallback.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/OperationControlCallback.java
index b8fc059..ce634c0 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/OperationControlCallback.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/OperationControlCallback.java
@@ -91,12 +91,15 @@ public abstract class OperationControlCallback extends OperationCallbackBase<Pay
paymentStateControlContext.getAttemptId(),
paymentStateContext.getPaymentId(),
paymentStateContext.getPaymentExternalKey(),
+ paymentStateContext.getTransactionId(),
paymentStateContext.getPaymentTransactionExternalKey(),
PaymentApiType.PAYMENT_TRANSACTION,
paymentStateContext.getTransactionType(),
null,
paymentStateContext.getAmount(),
paymentStateContext.getCurrency(),
+ paymentStateControlContext.getProcessedAmount(),
+ paymentStateControlContext.getProcessedCurrency(),
paymentStateControlContext.isApiPayment(),
paymentStateContext.getCallContext());
@@ -173,12 +176,15 @@ public abstract class OperationControlCallback extends OperationCallbackBase<Pay
paymentStateControlContext.getAttemptId(),
paymentStateContext.getPaymentId(),
paymentStateContext.getPaymentExternalKey(),
+ paymentStateContext.getTransactionId(),
paymentStateContext.getPaymentTransactionExternalKey(),
PaymentApiType.PAYMENT_TRANSACTION,
paymentStateContext.getTransactionType(),
null,
paymentControlContextArg.getAmount(),
paymentControlContextArg.getCurrency(),
+ paymentControlContextArg.getProcessedAmount(),
+ paymentControlContextArg.getProcessedCurrency(),
paymentStateControlContext.isApiPayment(),
paymentControlPluginNames,
paymentStateContext.getProperties(),
@@ -227,12 +233,15 @@ public abstract class OperationControlCallback extends OperationCallbackBase<Pay
paymentStateControlContext.getAttemptId(),
paymentControlContext.getPaymentId(),
paymentControlContext.getPaymentExternalKey(),
+ paymentControlContext.getTransactionId(),
paymentControlContext.getTransactionExternalKey(),
PaymentApiType.PAYMENT_TRANSACTION,
paymentControlContext.getTransactionType(),
null,
paymentControlContext.getAmount(),
paymentControlContext.getCurrency(),
+ paymentControlContext.getProcessedAmount(),
+ paymentControlContext.getProcessedCurrency(),
paymentStateControlContext.isApiPayment(),
paymentControlPluginNames,
paymentStateContext.getProperties(),
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/PaymentStateControlContext.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/PaymentStateControlContext.java
index ecae4b4..920c660 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/control/PaymentStateControlContext.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/control/PaymentStateControlContext.java
@@ -45,6 +45,8 @@ public class PaymentStateControlContext extends PaymentStateContext {
private DateTime retryDate;
private List<String> paymentControlPluginNames;
private Payment result;
+ private BigDecimal processedAmount;
+ private Currency processedCurrency;
public PaymentStateControlContext(@Nullable final List<String> paymentControlPluginNames,
final boolean isApiPayment,
@@ -88,6 +90,22 @@ public class PaymentStateControlContext extends PaymentStateContext {
return isSuccess;
}
+ public BigDecimal getProcessedAmount() {
+ return processedAmount;
+ }
+
+ public void setProcessedAmount(final BigDecimal processedAmount) {
+ this.processedAmount = processedAmount;
+ }
+
+ public Currency getProcessedCurrency() {
+ return processedCurrency;
+ }
+
+ public void setProcessedCurrency(final Currency processedCurrency) {
+ this.processedCurrency = processedCurrency;
+ }
+
public PaymentTransaction getCurrentTransaction() {
if (result == null || result.getTransactions() == null) {
return null;
diff --git a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiWithControl.java b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiWithControl.java
index 15d8dac..4ad4a59 100644
--- a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiWithControl.java
+++ b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApiWithControl.java
@@ -38,10 +38,7 @@ import org.killbill.billing.payment.provider.DefaultNoOpPaymentMethodPlugin;
import org.killbill.billing.payment.provider.MockPaymentProviderPlugin;
import org.killbill.billing.payment.retry.DefaultFailureCallResult;
import org.killbill.billing.payment.retry.DefaultOnSuccessPaymentControlResult;
-import org.killbill.commons.request.Request;
-import org.killbill.commons.request.RequestData;
import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
@@ -91,14 +88,6 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
}
},
testPaymentControlPluginApi);
-
- // Required for re-entrant locks to work
- Request.setPerThreadRequestData(new RequestData(UUID.randomUUID().toString()));
- }
-
- @AfterMethod(groups = "slow")
- public void tearDown() throws Exception {
- Request.resetPerThreadRequestData();
}
// Verify Payment control API can be used to change the paymentMethodId on the fly and this is reflected in the created Payment.
@@ -111,6 +100,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
final Payment payment = paymentApi.createAuthorizationWithPaymentControl(account, account.getPaymentMethodId(), null, BigDecimal.TEN, Currency.USD, UUID.randomUUID().toString(),
UUID.randomUUID().toString(), ImmutableList.<PluginProperty>of(), PAYMENT_OPTIONS, callContext);
Assert.assertEquals(payment.getPaymentMethodId(), newPaymentMethodId);
+
+ verifyOnSuccess(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ BigDecimal.TEN,
+ Currency.USD);
}
@Test(groups = "slow")
@@ -126,6 +122,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().size(), 1);
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
+ verifyOnSuccess(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
+
payment = paymentApi.createAuthorizationWithPaymentControl(account, payment.getPaymentMethodId(), payment.getId(), requestedAmount, payment.getCurrency(), payment.getExternalKey(),
payment.getTransactions().get(0).getExternalKey(), ImmutableList.<PluginProperty>of(), PAYMENT_OPTIONS, callContext);
Assert.assertEquals(payment.getAuthAmount().compareTo(requestedAmount), 0);
@@ -133,6 +136,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().size(), 1);
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
Assert.assertEquals(payment.getTransactions().get(0).getExternalKey(), paymentTransactionExternalKey);
+
+ verifyPriorAndOnSuccess(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
}
@Test(groups = "slow")
@@ -148,6 +158,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().size(), 1);
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
+ verifyOnFailure(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ BigDecimal.ZERO,
+ Currency.USD);
+
try {
payment = paymentApi.createAuthorizationWithPaymentControl(account, payment.getPaymentMethodId(), payment.getId(), requestedAmount, payment.getCurrency(), payment.getExternalKey(),
payment.getTransactions().get(0).getExternalKey(), ImmutableList.<PluginProperty>of(), PAYMENT_OPTIONS, callContext);
@@ -161,6 +178,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
Assert.assertEquals(payment.getTransactions().get(0).getTransactionStatus(), TransactionStatus.UNKNOWN);
Assert.assertEquals(payment.getTransactions().get(0).getExternalKey(), paymentTransactionExternalKey);
+
+ verifyPriorAndOnFailure(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ BigDecimal.ZERO,
+ Currency.USD);
}
@Test(groups = "slow")
@@ -187,6 +211,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().get(1).getTransactionStatus(), TransactionStatus.PENDING);
Assert.assertEquals(payment.getTransactions().get(1).getExternalKey(), paymentTransactionExternalKey);
+ verifyOnSuccessForFollowOnTransaction(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
+
payment = paymentApi.createCaptureWithPaymentControl(account, payment.getId(), requestedAmount, payment.getCurrency(), paymentTransactionExternalKey,
ImmutableList.<PluginProperty>of(), PAYMENT_OPTIONS, callContext);
Assert.assertEquals(payment.getAuthAmount().compareTo(requestedAmount), 0);
@@ -196,6 +227,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(1)).getAttemptId());
Assert.assertEquals(payment.getTransactions().get(1).getTransactionStatus(), TransactionStatus.SUCCESS);
Assert.assertEquals(payment.getTransactions().get(1).getExternalKey(), paymentTransactionExternalKey);
+
+ verifyPriorAndOnSuccess(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
}
@Test(groups = "slow")
@@ -222,6 +260,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().get(1).getTransactionStatus(), TransactionStatus.UNKNOWN);
Assert.assertEquals(payment.getTransactions().get(1).getExternalKey(), paymentTransactionExternalKey);
+ verifyOnFailureForFollowOnTransaction(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ BigDecimal.ZERO,
+ Currency.USD);
+
try {
payment = paymentApi.createCaptureWithPaymentControl(account, payment.getId(), requestedAmount, payment.getCurrency(), paymentTransactionExternalKey,
pendingPluginProperties, PAYMENT_OPTIONS, callContext);
@@ -236,6 +281,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(1)).getAttemptId());
Assert.assertEquals(payment.getTransactions().get(1).getTransactionStatus(), TransactionStatus.UNKNOWN);
Assert.assertEquals(payment.getTransactions().get(1).getExternalKey(), paymentTransactionExternalKey);
+
+ verifyPriorAndOnFailure(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ BigDecimal.ZERO,
+ Currency.USD);
}
@Test(groups = "slow")
@@ -251,6 +303,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().size(), 1);
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
+ verifyOnSuccess(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
+
payment = paymentApi.createAuthorization(account, account.getPaymentMethodId(), payment.getId(), requestedAmount, payment.getCurrency(), payment.getExternalKey(),
payment.getTransactions().get(0).getExternalKey(), ImmutableList.<PluginProperty>of(), callContext);
Assert.assertEquals(payment.getAuthAmount().compareTo(requestedAmount), 0);
@@ -273,6 +332,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().size(), 1);
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
+ verifyOnFailure(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ BigDecimal.ZERO,
+ Currency.USD);
+
try {
payment = paymentApi.createAuthorization(account, account.getPaymentMethodId(), payment.getId(), requestedAmount, payment.getCurrency(), payment.getExternalKey(),
payment.getTransactions().get(0).getExternalKey(), ImmutableList.<PluginProperty>of(), callContext);
@@ -312,6 +378,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().get(1).getTransactionStatus(), TransactionStatus.PENDING);
Assert.assertEquals(payment.getTransactions().get(1).getExternalKey(), paymentTransactionExternalKey);
+ verifyOnSuccessForFollowOnTransaction(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
+
payment = paymentApi.createCapture(account, payment.getId(), requestedAmount, payment.getCurrency(), paymentTransactionExternalKey, ImmutableList.<PluginProperty>of(), callContext);
Assert.assertEquals(payment.getAuthAmount().compareTo(requestedAmount), 0);
Assert.assertEquals(payment.getCapturedAmount().compareTo(requestedAmount), 0);
@@ -346,6 +419,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().get(1).getTransactionStatus(), TransactionStatus.UNKNOWN);
Assert.assertEquals(payment.getTransactions().get(1).getExternalKey(), paymentTransactionExternalKey);
+ verifyOnFailureForFollowOnTransaction(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ BigDecimal.ZERO,
+ Currency.USD);
+
try {
payment = paymentApi.createCapture(account, payment.getId(), requestedAmount, payment.getCurrency(), paymentTransactionExternalKey, ImmutableList.<PluginProperty>of(), callContext);
Assert.fail();
@@ -381,6 +461,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().size(), 1);
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
Assert.assertEquals(payment.getTransactions().get(0).getExternalKey(), paymentTransactionExternalKey);
+
+ verifyPriorAndOnSuccess(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
}
@Test(groups = "slow")
@@ -409,8 +496,14 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
Assert.assertEquals(payment.getTransactions().get(0).getTransactionStatus(), TransactionStatus.UNKNOWN);
Assert.assertEquals(payment.getTransactions().get(0).getExternalKey(), paymentTransactionExternalKey);
- }
+ verifyPriorAndOnFailure(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ BigDecimal.ZERO,
+ Currency.USD);
+ }
@Test(groups = "slow")
public void testCreateAuthSuccessCapturePendingNoControlCompleteWithControl() throws PaymentApiException {
@@ -444,6 +537,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(1)).getAttemptId());
Assert.assertEquals(payment.getTransactions().get(1).getTransactionStatus(), TransactionStatus.SUCCESS);
Assert.assertEquals(payment.getTransactions().get(1).getExternalKey(), paymentTransactionExternalKey);
+
+ verifyPriorAndOnSuccess(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
}
@Test(groups = "slow")
@@ -483,6 +583,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertNull(((DefaultPaymentTransaction) payment.getTransactions().get(1)).getAttemptId());
Assert.assertEquals(payment.getTransactions().get(1).getTransactionStatus(), TransactionStatus.UNKNOWN);
Assert.assertEquals(payment.getTransactions().get(1).getExternalKey(), paymentTransactionExternalKey);
+
+ verifyPriorAndOnFailure(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ BigDecimal.ZERO,
+ Currency.USD);
}
@Test(groups = "slow")
@@ -496,6 +603,13 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().size(), 1);
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
+ verifyOnSuccess(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(0).getId(),
+ payment.getTransactions().get(0).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
+
payment = paymentApi.createCapture(account, payment.getId(), payment.getAuthAmount(), payment.getCurrency(), UUID.randomUUID().toString(), ImmutableList.<PluginProperty>of(), callContext);
Assert.assertEquals(payment.getAuthAmount().compareTo(requestedAmount), 0);
Assert.assertEquals(payment.getCapturedAmount().compareTo(requestedAmount), 0);
@@ -522,6 +636,193 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
Assert.assertEquals(payment.getTransactions().size(), 2);
Assert.assertNull(((DefaultPaymentTransaction) payment.getTransactions().get(0)).getAttemptId());
Assert.assertNotNull(((DefaultPaymentTransaction) payment.getTransactions().get(1)).getAttemptId());
+
+ verifyOnSuccessForFollowOnTransaction(payment.getId(),
+ payment.getExternalKey(),
+ payment.getTransactions().get(1).getId(),
+ payment.getTransactions().get(1).getExternalKey(),
+ requestedAmount,
+ Currency.USD);
+ }
+
+ private void verifyPriorAndOnSuccess(final UUID paymentId,
+ final String paymentExternalKey,
+ final UUID paymentTransactionId,
+ final String paymentTransactionExternalKey,
+ final BigDecimal processAmount,
+ final Currency processedCurrency) {
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallTransactionId(), paymentTransactionId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallProcessedAmount().compareTo(processAmount), 0);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallProcessedCurrency(), processedCurrency);
+
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallTransactionId(), paymentTransactionId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallProcessedAmount().compareTo(processAmount), 0);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallProcessedCurrency(), processedCurrency);
+
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallPaymentId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallPaymentExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallTransactionId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallTransactionExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallProcessedCurrency());
+
+ testPaymentControlPluginApi.resetActualValues();
+ }
+
+ private void verifyOnSuccess(final UUID paymentId,
+ final String paymentExternalKey,
+ final UUID paymentTransactionId,
+ final String paymentTransactionExternalKey,
+ final BigDecimal processAmount,
+ final Currency processedCurrency) {
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallPaymentId());
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallTransactionId());
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallProcessedCurrency());
+
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallTransactionId(), paymentTransactionId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallProcessedAmount().compareTo(processAmount), 0);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallProcessedCurrency(), processedCurrency);
+
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallPaymentId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallPaymentExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallTransactionId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallTransactionExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallProcessedCurrency());
+
+ testPaymentControlPluginApi.resetActualValues();
+ }
+
+ private void verifyOnSuccessForFollowOnTransaction(final UUID paymentId,
+ final String paymentExternalKey,
+ final UUID paymentTransactionId,
+ final String paymentTransactionExternalKey,
+ final BigDecimal processAmount,
+ final Currency processedCurrency) {
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallTransactionId());
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallProcessedCurrency());
+
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallTransactionId(), paymentTransactionId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallProcessedAmount().compareTo(processAmount), 0);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnSuccessCallProcessedCurrency(), processedCurrency);
+
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallPaymentId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallPaymentExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallTransactionId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallTransactionExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnFailureCallProcessedCurrency());
+
+ testPaymentControlPluginApi.resetActualValues();
+ }
+
+ private void verifyPriorAndOnFailure(final UUID paymentId,
+ final String paymentExternalKey,
+ final UUID paymentTransactionId,
+ final String paymentTransactionExternalKey,
+ final BigDecimal processAmount,
+ final Currency processedCurrency) {
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallTransactionId(), paymentTransactionId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallProcessedAmount().compareTo(processAmount), 0);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallProcessedCurrency(), processedCurrency);
+
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallPaymentId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallPaymentExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallTransactionId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallTransactionExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallProcessedCurrency());
+
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallTransactionId(), paymentTransactionId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallProcessedAmount().compareTo(processAmount), 0);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallProcessedCurrency(), processedCurrency);
+
+ testPaymentControlPluginApi.resetActualValues();
+ }
+
+ private void verifyOnFailure(final UUID paymentId,
+ final String paymentExternalKey,
+ final UUID paymentTransactionId,
+ final String paymentTransactionExternalKey,
+ final BigDecimal processAmount,
+ final Currency processedCurrency) {
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallPaymentId());
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallTransactionId());
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallProcessedCurrency());
+
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallPaymentId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallPaymentExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallTransactionId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallTransactionExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallProcessedCurrency());
+
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallTransactionId(), paymentTransactionId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallProcessedAmount().compareTo(processAmount), 0);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallProcessedCurrency(), processedCurrency);
+
+ testPaymentControlPluginApi.resetActualValues();
+ }
+
+ private void verifyOnFailureForFollowOnTransaction(final UUID paymentId,
+ final String paymentExternalKey,
+ final UUID paymentTransactionId,
+ final String paymentTransactionExternalKey,
+ final BigDecimal processAmount,
+ final Currency processedCurrency) {
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallTransactionId());
+ Assert.assertEquals(testPaymentControlPluginApi.getActualPriorCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualPriorCallProcessedCurrency());
+
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallPaymentId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallPaymentExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallTransactionId());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallTransactionExternalKey());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallProcessedAmount());
+ Assert.assertNull(testPaymentControlPluginApi.getActualOnSuccessCallProcessedCurrency());
+
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallPaymentId(), paymentId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallPaymentExternalKey(), paymentExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallTransactionId(), paymentTransactionId);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallTransactionExternalKey(), paymentTransactionExternalKey);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallProcessedAmount().compareTo(processAmount), 0);
+ Assert.assertEquals(testPaymentControlPluginApi.getActualOnFailureCallProcessedCurrency(), processedCurrency);
+
+ testPaymentControlPluginApi.resetActualValues();
}
public static class TestPaymentControlPluginApi implements PaymentControlPluginApi {
@@ -530,12 +831,112 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
private UUID newPaymentMethodId;
+ private UUID actualPriorCallPaymentId;
+ private String actualPriorCallPaymentExternalKey;
+ private UUID actualPriorCallTransactionId;
+ private String actualPriorCallTransactionExternalKey;
+ private BigDecimal actualPriorCallProcessedAmount;
+ private Currency actualPriorCallProcessedCurrency;
+
+ private UUID actualOnSuccessCallPaymentId;
+ private String actualOnSuccessCallPaymentExternalKey;
+ private UUID actualOnSuccessCallTransactionId;
+ private String actualOnSuccessCallTransactionExternalKey;
+ private BigDecimal actualOnSuccessCallProcessedAmount;
+ private Currency actualOnSuccessCallProcessedCurrency;
+
+ private UUID actualOnFailureCallPaymentId;
+ private String actualOnFailureCallPaymentExternalKey;
+ private UUID actualOnFailureCallTransactionId;
+ private String actualOnFailureCallTransactionExternalKey;
+ private BigDecimal actualOnFailureCallProcessedAmount;
+ private Currency actualOnFailureCallProcessedCurrency;
+
public void setNewPaymentMethodId(final UUID newPaymentMethodId) {
this.newPaymentMethodId = newPaymentMethodId;
}
+ public UUID getActualPriorCallPaymentId() {
+ return actualPriorCallPaymentId;
+ }
+
+ public String getActualPriorCallPaymentExternalKey() {
+ return actualPriorCallPaymentExternalKey;
+ }
+
+ public UUID getActualPriorCallTransactionId() {
+ return actualPriorCallTransactionId;
+ }
+
+ public String getActualPriorCallTransactionExternalKey() {
+ return actualPriorCallTransactionExternalKey;
+ }
+
+ public BigDecimal getActualPriorCallProcessedAmount() {
+ return actualPriorCallProcessedAmount;
+ }
+
+ public Currency getActualPriorCallProcessedCurrency() {
+ return actualPriorCallProcessedCurrency;
+ }
+
+ public UUID getActualOnSuccessCallPaymentId() {
+ return actualOnSuccessCallPaymentId;
+ }
+
+ public String getActualOnSuccessCallPaymentExternalKey() {
+ return actualOnSuccessCallPaymentExternalKey;
+ }
+
+ public UUID getActualOnSuccessCallTransactionId() {
+ return actualOnSuccessCallTransactionId;
+ }
+
+ public String getActualOnSuccessCallTransactionExternalKey() {
+ return actualOnSuccessCallTransactionExternalKey;
+ }
+
+ public BigDecimal getActualOnSuccessCallProcessedAmount() {
+ return actualOnSuccessCallProcessedAmount;
+ }
+
+ public Currency getActualOnSuccessCallProcessedCurrency() {
+ return actualOnSuccessCallProcessedCurrency;
+ }
+
+ public UUID getActualOnFailureCallPaymentId() {
+ return actualOnFailureCallPaymentId;
+ }
+
+ public String getActualOnFailureCallPaymentExternalKey() {
+ return actualOnFailureCallPaymentExternalKey;
+ }
+
+ public UUID getActualOnFailureCallTransactionId() {
+ return actualOnFailureCallTransactionId;
+ }
+
+ public String getActualOnFailureCallTransactionExternalKey() {
+ return actualOnFailureCallTransactionExternalKey;
+ }
+
+ public BigDecimal getActualOnFailureCallProcessedAmount() {
+ return actualOnFailureCallProcessedAmount;
+ }
+
+ public Currency getActualOnFailureCallProcessedCurrency() {
+ return actualOnFailureCallProcessedCurrency;
+ }
+
@Override
public PriorPaymentControlResult priorCall(final PaymentControlContext context, final Iterable<PluginProperty> properties) throws PaymentControlApiException {
+ actualPriorCallPaymentId = context.getPaymentId();
+ actualPriorCallPaymentExternalKey = context.getPaymentExternalKey();
+ actualPriorCallTransactionId = context.getTransactionId();
+ actualPriorCallTransactionExternalKey = context.getTransactionExternalKey();
+ actualPriorCallProcessedAmount = context.getProcessedAmount();
+ actualPriorCallProcessedCurrency = context.getProcessedCurrency();
+
return new PriorPaymentControlResult() {
@Override
public boolean isAborted() {
@@ -566,12 +967,49 @@ public class TestPaymentApiWithControl extends PaymentTestSuiteWithEmbeddedDB {
@Override
public OnSuccessPaymentControlResult onSuccessCall(final PaymentControlContext context, final Iterable<PluginProperty> properties) throws PaymentControlApiException {
+ actualOnSuccessCallPaymentId = context.getPaymentId();
+ actualOnSuccessCallPaymentExternalKey = context.getPaymentExternalKey();
+ actualOnSuccessCallTransactionId = context.getTransactionId();
+ actualOnSuccessCallTransactionExternalKey = context.getTransactionExternalKey();
+ actualOnSuccessCallProcessedAmount = context.getProcessedAmount();
+ actualOnSuccessCallProcessedCurrency = context.getProcessedCurrency();
+
return new DefaultOnSuccessPaymentControlResult();
}
@Override
public OnFailurePaymentControlResult onFailureCall(final PaymentControlContext context, final Iterable<PluginProperty> properties) throws PaymentControlApiException {
+ actualOnFailureCallPaymentId = context.getPaymentId();
+ actualOnFailureCallPaymentExternalKey = context.getPaymentExternalKey();
+ actualOnFailureCallTransactionId = context.getTransactionId();
+ actualOnFailureCallTransactionExternalKey = context.getTransactionExternalKey();
+ actualOnFailureCallProcessedAmount = context.getProcessedAmount();
+ actualOnFailureCallProcessedCurrency = context.getProcessedCurrency();
+
return new DefaultFailureCallResult(null);
}
+
+ public void resetActualValues() {
+ actualPriorCallPaymentId = null;
+ actualPriorCallPaymentExternalKey = null;
+ actualPriorCallTransactionId = null;
+ actualPriorCallTransactionExternalKey = null;
+ actualPriorCallProcessedAmount = null;
+ actualPriorCallProcessedCurrency = null;
+
+ actualOnSuccessCallPaymentId = null;
+ actualOnSuccessCallPaymentExternalKey = null;
+ actualOnSuccessCallTransactionId = null;
+ actualOnSuccessCallTransactionExternalKey = null;
+ actualOnSuccessCallProcessedAmount = null;
+ actualOnSuccessCallProcessedCurrency = null;
+
+ actualOnFailureCallPaymentId = null;
+ actualOnFailureCallPaymentExternalKey = null;
+ actualOnFailureCallTransactionId = null;
+ actualOnFailureCallTransactionExternalKey = null;
+ actualOnFailureCallProcessedAmount = null;
+ actualOnFailureCallProcessedCurrency = null;
+ }
}
}
diff --git a/payment/src/test/java/org/killbill/billing/payment/core/sm/control/TestControlPluginRunner.java b/payment/src/test/java/org/killbill/billing/payment/core/sm/control/TestControlPluginRunner.java
index e48f3b4..80cb640 100644
--- a/payment/src/test/java/org/killbill/billing/payment/core/sm/control/TestControlPluginRunner.java
+++ b/payment/src/test/java/org/killbill/billing/payment/core/sm/control/TestControlPluginRunner.java
@@ -43,6 +43,7 @@ public class TestControlPluginRunner extends PaymentTestSuiteNoDB {
final UUID paymentMethodId = UUIDs.randomUUID();
final UUID paymentId = UUIDs.randomUUID();
final String paymentExternalKey = UUIDs.randomUUID().toString();
+ final UUID paymentTransactionId = UUIDs.randomUUID();
final String paymentTransactionExternalKey = UUIDs.randomUUID().toString();
final BigDecimal amount = BigDecimal.ONE;
final Currency currency = Currency.USD;
@@ -55,12 +56,15 @@ public class TestControlPluginRunner extends PaymentTestSuiteNoDB {
null,
paymentId,
paymentExternalKey,
+ paymentTransactionId,
paymentTransactionExternalKey,
PaymentApiType.PAYMENT_TRANSACTION,
TransactionType.AUTHORIZE,
null,
amount,
currency,
+ null,
+ null,
true,
paymentControlPluginNames,
pluginProperties,