/killbill-email-notifications-plugin

Kill Bill plugin for email notifications

Primary LanguageJavaApache License 2.0Apache-2.0

killbill-email-notifications-plugin

Maven Central

The Kill Bill email notification plugin is a plugin that can be used to send emails when certain events occur. The easiest way to get started with the email notification plugin is to take a look at our Email Notification Plugin Document which provides detailed instructions for installing, configuring and using the plugin.

Requirements

  • The plugin requires Kill Bill and Kaui installed. The Getting Started document explains how to set this up.

  • In addition, the plugin also needs a database. The latest version of the schema can be found here.

Versions

Release builds are available on Maven Central with coordinates org.kill-bill.billing.plugin.java:killbill-email-notifications-plugin.

Kill Bill compatibility

Plugin version Kill Bill version
0.1.y 0.14.z
0.2.y 0.16.z
0.3.y 0.18.z
0.4.y 0.19.z
0.5.y 0.20.z
0.6.y 0.22.z
0.7.y 0.22.z

We've upgraded numerous dependencies in 0.7.x (required for Java 11 support).

Build

The email notification plugin can be built by running the following Maven command:

mvn clean install -DskipTests=true

Installation

The email notification plugin can be installed by running the following kpm command:

kpm install_java_plugin 'email-notifications' --from-source-file=<jar_file_path> --destination=<path_to_install_plugin>

Custom InvoiceFormatter

A custom InvoiceFormatter implementation can be provided by another Java plugin, by registering a InvoiceFormatterFactory service in the OSGi runtime. This plugin will use the highest-ranking InvoiceFormatterFactory service found. If none are found then a default implementation will be used.

A custom factory can be registered in your plugin's org.osgi.framework.BundleActivator. For example:

import org.killbill.billing.osgi.libs.killbill.KillbillActivatorBase;
import org.killbill.billing.plugin.notification.api.InvoiceFormatterFactory;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceRegistration;

public class Activator extends KillbillActivatorBase {

  private MyCustomInvoiceFormatterFactory factory;
  private ServiceRegistration<InvoiceFormatterFactory> registration = null;

  @Override
  public void start(final BundleContext context) throws Exception {
    super.start(context);

    // create custom factory instance
    factory = new MyCustomInvoiceFormatterFactory();

    // register factory as OSGi service
    Hashtable<String, Object> properties = new Hashtable<>();
    registration = context.registerService(InvoiceFormatterFactory.class, factory, properties);
  }

  @Override
  public void stop(BundleContext context) throws Exception {
    super.stop(context);
    if (registration != null) {
      registration.unregister();
      registration = null;
    }
  }
}

Testing

SMTP Server

In order to test the plugin, the easiest route is to start a local SMTP server. We are typically relying on the namshi/smtp docker image:


Replace `<jar_file_path>` with the path of the email notification plugin jar file and `<path_to_install_plugin>` with the path where you want to install the plugin. This path should match the path specified by the `org.killbill.osgi.bundle.install.dir` property in the Kill Bill configuration file