killbill-memoizeit
Changes
pom.xml 2(+1 -1)
Details
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/DirectTransactionJson.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/DirectTransactionJson.java
index 29df0bf..d170df1 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/DirectTransactionJson.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/json/DirectTransactionJson.java
@@ -75,9 +75,9 @@ public class DirectTransactionJson extends JsonBase {
directPaymentId.toString(),
dpt.getTransactionType().toString(),
dpt.getAmount(),
- dpt.getCurrency().toString(),
+ dpt.getCurrency() != null ? dpt.getCurrency().toString() : null,
dpt.getEffectiveDate(),
- dpt.getPaymentStatus().toString(),
+ dpt.getPaymentStatus() != null ? dpt.getPaymentStatus().toString() : null,
1,
externalKey,
dpt.getGatewayErrorCode(),
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/DirectPaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/DirectPaymentResource.java
index 665ea81..a76bf2c 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/DirectPaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/DirectPaymentResource.java
@@ -44,7 +44,7 @@ import org.killbill.billing.account.api.AccountApiException;
import org.killbill.billing.account.api.AccountUserApi;
import org.killbill.billing.catalog.api.Currency;
import org.killbill.billing.jaxrs.json.DirectPaymentJson;
-import org.killbill.billing.jaxrs.json.PaymentJson;
+import org.killbill.billing.jaxrs.json.DirectTransactionJson;
import org.killbill.billing.jaxrs.util.Context;
import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
import org.killbill.billing.payment.api.DirectPayment;
@@ -187,7 +187,7 @@ public class DirectPaymentResource extends JaxRsResourceBase {
@Path("/{directPaymentId:" + UUID_PATTERN + "}/")
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
- public Response captureAuthorization(final PaymentJson json,
+ public Response captureAuthorization(final DirectTransactionJson json,
@PathParam("directPaymentId") final String directPaymentIdStr,
@QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
@@ -211,7 +211,7 @@ public class DirectPaymentResource extends JaxRsResourceBase {
@Path("/{directPaymentId:" + UUID_PATTERN + "}/" + CREDITS)
@Consumes(APPLICATION_JSON)
@Produces(APPLICATION_JSON)
- public Response creditPayment(final PaymentJson json,
+ public Response creditPayment(final DirectTransactionJson json,
@PathParam("directPaymentId") final String directPaymentIdStr,
@QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
@HeaderParam(HDR_CREATED_BY) final String createdBy,
diff --git a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
index 615e41d..7c918d4 100644
--- a/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
+++ b/jaxrs/src/main/java/org/killbill/billing/jaxrs/resources/PaymentResource.java
@@ -58,7 +58,6 @@ import org.killbill.billing.jaxrs.json.PaymentJson;
import org.killbill.billing.jaxrs.json.RefundJson;
import org.killbill.billing.jaxrs.util.Context;
import org.killbill.billing.jaxrs.util.JaxrsUriBuilder;
-import org.killbill.billing.payment.api.DirectPaymentApi;
import org.killbill.billing.payment.api.Payment;
import org.killbill.billing.payment.api.PaymentApi;
import org.killbill.billing.payment.api.PaymentApiException;
@@ -97,7 +96,6 @@ public class PaymentResource extends JaxRsResourceBase {
public PaymentResource(final AccountUserApi accountUserApi,
final PaymentApi paymentApi,
final InvoicePaymentApi invoicePaymentApi,
- final DirectPaymentApi directPaymentApi,
final JaxrsUriBuilder uriBuilder,
final TagUserApi tagUserApi,
final CustomFieldUserApi customFieldUserApi,
pom.xml 2(+1 -1)
diff --git a/pom.xml b/pom.xml
index 7c07bcd..149d4c8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -19,7 +19,7 @@
<parent>
<artifactId>killbill-oss-parent</artifactId>
<groupId>org.kill-bill.billing</groupId>
- <version>0.7.5</version>
+ <version>0.7.7</version>
</parent>
<artifactId>killbill</artifactId>
<version>0.11.3-SNAPSHOT</version>
diff --git a/server/src/test/java/org/killbill/billing/jaxrs/TestDirectPayment.java b/server/src/test/java/org/killbill/billing/jaxrs/TestDirectPayment.java
index dab5185..681aaa2 100644
--- a/server/src/test/java/org/killbill/billing/jaxrs/TestDirectPayment.java
+++ b/server/src/test/java/org/killbill/billing/jaxrs/TestDirectPayment.java
@@ -17,45 +17,107 @@
package org.killbill.billing.jaxrs;
import java.math.BigDecimal;
+import java.util.UUID;
+import javax.annotation.Nullable;
+
+import org.killbill.billing.client.KillBillClientException;
import org.killbill.billing.client.model.Account;
import org.killbill.billing.client.model.DirectPayment;
+import org.killbill.billing.client.model.DirectPayments;
import org.killbill.billing.client.model.DirectTransaction;
import org.testng.Assert;
import org.testng.annotations.Test;
-import static org.testng.Assert.assertEquals;
-
public class TestDirectPayment extends TestJaxrsBase {
@Test(groups = "slow")
- public void testRetrievePayment() throws Exception {
-
+ public void testCreateRetrievePayment() throws Exception {
final Account account = createAccountWithDefaultPaymentMethod();
- final DirectTransaction transaction = new DirectTransaction();
- transaction.setAmount(BigDecimal.TEN);
- transaction.setCurrency(account.getCurrency());
- transaction.setExternalKey("foo");
- transaction.setTransactionType("AUTHORIZE");
-
- final DirectPayment retrievedPaymentJson = killBillClient.createDirectPayment(account.getAccountId(), transaction, createdBy, reason, comment);
-
- assertEquals(retrievedPaymentJson.getAccountId(), account.getAccountId());
- Assert.assertNotNull(retrievedPaymentJson.getDirectPaymentId());
- Assert.assertNotNull(retrievedPaymentJson.getPaymentNumber());
- assertEquals(retrievedPaymentJson.getAuthAmount().compareTo(BigDecimal.TEN), 0);
- assertEquals(retrievedPaymentJson.getCapturedAmount().compareTo(BigDecimal.ZERO), 0);
- assertEquals(retrievedPaymentJson.getRefundedAmount().compareTo(BigDecimal.ZERO), 0);
- assertEquals(retrievedPaymentJson.getCurrency(), account.getCurrency());
- assertEquals(retrievedPaymentJson.getPaymentMethodId(), account.getPaymentMethodId());
- assertEquals(retrievedPaymentJson.getTransactions().size(), 1);
-
- assertEquals(retrievedPaymentJson.getTransactions().get(0).getDirectPaymentId(), retrievedPaymentJson.getDirectPaymentId());
- Assert.assertNotNull(retrievedPaymentJson.getTransactions().get(0).getDirectTransactionId());
- assertEquals(retrievedPaymentJson.getTransactions().get(0).getTransactionType(), "AUTHORIZE");
- assertEquals(retrievedPaymentJson.getTransactions().get(0).getStatus(), "SUCCESS");
- assertEquals(retrievedPaymentJson.getTransactions().get(0).getAmount().compareTo(BigDecimal.TEN), 0);
- assertEquals(retrievedPaymentJson.getTransactions().get(0).getExternalKey(), "foo");
+ // Authorization
+ final DirectTransaction authTransaction = new DirectTransaction();
+ authTransaction.setAmount(BigDecimal.TEN);
+ authTransaction.setCurrency(account.getCurrency());
+ authTransaction.setExternalKey("foo");
+ authTransaction.setTransactionType("AUTHORIZE");
+ final DirectPayment authDirectPayment = killBillClient.createDirectPayment(account.getAccountId(), authTransaction, createdBy, reason, comment);
+ verifyDirectPayment(account, authDirectPayment, BigDecimal.TEN, BigDecimal.ZERO, BigDecimal.ZERO, 1);
+
+ // Capture 1
+ final DirectTransaction captureTransaction = new DirectTransaction();
+ captureTransaction.setDirectPaymentId(authDirectPayment.getDirectPaymentId());
+ captureTransaction.setAmount(BigDecimal.ONE);
+ captureTransaction.setCurrency(account.getCurrency());
+ final DirectPayment capturedDirectPayment1 = killBillClient.captureAuthorization(captureTransaction, createdBy, reason, comment);
+ verifyDirectPayment(account, capturedDirectPayment1, BigDecimal.TEN, BigDecimal.ONE, BigDecimal.ZERO, 2);
+ verifyDirectPaymentTransaction(authDirectPayment.getDirectPaymentId(), capturedDirectPayment1.getTransactions().get(1),
+ account, captureTransaction.getAmount(), "CAPTURE");
+
+ // Capture 2
+ final DirectPayment capturedDirectPayment2 = killBillClient.captureAuthorization(captureTransaction, createdBy, reason, comment);
+ verifyDirectPayment(account, capturedDirectPayment2, BigDecimal.TEN, new BigDecimal("2"), BigDecimal.ZERO, 3);
+ verifyDirectPaymentTransaction(authDirectPayment.getDirectPaymentId(), capturedDirectPayment2.getTransactions().get(2),
+ account, captureTransaction.getAmount(), "CAPTURE");
+
+ // Credit
+ final DirectTransaction creditTransaction = new DirectTransaction();
+ creditTransaction.setDirectPaymentId(authDirectPayment.getDirectPaymentId());
+ creditTransaction.setAmount(new BigDecimal("223.12"));
+ creditTransaction.setCurrency(account.getCurrency());
+ final DirectPayment creditDirectPayment = killBillClient.creditPayment(creditTransaction, createdBy, reason, comment);
+ verifyDirectPayment(account, creditDirectPayment, BigDecimal.TEN, new BigDecimal("2"), new BigDecimal("223.12"), 4);
+ verifyDirectPaymentTransaction(authDirectPayment.getDirectPaymentId(), creditDirectPayment.getTransactions().get(3),
+ account, creditTransaction.getAmount(), "CREDIT");
+
+ // Void
+ final DirectPayment voidDirectPayment = killBillClient.voidPayment(authDirectPayment.getDirectPaymentId(), createdBy, reason, comment);
+ verifyDirectPayment(account, voidDirectPayment, BigDecimal.TEN, new BigDecimal("2"), new BigDecimal("223.12"), 5);
+ verifyDirectPaymentTransaction(authDirectPayment.getDirectPaymentId(), voidDirectPayment.getTransactions().get(4),
+ account, null, "VOID");
+ }
+
+ private void verifyDirectPayment(final Account account, final DirectPayment directPayment,
+ final BigDecimal authAmount, final BigDecimal capturedAmount,
+ final BigDecimal refundedAmount, final int nbTransactions) throws KillBillClientException {
+ Assert.assertEquals(directPayment.getAccountId(), account.getAccountId());
+ Assert.assertNotNull(directPayment.getDirectPaymentId());
+ Assert.assertNotNull(directPayment.getPaymentNumber());
+ Assert.assertEquals(directPayment.getAuthAmount().compareTo(authAmount), 0);
+ Assert.assertEquals(directPayment.getCapturedAmount().compareTo(capturedAmount), 0);
+ Assert.assertEquals(directPayment.getRefundedAmount().compareTo(refundedAmount), 0);
+ Assert.assertEquals(directPayment.getCurrency(), account.getCurrency());
+ Assert.assertEquals(directPayment.getPaymentMethodId(), account.getPaymentMethodId());
+ Assert.assertEquals(directPayment.getTransactions().size(), nbTransactions);
+
+ verifyDirectPaymentTransaction(directPayment.getDirectPaymentId(), directPayment.getTransactions().get(0),
+ account, authAmount, "AUTHORIZE");
+
+ final DirectPayments directPayments = killBillClient.getDirectPayments();
+ Assert.assertEquals(directPayments.size(), 1);
+ Assert.assertEquals(directPayments.get(0), directPayment);
+
+ final DirectPayment retrievedDirectPayment = killBillClient.getDirectPayment(directPayment.getDirectPaymentId());
+ Assert.assertEquals(retrievedDirectPayment, directPayment);
+
+ final DirectPayments directPaymentsForAccount = killBillClient.getDirectPaymentsForAccount(account.getAccountId());
+ Assert.assertEquals(directPaymentsForAccount.size(), 1);
+ Assert.assertEquals(directPaymentsForAccount.get(0), directPayment);
+ }
+
+ private void verifyDirectPaymentTransaction(final UUID directPaymentId, final DirectTransaction directTransaction,
+ final Account account, @Nullable final BigDecimal amount, final String transactionType) {
+ Assert.assertEquals(directTransaction.getDirectPaymentId(), directPaymentId);
+ Assert.assertNotNull(directTransaction.getDirectTransactionId());
+ Assert.assertEquals(directTransaction.getTransactionType(), transactionType);
+ Assert.assertEquals(directTransaction.getStatus(), "SUCCESS");
+ if (amount == null) {
+ Assert.assertNull(directTransaction.getAmount());
+ Assert.assertNull(directTransaction.getCurrency());
+ } else {
+ Assert.assertEquals(directTransaction.getAmount().compareTo(amount), 0);
+ Assert.assertEquals(directTransaction.getCurrency(), account.getCurrency());
+ }
+ Assert.assertEquals(directTransaction.getExternalKey(), "foo");
}
}