The 2Checkout transaction fees are not taken from the sale until it deposits (settles). When selling intangible products or using the third party cart parameter set, the sale will not deposit for at least 24 hours. If you are selling tangible products with the Pass Through Product parameters or Plug and Play parameters, the sale will not deposit until you mark it as shipped.
The buyer's 2Checkout purchase session will expire after 60 minutes. So you could pass in your custom cart identifier using 2Checkout's merchant_order_id
parameter, release the booking after any time interval you choose and if the buyer completes the sale after the booking has been released, decide whether or not you want to refund using the refund_invoice API call based on the cart identifier passed back from 2Checkout with the merchant_order_id
parameter.
As far as handling the passback, you can either use the initial passback to your approved URL that occurs when the sale is completed, or you can use the 2Checkout Instant Notification Service Order Created message. If you use the ORDER_CREATED message from the INS, the value you pass in with the merchant_order_id
will be passed back using the vendor_order_id
parameter on all INS messages pertaining to the sale.
Let me know if you would like some help implementing this.