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);