I need some advice, as a new PHP/Zen Cart developer (but not a new developer in general). I have been asked by a client to add a checkbox which, when checked by the user, would indicate that their order should be held until all items can be shipped together. If this was going to be added to the checkout_shipping page, I don't think I'd have any issues. However, it needs to be added to the checkout_confirmation page.

The (first) problem I've run into is getting the value posted back to the server. Am I correct that the next stop after confirmation is dependent on the payment module? Is it possible that a payment module they install in the future might not even go back to their server first?

Just to see what would happen, I did the following:

  1. Update ipn_main_handler to store the value in the user's session before redirecting to PayPal.
  2. Update checkout_process to look in $_POST for the data. If it's not there, look in the user's session. If it's not their either, then it wasn't checked.

This seemed to work, but it really feels like an ugly, ugly hack. And somebody's going to have to remember to make sure any new payment modules they install are compatible. Would it be more appropriate to place this in one of the other checkout steps (e.g. shipping)?