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 8fc205b..db69645 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
@@ -422,7 +422,10 @@ public class PaymentResource extends ComboPaymentResource {
verifyNonNullOrEmpty(json, "PaymentTransactionJson body should be specified");
verifyNonNullOrEmpty(json.getAmount(), "PaymentTransactionJson amount needs to be set");
- final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
+ final Iterable<PluginProperty> pluginPropertiesFromBody = extractPluginProperties(json.getProperties());
+ final Iterable<PluginProperty> pluginPropertiesFromQuery = extractPluginProperties(pluginPropertiesString);
+ final Iterable<PluginProperty> pluginProperties = Iterables.concat(pluginPropertiesFromQuery, pluginPropertiesFromBody);
+
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
final Payment initialPayment = getPaymentByIdOrKey(paymentIdStr, json.getPaymentExternalKey(), pluginProperties, callContext);
@@ -500,7 +503,10 @@ public class PaymentResource extends ComboPaymentResource {
verifyNonNullOrEmpty(json, "PaymentTransactionJson body should be specified");
verifyNonNullOrEmpty(json.getAmount(), "PaymentTransactionJson amount needs to be set");
- final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
+ final Iterable<PluginProperty> pluginPropertiesFromBody = extractPluginProperties(json.getProperties());
+ final Iterable<PluginProperty> pluginPropertiesFromQuery = extractPluginProperties(pluginPropertiesString);
+ final Iterable<PluginProperty> pluginProperties = Iterables.concat(pluginPropertiesFromQuery, pluginPropertiesFromBody);
+
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
final Payment initialPayment = getPaymentByIdOrKey(paymentIdStr, json.getPaymentExternalKey(), pluginProperties, callContext);
@@ -573,7 +579,11 @@ public class PaymentResource extends ComboPaymentResource {
final String comment,
final UriInfo uriInfo,
final HttpServletRequest request) throws PaymentApiException, AccountApiException {
- final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
+
+ final Iterable<PluginProperty> pluginPropertiesFromBody = extractPluginProperties(json != null ? json.getProperties() : null);
+ final Iterable<PluginProperty> pluginPropertiesFromQuery = extractPluginProperties(pluginPropertiesString);
+ final Iterable<PluginProperty> pluginProperties = Iterables.concat(pluginPropertiesFromQuery, pluginPropertiesFromBody);
+
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
final Payment initialPayment = getPaymentByIdOrKey(paymentIdStr, json.getPaymentExternalKey(), pluginProperties, callContext);
@@ -649,7 +659,10 @@ public class PaymentResource extends ComboPaymentResource {
verifyNonNullOrEmpty(json, "PaymentTransactionJson body should be specified");
verifyNonNullOrEmpty(json.getAmount(), "PaymentTransactionJson amount needs to be set");
- final Iterable<PluginProperty> pluginProperties = extractPluginProperties(pluginPropertiesString);
+ final Iterable<PluginProperty> pluginPropertiesFromBody = extractPluginProperties(json.getProperties());
+ final Iterable<PluginProperty> pluginPropertiesFromQuery = extractPluginProperties(pluginPropertiesString);
+ final Iterable<PluginProperty> pluginProperties = Iterables.concat(pluginPropertiesFromQuery, pluginPropertiesFromBody);
+
final CallContext callContext = context.createContext(createdBy, reason, comment, request);
final Payment initialPayment = getPaymentByIdOrKey(paymentIdStr, json.getPaymentExternalKey(), pluginProperties, callContext);
diff --git a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentPluginProperties.java b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentPluginProperties.java
index f31858f..3d87984 100644
--- a/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentPluginProperties.java
+++ b/profiles/killbill/src/test/java/org/killbill/billing/jaxrs/TestPaymentPluginProperties.java
@@ -103,7 +103,7 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
for (org.killbill.billing.payment.api.PluginProperty input : properties) {
boolean found = false;
for (org.killbill.billing.payment.api.PluginProperty expect : expectedProperties) {
- if (expect.getKey().equals(input.getKey()) && expect.getValue().equals(expect.getValue())) {
+ if (expect.getKey().equals(input.getKey()) && expect.getValue().equals(input.getValue())) {
found = true;
break;
}
@@ -111,10 +111,10 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
Assert.assertTrue(found);
}
- for (org.killbill.billing.payment.api.PluginProperty expect : properties) {
+ for (org.killbill.billing.payment.api.PluginProperty expect : expectedProperties) {
boolean found = false;
- for (org.killbill.billing.payment.api.PluginProperty input : expectedProperties) {
- if (expect.getKey().equals(input.getKey()) && expect.getValue().equals(expect.getValue())) {
+ for (org.killbill.billing.payment.api.PluginProperty input : properties) {
+ if (expect.getKey().equals(input.getKey()) && expect.getValue().equals(input.getValue())) {
found = true;
break;
}
@@ -227,9 +227,25 @@ public class TestPaymentPluginProperties extends TestJaxrsBase {
params.putAll(KillBillHttpClient.CONTROL_PLUGIN_NAME, ImmutableList.<String>of(PluginPropertiesVerificator.PLUGIN_NAME));
final RequestOptions requestOptionsWithParams = basicRequestOptions.extend()
- .withQueryParams(params).build();
+ .withQueryParams(params).build();
killBillClient.completePayment(completeTransactionByPaymentId, queryProperties, requestOptionsWithParams);
+
+ //Capture the payment
+ final PaymentTransaction captureTransaction = new PaymentTransaction();
+ captureTransaction.setPaymentId(initialPayment.getPaymentId());
+ captureTransaction.setProperties(bodyProperties);
+ captureTransaction.setAmount(BigDecimal.TEN);
+ captureTransaction.setCurrency(account.getCurrency());
+ killBillClient.captureAuthorization(captureTransaction, ImmutableList.<String>of(PluginPropertiesVerificator.PLUGIN_NAME), queryProperties, requestOptions);
+
+ //Refund the payment
+ final PaymentTransaction refundTransaction = new PaymentTransaction();
+ refundTransaction.setPaymentId(initialPayment.getPaymentId());
+ refundTransaction.setProperties(bodyProperties);
+ refundTransaction.setAmount(BigDecimal.TEN);
+ refundTransaction.setCurrency(account.getCurrency());
+ killBillClient.refundPayment(refundTransaction, ImmutableList.<String>of(PluginPropertiesVerificator.PLUGIN_NAME), queryProperties, requestOptions);
}
private Payment createVerifyTransaction(final Account account,