diff --git a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
index 35ee189..630681e 100644
--- a/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
+++ b/beatrix/src/test/java/org/killbill/billing/beatrix/integration/TestIntegrationBase.java
@@ -294,7 +294,7 @@ public class TestIntegrationBase extends BeatrixTestSuiteWithEmbeddedDB {
try {
invoiceUserApi.triggerInvoiceGeneration(account.getId(), clock.getUTCToday(), false, callContext);
fail("Should not have generated an extra invoice");
- } catch (InvoiceApiException e) {
+ } catch (final InvoiceApiException e) {
assertEquals(e.getCode(), ErrorCode.INVOICE_NOTHING_TO_DO.getCode());
}
}
diff --git a/payment/src/main/java/org/killbill/billing/payment/control/dao/InvoicePaymentControlDao.java b/payment/src/main/java/org/killbill/billing/payment/control/dao/InvoicePaymentControlDao.java
index b267dbf..63db20b 100644
--- a/payment/src/main/java/org/killbill/billing/payment/control/dao/InvoicePaymentControlDao.java
+++ b/payment/src/main/java/org/killbill/billing/payment/control/dao/InvoicePaymentControlDao.java
@@ -79,7 +79,7 @@ public class InvoicePaymentControlDao {
(String) row.get("transaction_external_key"),
UUID.fromString((String) row.get("account_id")),
(String) row.get("plugin_name"),
- UUID.fromString((String) row.get("payment_id")),
+ row.get("payment_id") != null ? UUID.fromString((String) row.get("payment_method_id")) : null,
UUID.fromString((String) row.get("payment_method_id")),
(BigDecimal) row.get("amount"),
Currency.valueOf((String) row.get("currency")),
diff --git a/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java b/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
index 35324ce..cc82454 100644
--- a/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
+++ b/payment/src/main/java/org/killbill/billing/payment/core/DirectPaymentProcessor.java
@@ -180,8 +180,9 @@ public class DirectPaymentProcessor extends ProcessorBase {
properties,
callContext,
internalCallContext);
-
- return getPayment(nonNullDirectPaymentId, true, properties, callContext, internalCallContext);
+ final DirectPayment directPayment = getPayment(nonNullDirectPaymentId, true, properties, callContext, internalCallContext);
+ postPaymentEvent(account, directPayment, directPaymentTransactionExternalKey, internalCallContext);
+ return directPayment;
}
public DirectPayment createRefund(final Account account, final UUID directPaymentId, final BigDecimal amount, final Currency currency,
@@ -260,14 +261,14 @@ public class DirectPaymentProcessor extends ProcessorBase {
Preconditions.checkState(transactionModelDao != null);
final DateTime utcNow = clock.getUTCNow();
- final PaymentTransactionModelDao chargebackTransaction = new PaymentTransactionModelDao(utcNow, utcNow, chargebackTransactionExternalKey, transactionModelDao.getId(),
+ final PaymentTransactionModelDao chargebackTransaction = new PaymentTransactionModelDao(utcNow, utcNow, chargebackTransactionExternalKey, transactionModelDao.getPaymentId(),
TransactionType.CHARGEBACK, utcNow, TransactionStatus.SUCCESS, amount, currency, null, null);
final State currentPaymentState = directPaymentAutomatonRunner.fetchNextState("CHARGEBACK_INIT", true);
// TODO STEPH we could create a DAO operation to do both steps at once
- paymentDao.updateDirectPaymentWithNewTransaction(transactionModelDao.getId(), chargebackTransaction, internalCallContext);
- paymentDao.updateDirectPaymentAndTransactionOnCompletion(transactionModelDao.getId(), currentPaymentState.getName(), chargebackTransaction.getId(), TransactionStatus.SUCCESS,
+ paymentDao.updateDirectPaymentWithNewTransaction(transactionModelDao.getPaymentId(), chargebackTransaction, internalCallContext);
+ paymentDao.updateDirectPaymentAndTransactionOnCompletion(transactionModelDao.getPaymentId(), currentPaymentState.getName(), chargebackTransaction.getId(), TransactionStatus.SUCCESS,
chargebackTransaction.getAmount(), chargebackTransaction.getCurrency(),
chargebackTransaction.getGatewayErrorCode(), chargebackTransaction.getGatewayErrorMsg(), internalCallContext);
diff --git a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApi.java b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApi.java
index a373c8e..5027058 100644
--- a/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApi.java
+++ b/payment/src/test/java/org/killbill/billing/payment/api/TestPaymentApi.java
@@ -435,12 +435,11 @@ public class TestPaymentApi extends PaymentTestSuiteWithEmbeddedDB {
final String paymentExternalKey = "couic";
final String transactionExternalKey = "couac";
final String transactionExternalKey2 = "couyc";
- final UUID transactionId = UUID.randomUUID();
final DirectPayment payment = paymentApi.createPurchase(account, account.getPaymentMethodId(), null, requestedAmount, Currency.AED, paymentExternalKey, transactionExternalKey,
ImmutableList.<PluginProperty>of(), callContext);
- paymentApi.notifyPendingTransactionOfStateChanged(account, transactionId, false, callContext);
+ paymentApi.notifyChargeback(account, payment.getTransactions().get(0).getId(), transactionExternalKey2, requestedAmount, Currency.AED, callContext);
final DirectPayment payment2 = paymentApi.getPayment(payment.getId(), false, ImmutableList.<PluginProperty>of(), callContext);