2012-05-05 22 views
19

Im integrazione di Paypal Adaptive Payment API per un sito Web mobile. Ma quando Im presentazione del pagamento perPaypal Pagamento adattativo per web mobile

https://www.paypal.com/webscr?cmd=_ap-payment&paykey=value

(Per Sandbox: https://www.sandbox.paypal.com/cgi-bin/webscr)

sua sempre reindirizzamento a Paypal Web principale. Non al sito web di Paypal Mobile. Come reindirizzare il client sul web mobile paypal?

+1

Ulteriori informazioni sull'esperienza mini browser (expType = mini) sono disponibili qui: [Pagamenti adattivi senza casella modale o popup?] (Http://stackoverflow.com/questions/17283272/adaptive-payments-without-modal -box-or-popups/17729106) – James

risposta

6

Prova reindirizzare il vostro sito per

https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?paykey=AP-XYZ&expType=mini

Riempite la vostra chiave di paga al posto di AP-XYZ

Fatemi sapere se funziona.

+0

ha funzionato come un fascino. Grazie! –

+0

Il bit di pagamento funziona, ma sfortunatamente alla fine delle schermate di PayPal non c'è il pulsante "Ritorna", solo un pulsante "Chiudi" che chiude la scheda del browser. Questo quindi non supporta il ritorno del cliente al sito originale dove potrebbe esserci il codice di monitoraggio delle vendite. Ho anche notato che sui pagamenti mobili la notifica di pagamento può richiedere ore. In realtà non supportano i pagamenti adattivi sul Web mobile. – Jordan

+0

non dovresti includere qualche javascript per far funzionare il flusso? Questo è quello che suggeriscono nei documenti ufficiali (anche se l'affidabilità dei documenti paypal è piuttosto bassa) – splinter123

0

proprio così: l'interfaccia utente di Adaptive Payments non è ottimizzata per dispositivi mobili. Ma il più vicino a ciò che offre è ciò che chiamiamo l'esperienza MiniBrowser. Puoi provare e vedere se questo serve ai tuoi bisogni. È possibile trovare il how-to guida qui su X.com: Implementing the Mini-Browser Option

+3

il link sopra per x.com è rotto –

5

L'approccio migliore che ho trovato era l'esperienza mini browser. Ma ho avuto una serie di problemi diversi sui dispositivi mobili che l'hanno implementato (che è ciò per cui era stato concepito in primo luogo). Vedrai molte domande simili sui pagamenti adattivi e tutti i tipi di problemi con l'utilizzo di lightbox e mini browser.

Ma FINALMENTE ... l'ho capito dopo ore e ore, giorni e giorni! Questo dovrebbe risolvere i problemi di tutti di tutte le varietà diverse quando si tratta di problemi con PayPal Adaptive Payments e i problemi con:

  1. L'impostazione predefinita reindirizzato pagina Paypal non è mobile reattivo e sembra orribile su dispositivi mobili.
  2. Il lightbox viene "riagganciato" e non si chiude su alcuni dispositivi mobili.
  3. Il mini browser non si chiude dopo aver completato il pagamento o l'annullamento.
  4. Il mini browser non reindirizza alla funzione callBack dallo script apdg.js di paypal.
  5. Non reindirizzamento a ReturnURL e CancelURL dopo il completamento di pagamento (o quando si annulla)
  6. Chrome per iOS (iPhone) non dia origine alla callbackFunction e quindi dopo il completamento di pagamento o la cancellazione, semplicemente ti tiene alla pagina che ha lanciato la pagina di pagamento paypal da cui impedisce di convalidare il successo o il fallimento del pagamento.

Rullo di tamburi prego .... eccolo !! Questo sostituisce qualsiasi necessità per i file javascript di PayPal, ecc. Tutto ciò di cui hai bisogno è ciò che è in basso, insieme al tuo metodo personale per ottenere il PayKey da aggiungere all'URL di reindirizzamento. Il mio sito web dal vivo, con pagamenti adattivi che funzionano correttamente utilizzando il codice sottostante, è https://www.trackabill.com.

<div> 
    <?php $payUrl = 'https://www.paypal.com/webapps/adaptivepayment/flow/pay?expType=mini&paykey=' . $payKey ?> 

    <button onclick="loadPayPalPage('<?php echo $payUrl; ?>')" title="Pay online with PayPal">PayPal</button> 
</div> 
<script> 
    function loadPayPalPage(paypalURL) 
    { 
     var ua = navigator.userAgent; 
     var pollingInterval = 0; 
     var win; 
     // mobile device 
     if (ua.match(/iPhone|iPod|Android|Blackberry.*WebKit/i)) { 
      //VERY IMPORTANT - You must use '_blank' and NOT name the window if you want it to work with chrome ios on iphone 
       //See this bug report from google explaining the issue: https://code.google.com/p/chromium/issues/detail?id=136610 
      win = window.open(paypalURL,'_blank'); 

      pollingInterval = setInterval(function() { 
       if (win && win.closed) { 
        clearInterval(pollingInterval); 
        returnFromPayPal(); 
       } 
      } , 1000); 
     } 
     else 
     { 
      //Desktop device 
      var width = 400, 
       height = 550, 
       left, 
       top; 

      if (window.outerWidth) { 
       left = Math.round((window.outerWidth - width)/2) + window.screenX; 
       top = Math.round((window.outerHeight - height)/2) + window.screenY; 
      } else if (window.screen.width) { 
       left = Math.round((window.screen.width - width)/2); 
       top = Math.round((window.screen.height - height)/2); 
      } 

      //VERY IMPORTANT - You must use '_blank' and NOT name the window if you want it to work with chrome ios on iphone 
       //See this bug report from google explaining the issue: https://code.google.com/p/chromium/issues/detail?id=136610 
      win = window.open(paypalURL,'_blank','top=' + top + ', left=' + left + ', width=' + width + ', height=' + height + ', location=0, status=0, toolbar=0, menubar=0, resizable=0, scrollbars=1'); 

      pollingInterval = setInterval(function() { 
       if (win && win.closed) { 
        clearInterval(pollingInterval); 
        returnFromPayPal(); 
       } 
      } , 1000); 
     } 
    } 

    var returnFromPayPal = function() 
    { 
     location.replace("www.yourdomain.com/paypalStatusCheck.php"); 
     // Here you would need to pass on the payKey to your server side handle (use session variable) to call the PaymentDetails API to make sure Payment has been successful 
     // based on the payment status- redirect to your success or cancel/failed page 
    } 
</script> 
+1

Funziona con le visualizzazioni Web native di Android e iOS? – Heinrich

1

In realtà esiste una soluzione semplice che non è documentata da nessuna parte. Stavamo discutendo con PayPal circa l'aggiunta di un po 'di tempo indietro quindi mi chiedo se alla fine sia stato implementato.

In ogni caso, semplicemente reindirizzare l'utente al seguente URL e saranno reindirizzati al tuo sito al termine:

https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/preapproval?preapprovalKey=PA-XXXXX&expType=redirect 

La differenza qui sta usando expType=redirect piuttosto che expType=mini. Non sono sicuro di quando è stato aggiunto, ma dopo un po 'di reverse engineering e alcuni esperimenti abbiamo una soluzione sorprendentemente semplice.

+0

Facile e al punto. Ha funzionato come un fascino. Grazie! –

Problemi correlati