Storia
Attualmente stiamo utilizzando un cosiddetto modello di reindirizzamento per i nostri pagamenti online (dove invii il pagatore a un gateway di pagamento, dove inserisce i suoi dettagli di pagamento - il gateway lo restituirà quindi a una pagina di callback riuscita / non riuscita). È semplice e diretto, ma sfortunatamente piuttosto scomodo e talvolta confuso per i nostri clienti (lasciando il sito, cambiando i dettagli della carta di credito con un accesso aggiuntivo su un altro sito, ecc.)
Intenzione & Descrizione del problema
Ora intendiamo passare a un approccio integrato utilizzando uno scambio di richieste e risposte XML. Il mio problema è su come gestire tutti (o meglio la maggior parte) delle cose che possono accadere durante l'elaborazione - tenendo presente che normalmente la semplicità è robusta mentre la complessità è fragile.
Esempi
- Interruzione utente: l'utente immette i dettagli della carta di credito e gli hit inviati. Un messaggio XML al gateway del provider viene inviato e in attesa di risposta. L'utente fa "stop" nel suo browser o chiude la finestra.
- ignore_user_abort () in PHP può essere un'opzione - ma è affidabile?
- potrebbe essere meglio reindirizzare l'utente a una pagina "please wait", che a sua volta apre un'AJAX o un'altra richiesta al processore vero e proprio che non si basa sulla connessione?
- Il database va via
-
i suoni
- sono troppo complicati, ma ad es. un server web negli Stati Uniti e un DB nel Regno Unito, è successo e accadrà di nuovo: l'utente fa clic sul suo ordine, la richiesta di pagamento è stata inviata al provider ma la risposta non può essere archiviata nel database. Quale approccio potrei usare, usando PHP per iniziare un SQL come "Transaction" che solo alla fine viene eseguito il commit o il rollback, a seconda dei singoli passaggi? Se poi non è stato eseguito alcun commit o rollback, potrei "bloccare" l'utente per impedirgli di pagare di nuovo o per non tenere conto correttamente dei pagamenti, ma come?
- E che altro devo considerare tecnicamente? Nessuno degli esempi di integrazione di ad es. Worldpay, Realex o SagePay offrono qualsiasi intuizione e il mio motore di ricerca oi miei termini di ricerca non sono stati sufficienti a trovare le idee di qualcun altro su questo.
Grazie mille per qualsiasi idea su come ti avvicineresti a questo!