killbill-aplcache

Details

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 d5d8d41..163d217 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
@@ -328,12 +328,12 @@ public class PaymentResource extends JaxRsResourceBase {
 
     private Response refundPaymentInternal(final PaymentTransactionJson json,
                                            @Nullable final String paymentIdStr,
-                                           @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
-                                           @HeaderParam(HDR_CREATED_BY) final String createdBy,
-                                           @HeaderParam(HDR_REASON) final String reason,
-                                           @HeaderParam(HDR_COMMENT) final String comment,
-                                           @javax.ws.rs.core.Context final UriInfo uriInfo,
-                                           @javax.ws.rs.core.Context final HttpServletRequest request) throws PaymentApiException, AccountApiException {
+                                           final List<String> pluginPropertiesString,
+                                           final String createdBy,
+                                           final String reason,
+                                           final String comment,
+                                           final UriInfo uriInfo,
+                                           final HttpServletRequest request) throws PaymentApiException, AccountApiException {
 
         verifyNonNullOrEmpty(json, "PaymentTransactionJson body should be specified");
         verifyNonNullOrEmpty(json.getAmount(), "PaymentTransactionJson amount needs to be set");
@@ -377,7 +377,6 @@ public class PaymentResource extends JaxRsResourceBase {
     @ApiOperation(value = "Void an existing payment")
     @ApiResponses(value = {@ApiResponse(code = 404, message = "Account or payment not found")})
     public Response voidPaymentByExternalKey(final PaymentTransactionJson json,
-                                             @PathParam("paymentId") final String paymentIdStr,
                                              @QueryParam(QUERY_PLUGIN_PROPERTY) final List<String> pluginPropertiesString,
                                              @HeaderParam(HDR_CREATED_BY) final String createdBy,
                                              @HeaderParam(HDR_REASON) final String reason,
@@ -388,7 +387,7 @@ public class PaymentResource extends JaxRsResourceBase {
     }
 
     private Response voidPaymentInternal(final PaymentTransactionJson json,
-                                         final String paymentIdStr,
+                                         @Nullable final String paymentIdStr,
                                          final List<String> pluginPropertiesString,
                                          final String createdBy,
                                          final String reason,
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
index e4fd045..aac1839 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPayment.java
@@ -73,11 +73,20 @@ public class TestPayment extends TestJaxrsBase {
 
         final Payment payment = killBillClient.createPayment(comboPaymentTransaction, ImmutableMap.<String, String>of(), createdBy, reason, comment);
         verifyComboPayment(payment, paymentExternalKey,
-                      BigDecimal.TEN, BigDecimal.ZERO, BigDecimal.ZERO, 1, 1);
+                           BigDecimal.TEN, BigDecimal.ZERO, BigDecimal.ZERO, 1, 1);
+
+
+        // Void payment using externalKey
+        final String voidTransactionExternalKey = UUID.randomUUID().toString();
+        final Payment voidPayment = killBillClient.voidPayment(null, paymentExternalKey, voidTransactionExternalKey, ImmutableMap.<String, String>of(), createdBy, reason, comment);
+        verifyPaymentTransaction(voidPayment.getPaymentId(), voidPayment.getTransactions().get(1),
+                                 paymentExternalKey, voidTransactionExternalKey,
+                                 accountJson, null, "VOID");
+
 
     }
 
-    public void testCreateRetrievePayment(final Account account, @Nullable final UUID paymentMethodId,
+    private void testCreateRetrievePayment(final Account account, @Nullable final UUID paymentMethodId,
                                           final String PaymentExternalKey, final int PaymentNb) throws Exception {
         // Authorization
         final String authTransactionExternalKey = UUID.randomUUID().toString();
@@ -99,6 +108,7 @@ public class TestPayment extends TestJaxrsBase {
         captureTransaction.setCurrency(account.getCurrency());
         captureTransaction.setPaymentExternalKey(PaymentExternalKey);
         captureTransaction.setTransactionExternalKey(capture1TransactionExternalKey);
+        // captureAuthorization is using paymentId
         final Payment capturedPayment1 = killBillClient.captureAuthorization(captureTransaction, createdBy, reason, comment);
         verifyPayment(account, paymentMethodId, capturedPayment1, PaymentExternalKey, authTransactionExternalKey,
                       BigDecimal.TEN, BigDecimal.ONE, BigDecimal.ZERO, 2, PaymentNb);
@@ -109,6 +119,8 @@ public class TestPayment extends TestJaxrsBase {
         // Capture 2
         final String capture2TransactionExternalKey = UUID.randomUUID().toString();
         captureTransaction.setTransactionExternalKey(capture2TransactionExternalKey);
+        // captureAuthorization is using externalKey
+        captureTransaction.setPaymentId(null);
         final Payment capturedPayment2 = killBillClient.captureAuthorization(captureTransaction, createdBy, reason, comment);
         verifyPayment(account, paymentMethodId, capturedPayment2, PaymentExternalKey, authTransactionExternalKey,
                       BigDecimal.TEN, new BigDecimal("2"), BigDecimal.ZERO, 3, PaymentNb);