Almost all open source or 3rd party software has one big flaw. It doesn’t integrate well. Like the time you downloaded that class to add Paypal functionality but then spent a day setting up and testing the callback urls and trying to figure out how to deal with e-checks.
Trying to connect two groups of functionality from different developers is hazardous and time consuming. Often times we revert to writing our own code from scratch because the cost of integration is to high.
When you start connecting all these different open source pieces your software immediately becomes fragmented and difficult to debug. You end up spending too much time frustrated and not enough time developing awesome products.
Many 3rd party classes or software pieces are loaded with bugs that we don't know about. These bugs come out into our applications and we lose sleep rewriting the code we're trying to implement.
One of the most dangerous issues developers face in pulling in 3rd party functionality into a web application is the security risk. There is no way to be sure the code you're using is secure. Quality control is almost non-existent in code sharing, even when you're paying for it.
In addition to the problems above, there are issues with code licensing, updating, contributing, and extending. So. What do we do to change all this?
E3 packages functionality into bundles. A bundle is merely a wrapper for your code, a predefined structure to drop your code into so that it will easily integrate with other code. This means you don't have to rewrite your code!
Few things feel quite as good as dropping in a bundle of code and seeing it work perfectly with all the other functionality you have.
E3 takes this seriously. Every bundle is designed to never conflict with any other code, and to integrate itself with your application effortlessly.
Paypal IPN
Paypal has a callback system that sends important data to your application to confirm payment. This callback system has hundreds of options and details that take quite a while to fully understand. You shouldn't have to figure out how to get this information back into your application. All you should have to do is add the bundle, and work with the bundle results.
Bundles can easily add URLs to the routing system. Therefore the paypal
bundle you've installed already has a special callback url designated /--paypal/ipn
Using events, when Paypal send the IPN response, the paypal
bundle emits an event called paypalResponse
. You can handle this event by merely adding the method _on_paypalResponse($data){}
to a controller or bundle you're writing. You could then, for example, send out an email to your client confirming payment has been received.
Let's say you were writing an online_store
bundle to sell or share with other developers and you wanted to build in paypal
functionality. All you would need to do is handle the paypalResponse
event in your bundle and you're ready to offer a fully integrated piece of functionality to the world.
The best way to make sure you're writing great code is to share or sell each piece of functionality you create, independently of the product you're developing.
David Boskovic, Lead Engineer
Always look for and accept criticism. It will help you grow, and become better at what you do.
Kelly Becker, E3 Team Member