Generic Client Plugin

92 views
Skip to first unread message

Mahmmoud Rashed

unread,
Sep 27, 2023, 6:34:20 AM9/27/23
to Kill Bill users mailing-list
I am still new to Kill Bill, and studying its architecture. 
I realised that there are demo clients for each payment plugin adapter that is implemented.
So, are we obliged to develop a client connector for each payment plugin adapter we use? 
Or is there a generic adapter with which I only integrate my app once and can utilize any new adapter added to KillBill? 

Same as the below image.

KillBill Generic Adapter.png

karan bansal

unread,
Sep 28, 2023, 8:48:19 AM9/28/23
to Kill Bill users mailing-list
Hi Mahmmoud,

I am a bit unclear about your requirement. Each gateway that you wish to integrate with Kill Bill will need a separate plugin. The plugins available on Github, for example, https://github.com/killbill/killbill-stripe-plugin are not Demo plugins as such. They are already being used in Production environment. 

Regards
Karan

Mahmmoud Rashed

unread,
Sep 28, 2023, 10:14:11 AM9/28/23
to Kill Bill users mailing-list
Hello Karan,
     Thank you for getting back to me.

I understand that each payment gateway will need a separate plugin, but I am addressing the integration with this plugin. 

For example: 
The demo "https://github.com/killbill/killbill-adyen-demo" is used to integrate with the Adyen plugin.
The demo "https://github.com/killbill/killbill-stripe-demo" is used to integrate with the Stripe plugin.

But what if I want to integrate with any payment plugin that is available on my Kill Bill system? In my client application, I can choose the plugin I want to integrate. 

It is like using the Adapter Design pattern. We can use a Generic Plugin interface in Killbill to integrate with any adapter implemented.

I don't know if KillBill APIs or libraries provide such integration capabilities.
===================================================================
===================================================================
Let us take the code above as an example:

Using "Adyen Demo"
Class ClientService
Line 120: pm.setPluginName(pluginName);

Can I only change the plugin name to Stripe, and will the payment work using the Stripe plugin?

==================================================================
On the other hand:

Using "Stripe Demo"
File " app.rb"
Line 38: pm.plugin_name = 'killbill-stripe'

Can I only change the plugin name to Adyen, and will the payment work using the Adyen plugin?

In this way, the demos implemented can use any payment plugin available on KillBill.

karan bansal

unread,
Sep 28, 2023, 11:58:56 AM9/28/23
to Kill Bill users mailing-list
Hi Mahmmoud,

Each plugin has some plugin specific code, so a simple name change as in the above example will not work. Having that said, I am still not clear about the complete requirement. Are you looking for a common UI for all the plugins?  It would also be helpful to understand the specific need for it. 

Regards
Karan

Mahmmoud Rashed

unread,
Sep 29, 2023, 9:31:49 AM9/29/23
to Kill Bill users mailing-list
Hello Karan,
     Yeah, what I'm looking at is a common UI for all Plugins.

This will help integrators to avoid having updates or redevelopment every time we add a payment plugin to Kill Bill.

Let us assume I have software that will integrate with Killbill for the full payment process. 
Clients using this software are from all over the world with 100s of different payment processors; it is not realistic to add a plugin on both sides each time.

Something like "omnipay"

1- one API and use it in multiple projects using different payment gateways
2- if you need to change payment gateways, you won’t need to rewrite your code

I do understand that each plugin has specific code but if KillBill offers a single UI generic for all plugins, then client system integrators can utilize it instead.

Mahmmoud Rashed

unread,
Oct 5, 2023, 8:48:21 AM10/5/23
to Kill Bill users mailing-list
I have checked and analyzed both Client Demo Codes, and they use the same methods and functions. I will do testing on a Generic Application Interface as both client demos implement same functions, and the backend plugin module is the one that should be doing all the business.
Reply all
Reply to author
Forward
0 new messages