From cfa9259c1bfdfe1eb77477b7679ca3bde2e1b348 Mon Sep 17 00:00:00 2001 From: Jonathan Cobb Date: Wed, 15 Jan 2020 01:01:58 -0500 Subject: [PATCH] do not issue refunds for non-refundable payment types --- .../src/main/java/bubble/model/bill/PaymentMethodType.java | 2 ++ .../main/java/bubble/service/bill/StandardRefundService.java | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/bubble-server/src/main/java/bubble/model/bill/PaymentMethodType.java b/bubble-server/src/main/java/bubble/model/bill/PaymentMethodType.java index f119cde7..d3a440d9 100644 --- a/bubble-server/src/main/java/bubble/model/bill/PaymentMethodType.java +++ b/bubble-server/src/main/java/bubble/model/bill/PaymentMethodType.java @@ -13,4 +13,6 @@ public enum PaymentMethodType { @JsonCreator public static PaymentMethodType fromString(String v) { return enumFromString(PaymentMethodType.class, v); } + public boolean refundable() { return this == credit; } + } diff --git a/bubble-server/src/main/java/bubble/service/bill/StandardRefundService.java b/bubble-server/src/main/java/bubble/service/bill/StandardRefundService.java index 4a869ce4..b217c035 100644 --- a/bubble-server/src/main/java/bubble/service/bill/StandardRefundService.java +++ b/bubble-server/src/main/java/bubble/service/bill/StandardRefundService.java @@ -40,6 +40,10 @@ public class StandardRefundService extends SimpleDaemon implements RefundService for (AccountPlan accountPlan : pendingPlans) { try { final AccountPaymentMethod paymentMethod = paymentMethodDAO.findByUuid(accountPlan.getPaymentMethod()); + if (!paymentMethod.getPaymentMethodType().refundable()) { + log.info("process: not issuing refund for plan "+accountPlan.getUuid()+" because paymentMethodType="+paymentMethod.getPaymentMethodType()); + continue; + } final CloudService paymentCloud = cloudDAO.findByUuid(paymentMethod.getCloud()); final PaymentServiceDriver paymentDriver = paymentCloud.getPaymentDriver(configuration); paymentDriver.refund(accountPlan.getUuid());