I have been working on a shopping cart plugin for Moodle. One of the things I worked on the weekend, was the ability to re-query an incomplete transaction.
A successful transaction is when a user selects a course, pays via payment portal (like PayPal), gets redirected back to the site, and is automatically enrolled into the course they have bought.
Should the user loose connectivity with the payment portal before making payment, then they can restart the process from scratch. Since no payment was made, no money was lost.
Suppose the user makes a payment with the payment portal and connectivity is lost. They have paid for a course for which they have not been enrolled, because of the lost connectivity.
For this reason we need to provide the user with the ability to re-query any incomplete transactions.
Below are few screens showing the process in action.