Marc,
Instead of waiting to see if you lose any more orders why not quickly change your WorldPay module to test mode and put an order through yourself to see what happens and then change back to live mode. Or simply put through a low value order using your debit card. If you run the store the card payment will come to you anyway and all it will cost you is the debit card transaction fee - about 50p.
All my Zencart installations are set to store sessions in the database and I have never had a callback problem.
There is no easy solution to retrieving the order information you require. The following may help.
1. In your WorldPay control panel identify the payments you cannot match to orders.
2. Take a note of customer names and order values.
3. In ZenCart Admin >> Customers >> Customers use the search box to find each customer within ZenCart and take a note of their ID.
4. Access your store database using phpMyAdmin
5. Run the following query on your database to identify the current contents of each affected customer's shopping basket
Code:
SELECT cb.customers_id, c.customers_firstname, c.customers_lastname, ab.entry_street_address, ab.entry_suburb, ab.entry_postcode, ab.entry_city, c.customers_email_address, c.customers_telephone, p.products_id, p.products_model, cb.customers_basket_quantity, p.products_price
FROM customers_basket cb, customers c, products p, address_book ab
WHERE cb.customers_id = XXXX
AND c.customers_id = cb.customers_id
AND c.customers_default_address_id = ab.address_book_id
AND p.products_id = SUBSTRING_INDEX(cb.products_id, ':', 1)
6. Run this query for each of your affected customers replacing 'XXXX' with each customer's ID
7. Use the phpMyAdmin print view function to print the results for each customer.
With any luck when you add up the total cost of the items in each basket you should arrive at the total cost of the customer's transaction in WorldPay.
Limitations:
1. Won't be accurate if the customer has revisited the site since placing the 'lost' order and added or deleted items in their cart.
2. Doesn't provide any attribute information for products in the cart so if you have colour, size etc options on any of the products you will need to do a bit more delving within the database.
Once you have done the above you will have enough information to contact each customer by telephone, email or post to confirm their order details, delivery address etc and subsequently fulfil their order.
Every ########-up is an opportunity to sell so you might want to send each customer affected a discount voucher for use with their next order. The chances are they won't have noticed a problem before you contact them. By the time you contact them you have a solution and you only want to double check their order details, and hey they get a discount off their next order for their trouble. If that doesn't impress them - who needs them anyway!
Hope the above helps.
Alan
Bookmarks