Mostly - I think...
IPN role is to validate something. ... So, a transaction.
Your main table for this part is a table called 'Transactions' - YES
The shop or whatever is preparing a transaction, using this MVC for transaction.
Then at any moment, an IPN can arrive to close the transaction and validate. How it works ? - YES
I was wondering whether a plugin might be the best way although, I guess, processing in the MVC can still be extended to incorporate other gateways in the future...
One question; Should this be a controller function or a model? You did say controller but I just wanted to check. I mean RE:
You've created a new function in the controller, for instance ipn(), and the entry point to furnish to PayPal system is the url of your component :
index.php?option=comxxxx.....view=transaction&task=ipn
So I call the IPN into action here in the controller, right? Then, I should call the checking/saving/updating scripts in my model, right?
I will be storing the transaction before calling paypal, then get the response from paypal, get, validate and cleanse all of the data and process the payment (update the payment status, txn_id etc).
Pretty sure I got the IPN sorted (in sandbox at least, with a standalone class/sub-class that does the processing/logging to a file for testing).]
Thanks so much for looking at this!!!
Gez