Updated for API 1.3

No longer needs an additional database table. Uses an HMAC to verify
invoice ID sent along with the transaction. Callback does not currently
work because the API returns a “Values Do Not Match Order” error even
when the values do, in fact, match the originals. If one were to send
the same exact request a few seconds later, the IPN confirmation would
work that second time, for whatever reason.

Partial transactions are now theoretically possible but this is
untested.