Sto lavorando a un sito web di elaborazione dei pagamenti che funzionerà come PayPal su molti siti di e-commerce. L'idea è che il cliente riempia il suo carrello della spesa e faccia clic su checkout, quindi venga indirizzato alla pagina di pagamento su un sito sicuro. Dopo che la pagina di pagamento ha elaborato il pagamento, indirizza il cliente al sito web originale. Finora, penso di essere a posto fino al punto di ricevere il pagamento, ma quale meccanismo utilizzano siti come PayPal per consentire al sito web originale di verificare se il pagamento è stato ricevuto con successo?
Il mio processo attuale:
- Cassa del clic del cliente
- Archivia gli articoli del carrello come ordine in sospeso nel database
- Pubblica ID commerciante, importo del pagamento, l'URL di reso, ecc. per garantire la pagina di pagamento. Questo utilizza SSL e ho anche pubblicato un hash degli altri valori pubblicati per assicurarmi che non vengano manomessi durante il transito.
- Il cliente inserisce le informazioni sulla carta e fa clic su "Paga"
- Il sito sicuro reindirizza all'URL di ritorno specificato con una stringa di query delle informazioni di transazione pertinenti, compreso un flag che indica il successo o l'insuccesso.
Per l'ultimo passaggio, il sito originale deve essere sicuro che la richiesta provenga dal sito di pagamento in modo che un utente non possa semplicemente accedere a quell'URL, fornendo loro stessi la stringa di query, per completare un ordine. Attualmente ho lo stesso meccanismo di hashing in atto per assicurarmi che le variabili della stringa di query non vengano manomesse. È molto rozzo Appendo le variabili in una stringa lunga e poi aggiungo una chiave segreta condivisa fino alla fine, cancellando l'intera stringa, inviandola. Il destinatario riceve la stessa cosa e confronta gli hash.