diff --git a/payment/src/main/java/org/killbill/billing/payment/core/sm/PaymentOperation.java b/payment/src/main/java/org/killbill/billing/payment/core/sm/PaymentOperation.java
index 1a44ca5..daf9c67 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/sm/PaymentOperation.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/sm/PaymentOperation.java
@@ -180,7 +180,7 @@ public abstract class PaymentOperation extends OperationCallbackBase<PaymentTran
paymentStateContext.getPaymentTransactionModelDao().getProcessedCurrency(),
paymentStateContext.getPaymentTransactionModelDao().getEffectiveDate(),
paymentStateContext.getPaymentTransactionModelDao().getCreatedDate(),
- PaymentPluginStatus.PROCESSED,
+ buildPaymentPluginStatusFromOperationResult(paymentStateContext.getOverridePluginOperationResult()),
null);
paymentStateContext.setPaymentInfoPlugin(paymentInfoPlugin);
return paymentStateContext.getOverridePluginOperationResult();
@@ -190,6 +190,20 @@ public abstract class PaymentOperation extends OperationCallbackBase<PaymentTran
}
}
+ private PaymentPluginStatus buildPaymentPluginStatusFromOperationResult(final OperationResult operationResult) {
+ switch (operationResult) {
+ case PENDING:
+ return PaymentPluginStatus.PENDING;
+ case SUCCESS:
+ return PaymentPluginStatus.PROCESSED;
+ case FAILURE:
+ return PaymentPluginStatus.ERROR;
+ case EXCEPTION:
+ default:
+ return PaymentPluginStatus.UNDEFINED;
+ }
+ }
+
private OperationResult processPaymentInfoPlugin() {
if (paymentStateContext.getPaymentInfoPlugin() == null) {
return OperationResult.FAILURE;