I have a subscription based website that interacts with a 3rd party system to handle the payments. The steps to process a new subscriber registration are as follow:
- The subscriber enters his/her details in the subscription form and click on the submit button.
- Assuming the details specified are valid, a new record is created in the database to store these details.
- The subscriber is then redirected to the website of the 3rd party system (similar to paypal) to process the payment.
- Once the payment is succesful, the 3rd party website then redirect the subscriber back to our website.
- At this time, I know that the payment was succesful, so the record in the database is updated to indicate that payment has been made successfully.
A problem that I have found occurring quite often is that if a subscriber pays but does not complete the process correctly (e.g. uses the back browser, closes the window), his/her record in the database doesn't get updated about this. Accordingly, I don't know if s/he has paid by just looking the record and need to wait for the report from the 3rd party system to find this out.
How do you solve this problem?
PS. One of the main reasons to store their details into the database before the payment process is done is so they can come back to complete the payment without re-entering their details again. For example, when their credit cards were rejected by the 3rd party system and they need to sort this out with their financial institution which may take a while.