1 | A customer places an order in a webshop. The payment information is sent to the Bambora payment server. An accepturl and a callbackurl are contained in the payment information. It's important that the order is stored in the database of the webshop before the order is paid. Otherwise the order information is lost in case of communication errors! |
2 | The payment is approved by Bambora, and a response to the webshop's callbackurl is created and put in queue on Bambora's server. If instantcallback is 0, this call happens asynchronously. Otherwise it happens instantly (before the customer is sent to the accepturl). |
3 | The customer is now sent to the store's accepturl and shown an order confirmation. It is no longer necessary to update the order in the system or send an order confirmation as this happens later through the callback. |
4 | Every minute the Bambora callback server sends a callback to the receivers that are on queue. Please note that it might take longer during peak traffic times. For this reason it's important that the shop doesn't expect callbacks within a certain time period or before the accepturl is called. The latter is especially noteworthy as the entire process takes place asynchronously! |
5 | Callbacks are sent to the webshop's callbackurl. The same information is sent as GET parameters to the accepturl. The information includes among other things: Order ID, timestamp, amount, currency, Fraud Fighter notifications, and MD5 security check. |
6 | If an error occurs during the callback process, the Bambora server will resend the call after an hour. Possible sources of error could be the callback server failing to access the webshop's callbackurl or an error in the shop's system (HTTP error code 404, 500, etc.). In general the callback server sees anything but HTTP code 200 as an error. HTTP code 200 means OK. |