Search in sources :

Example 1 with OnSuccessPaymentControlResult

use of org.killbill.billing.control.plugin.api.OnSuccessPaymentControlResult in project killbill by killbill.

the class OperationControlCallback method executePluginOnSuccessCalls.

protected void executePluginOnSuccessCalls(final List<String> paymentControlPluginNames, final PaymentControlContext paymentControlContext) {
    // Values that were obtained/changed after the payment call was made (paymentId, processedAmount, processedCurrency,... needs to be extracted from the paymentControlContext)
    // paymentId, paymentExternalKey, transactionAmount, transaction currency are extracted from  paymentControlContext which was update from the operation result.
    final OnSuccessPaymentControlResult result = controlPluginRunner.executePluginOnSuccessCalls(paymentStateContext.getAccount(), paymentStateContext.getPaymentMethodId(), paymentStateControlContext.getAttemptId(), paymentControlContext.getPaymentId(), paymentControlContext.getPaymentExternalKey(), paymentControlContext.getTransactionId(), paymentStateContext.getPaymentTransactionExternalKey(), PaymentApiType.PAYMENT_TRANSACTION, paymentStateContext.getTransactionType(), null, paymentControlContext.getAmount(), paymentControlContext.getCurrency(), paymentControlContext.getProcessedAmount(), paymentControlContext.getProcessedCurrency(), paymentStateControlContext.isApiPayment(), paymentControlPluginNames, paymentStateContext.getProperties(), paymentStateContext.getCallContext());
    adjustStateContextPluginProperties(paymentStateContext, result.getAdjustedPluginProperties());
}
Also used : OnSuccessPaymentControlResult(org.killbill.billing.control.plugin.api.OnSuccessPaymentControlResult)

Example 2 with OnSuccessPaymentControlResult

use of org.killbill.billing.control.plugin.api.OnSuccessPaymentControlResult in project killbill by killbill.

the class ControlPluginRunner method executePluginOnSuccessCalls.

public OnSuccessPaymentControlResult executePluginOnSuccessCalls(final Account account, final UUID paymentMethodId, final UUID paymentAttemptId, final UUID paymentId, final String paymentExternalKey, final UUID paymentTransactionId, final String paymentTransactionExternalKey, final PaymentApiType paymentApiType, final TransactionType transactionType, final HPPType hppType, final BigDecimal amount, final Currency currency, final BigDecimal processedAmount, final Currency processedCurrency, final boolean isApiPayment, final List<String> paymentControlPluginNames, final Iterable<PluginProperty> pluginProperties, final CallContext callContext) {
    final PaymentControlContext inputPaymentControlContext = new DefaultPaymentControlContext(account, paymentMethodId, paymentAttemptId, paymentId, paymentExternalKey, paymentTransactionId, paymentTransactionExternalKey, paymentApiType, transactionType, hppType, amount, currency, processedAmount, processedCurrency, isApiPayment, callContext);
    Iterable<PluginProperty> inputPluginProperties = pluginProperties;
    for (final String pluginName : paymentControlPluginNames) {
        final PaymentControlPluginApi plugin = paymentControlPluginRegistry.getServiceForName(pluginName);
        if (plugin != null) {
            try {
                log.debug("Calling onSuccessCall of plugin {}", pluginName);
                final OnSuccessPaymentControlResult result = plugin.onSuccessCall(inputPaymentControlContext, inputPluginProperties);
                log.debug("Successful executed onSuccessCall of plugin {}", pluginName);
                if (result == null) {
                    // Nothing returned by the plugin
                    continue;
                }
                if (result.getAdjustedPluginProperties() != null) {
                    inputPluginProperties = result.getAdjustedPluginProperties();
                }
            // Exceptions from the control plugins are ignored (and logged) because the semantics on what to do are undefined.
            } catch (final PaymentControlApiException e) {
                log.warn("Error during onSuccessCall for plugin='{}', paymentExternalKey='{}'", pluginName, inputPaymentControlContext.getPaymentExternalKey(), e);
            } catch (final RuntimeException e) {
                log.warn("Error during onSuccessCall for plugin='{}', paymentExternalKey='{}'", pluginName, inputPaymentControlContext.getPaymentExternalKey(), e);
            }
        }
    }
    return new DefaultOnSuccessPaymentControlResult(inputPluginProperties);
}
Also used : PluginProperty(org.killbill.billing.payment.api.PluginProperty) DefaultOnSuccessPaymentControlResult(org.killbill.billing.payment.retry.DefaultOnSuccessPaymentControlResult) PaymentControlPluginApi(org.killbill.billing.control.plugin.api.PaymentControlPluginApi) OnSuccessPaymentControlResult(org.killbill.billing.control.plugin.api.OnSuccessPaymentControlResult) DefaultOnSuccessPaymentControlResult(org.killbill.billing.payment.retry.DefaultOnSuccessPaymentControlResult) PaymentControlContext(org.killbill.billing.control.plugin.api.PaymentControlContext) PaymentControlApiException(org.killbill.billing.control.plugin.api.PaymentControlApiException)

Aggregations

OnSuccessPaymentControlResult (org.killbill.billing.control.plugin.api.OnSuccessPaymentControlResult)2 PaymentControlApiException (org.killbill.billing.control.plugin.api.PaymentControlApiException)1 PaymentControlContext (org.killbill.billing.control.plugin.api.PaymentControlContext)1 PaymentControlPluginApi (org.killbill.billing.control.plugin.api.PaymentControlPluginApi)1 PluginProperty (org.killbill.billing.payment.api.PluginProperty)1 DefaultOnSuccessPaymentControlResult (org.killbill.billing.payment.retry.DefaultOnSuccessPaymentControlResult)1