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:
- L'impostazione predefinita reindirizzato pagina Paypal non è mobile reattivo e sembra orribile su dispositivi mobili.
- Il lightbox viene "riagganciato" e non si chiude su alcuni dispositivi mobili.
- Il mini browser non si chiude dopo aver completato il pagamento o l'annullamento.
- Il mini browser non reindirizza alla funzione callBack dallo script apdg.js di paypal.
- Non reindirizzamento a ReturnURL e CancelURL dopo il completamento di pagamento (o quando si annulla)
- 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>
fonte
2015-05-13 21:42:11
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