Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209

    paypal e blocco della disponibilità dell'oggetto

    Salve, ho realizzato un sito con sistema di pagamento online che permette l'acquisto di articoli con una disponibilità limitata degli stessi.
    Ho implementato il sistema di pagamento paypal con IPN per l'aggiornamento delle transazioni interne al sito e tutto funziona alla perfezione.
    MA
    Ho scoperto uno scenario dal quale non so come discricarmi:

    1: C'è un solo articolo disponibile
    2: l'acquirente A inizia il pagamento paypal senza concluderlo
    3: l'acquirente B che intende acquistare lo stesso oggetto, inizia il pagamento paypal senza concluderlo.
    4: a questo punto UNO dei due acquirenti completa il pagamento prima dell'altro che segue subito dopo, paypal dice che va tutto OK a entrambi e tramite l'IPN aggiorno il database così da scalare la quantità ma a questo punto, uno dei acquirenti si trova nella situazione di aver pagato una cosa che non avrà (perchè la disponibilità è esaurita).

    Chiarito lo scenario, cosa posso fare per evitare che si verifichi questa situazione?.

    1: Dovrei in qualche modo avvisare paypal che la transazione non è valida per via dell'esaurimento dell'articolo ma, a quanto ho letto in giro, non posso farlo tramite l'IPN.
    2: Potrei bloccare la disponibilità in anticipo registrando queste "opzioni" nel mio DB e facendole scadere (per esempio) dopo mezz'ora. Solo che se l'utente paga con mezz'ora di ritardo con paypal, si ritrova, anche in questo caso, ad aver pagato una cosa che potrebbe essere non più disponibile in quanto prima liberata dalla scadenza del tempo e poi acquistata da qualcun'altro.
    In questo caso potrei specificare una "data di scadenza del pagamento", trascorsa la quale, paypal non deve accettare pagamenti per quella specifica transazione.
    3: Ritornando all'ipotesi che scalo la quantità a pagamento avvenuto, mi pare che in Paypal c'è un opzione che permette al negoziante di controllare i pagamenti inviati e scegliere manualmente se accettarli o annullarli, restituendo i soldi all'acquirente.
    Sapete darmi info su questa opzione del paypal Seller?

    Infine, avete altri suggerimenti sulla questione? Come avete gestito una situazione del genere?
    La documentazione paypal non è di molto aiuto in proposito.

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    323
    Perchè invece non fai un sistema dove una volta che l'utente acquista l'oggetto gli rimane per 1 settimana (disponibilità di pagamento) e nel DB setti una quantita inferiore dell'oggetto.
    Dici "E se la persona acquista il 7° giorno? PayPal riceve lo stesso il denaro".Onde evitare questo spiaceole inconveniente fai arrivare una e-mail il giorno prima con la sollecitazione dell'acquisto dell'oggetto altrimenti verrà automaticamente detratto dal suo "carrello".In questo modo dovresti aver risolto questo problema.

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    Grazie del suggerimento ma purtroppo non posso applicare quella soluzione perchè, oltre alla disponibilità limitata in termini di quantità, c'e l'ho anche in termini di tempo.
    Per esempio gli acquirenti possono acquistare 100 articoli ma solo fino al giorno e all'ora X, oltre la quale non è più possibile acquistare quell'articolo.
    E' un pò come fossero delle aste ebay con quantità limitata, e bloccare a priori un oggetto per una settimana intera non è possibile perché è un lasso di tempo troppo grande, e siccome si prevede un grande afflusso di utenti, non posso permettermi di avere troppi prodotti bloccati contemporaneamente.

    Per ora ho fatto un passo avanti. Ho impostato il processo di pagamento in modo tale che i pagamenti devono prima essere approvati dal negoziante.
    La disponibilità dell'oggetto viene scalata a posteriori, ovvero quando il negoziante, dopo aver verificato che la disponibilità è sufficiente, approva il pagamento.
    Se il negoziante verifica che non c'è la disponibilità, annulla il pagamento e l'acquirente non ha perso nulla.
    Il problema di questo approccio è che si stimano qualcosa come 30000 utenti del sito, quindi è probabile che il numero di transazioni da controllare diventi tanto elevato da essere ingestibile.

    L'ideale sarebbe avere un sistema automatico nel quale, prima di accettare il pagamento, paypal verifica l'effettiva disponibilità dell'oggetto.
    Oppure, usando il blocco a priori con scadenza di mezz'ora, bisognerebbe indicare a paypal la data di scadenza del blocco in modo tale che rifiuti qualsiasi pagamento di quella transazione oltre questa data di scadenza.

    Non c'è proprio nessun modo per attuare una delle due soluzioni automatiche?

  4. #4
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    e fare un sistema che quando si apre l'oggetto, si acquista (nel sito) e quindi si conferma l'acquisto e si scala la disponibilità (sempre nel sito).. dopodichè dai un tempo massimo per poter effettuare il pagamento. se l'oggetto viene pagato entro tot tempo ok(la transazioen viene fatta su paypal), altrimento se il tempo limite è passato l'oggetto torna ad essere in vendita... così non devi fare nessun problema con paypal..
    perchè se è rimasto solo un oggetto, al momento della conferma dell'acquisto(sul sito), solo il primo che ha acquistato/confermato può fare il pagamento ma al secondo verrà invece segnalato che non ce più quel determinato oggetto in vendita... anche se non è ancora stato pagato, ma è in fase di pagamento...

    capito?

  5. #5
    quando l'utente inizia la procedura di pagamento (quella del tipo "ma sei sicuro che lo viuoi? sicuro sicuro? guarda che poi mio sganci i soldi eh"), allora scali la quantità nel db (se usi questo metodo) e ti apri un ordine

    poi se l'utente lo paga o meno, questo è un altro problema che esula da questo discorso. Perchè poi sta a chi gestisce il sistema "annullare" l'ordine se non pagato per X tempo e quindi ri-aumentare la disponibilità

    Se poi il cliente ci rimette su questa cosa, prevedesse un discorso di penali da applicare all'utente che avvia un pagamento e poi non paga (tipo: prelievo da carta di credito di una somma pre-indicata)

    ma tutto questo discorso dipende alla politica che il cliente vuole far applicare al sito (o te, se sei te il proprietario). Per il resto, "blocca" l'oggetto quando un utente inizia ad acquistarlo.

    Cmq, il problema si sposta a questo punto sul "blocco" dell'oggetto. Nel senso, se l'affluenza per l'acquisto di un oggetto è alta, può essere che due persone provino ad acquistare l'ultimo pezzo assieme. Lì il problema lo gestisci nel db bloccando i record in maniera che solo uno dei due possa avere l'oggetto,e non l'altro (a livello di php non avresti mai tale sicurezza). Quindi attento anche a quello che fai nel db
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Originariamente inviato da Walessio
    Il problema di questo approccio è che si stimano qualcosa come 30000 utenti del sito, quindi è probabile che il numero di transazioni da controllare diventi tanto elevato da essere ingestibile.
    Stai riprogettando ebay?
    Ciao!

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    209
    @torrone:

    immagina questo scenario:
    -L'utente è nel sito e decide di comprare l'oggetto.
    -L'oggetto viene bloccato per fino all'istante X e la quantità disponibile scala di 1.
    -L'utente viene mandato a pagare su paypal.
    -L'utente non effettua il login su paypal ed aspetta oltre lo scadere X.
    -Nel sito scatta il meccanismo automatico che fa scadere il blocco sull'oggetto.
    -Nel sito arriva un'altro utente, che completa l'acquisto e quindi l'oggetto è esaurito.
    -L'utente che era rimasto fermo sulla pagina di login di Paypal, effettua il login e completa il pagamento e Paypal glielo lascia fare perchè Paypal non può accorgersi del fatto che l'oggetto è esaurito.

    Risultato: due utenti hanno pagato ma solo uno avrà l'oggetto comprato.

    Una possibile soluzione me l'ha suggerita santino.
    La scadenza non è automatica, ma è gestita manualmente da un amministratore del sito.
    Le scadenze rimaste in sospeso generano dei solleciti per l'utente inadempiente e avvisi dell'inadempienza all'amministratore.

    @fmortara.
    Spiritoso.
    Però mi hai fatto pensare che Ebay si tutela con un contratto che obbliga l'acquirente a prendersi l'impegno di pagare ciò che ha acquistato.

  8. #8
    Be tu non sei ebay, come pensi di far rispettare l'impegno a pagare se uno ci ripensa? Oltretutto poi ci sarebbe il diritto di recesso di mezzo...

    Io mi riferivo ai 30.000 utenti previsti...

    Io comunque farei scadere il periodo dopo un certo tempo, avvisando l'utente che in caso di mancato pagamento dell'ordine questo viene annullato dopo TOT....
    Io farei scadere l'ordine non pagato dopo 12/24 ore. E' impensabile che uno sia stato tutto questo tempo sulla home di paypal.

    Se invece si tratta di offerte a scadenza, il pagamento dovrebbe essere immediato. 5/10 minuti.
    Ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.