If you are a PHP developer, you might be able to extend or integrate other components with nBill by adding custom code to various nBill events, by updating nBill's database tables directly, and by calling nBill's built-in functions.

Note: When writing PHP code, make sure you write secure code that will not allow SQL injection, directory traversal, or cross-site scripting hacks. For tips on security, see the following page: https://docs.joomla.org/Securing_Joomla_extensions.

Typically, integration involves either getting data from another component into nBill's tables, or moving data from nBill's tables out into another component. It may also involving handing control over from one component to the other, and possibly back again.

To move data into nBill's tables, requires that you update the nBill database tables directly.

Getting data out of nBill's tables typically needs to be done only when a certain event occurs. For example, when a user record is created, you might want to copy data from a client record into a Community Builder profile. Again, you can read data from the nBill database tables directly, but to execute your code when a particular event occurs, there are 2 possibilities:

1) Form events: Each order form allows you to enter PHP code which is executed when an event happens on that form. See the order form advanced tab topic for more information.

2) General events: You can add a PHP file to an event folder, which will be executed when the relevant event occurs. See the events topic for more information.

nBill does not currently provide any way of allowing you to hand over control to nBill (for example, for taking payment), and then having nBill hand control back to your component. However, nBill will hand over control to a payment gateway, and take control back again via a callback, so this might be of some limited use for integration purposes. There is an article on the nBill website which gives instructions on developing payment gateways.

Another possible way of providing integration is through a script that runs as a scheduled task (eg. a CRON job). See the separate help topic about the recommended way of implementing your own scheduled script.