Paypal Адаптивный платеж для мобильного интернета

Я интегрирую Paypal Adaptive Payment API для мобильного сайта. Но когда я отправляю платеж

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

(Для Песочницы: https://www.sandbox.paypal.com/cgi-bin/webscr)

Его всегда перенаправляют на Paypal Main Web. Не на сайте Paypal Mobile. Как перенаправить клиента на мобильный интернет PayPal?

4 ответа

Решение

Попробуйте перенаправить ваш сайт на

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

Заполните ваш платежный ключ вместо AP-XYZ

Дайте мне знать, если это работает.

Лучший подход, который я нашел, был мини браузером. Но у меня было множество разных проблем с мобильными устройствами, которые его реализовывали (именно для этого он и был предназначен). Вы увидите много похожих вопросов об адаптивных платежах и всевозможных проблемах с использованием лайтбокса и мини-браузера.

Но НАКОНЕЦ... Я понял это через часы за часами, дни за днями! Это должно решить проблемы всех разных разновидностей, когда дело доходит до проблем с PayPal Adaptive Payments и проблем с:

  1. По умолчанию перенаправленная страница PayPal НЕ отвечает на запросы мобильных устройств и выглядит ужасно на мобильных устройствах.
  2. Лайтбокс "зависает" и не закрывается на некоторых мобильных устройствах.
  3. Мини-браузер не закрывается после завершения платежа или отмены.
  4. Мини-браузер не перенаправляет на callBackFunction из скрипта paypal apdg.js.
  5. Не перенаправлять на returnUrl и cancelUrl после завершения платежа (или при отмене)
  6. Chrome для ios (iphones) не запускает функцию обратного вызова и, следовательно, после завершения или отмены платежа, он просто удерживает вас на странице, с которой вы запустили страницу оплаты PayPal, с которой вы не можете подтвердить успешность или неудачу платежа.

Барабанная дробь, пожалуйста.... вот она!! Это заменяет любые потребности в файлах JavaScript PayPal и т. Д. Все, что вам нужно, это то, что ниже, вместе с вашим собственным методом получения PayKey для добавления в URL перенаправления. Мой действующий веб-сайт с корректно работающими адаптивными платежами с использованием приведенного ниже кода - 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>

На самом деле есть простое решение, которое нигде не задокументировано. Мы обсуждали с PayPal вопрос о том, чтобы добавить его некоторое время назад, поэтому мне интересно, будет ли он в конечном итоге реализован.

В любом случае, просто перенаправьте пользователя на следующий URL, и он будет перенаправлен обратно на ваш сайт после завершения:

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

Разница здесь в использовании expType=redirect скорее что expType=mini, Я не уверен, когда это было добавлено, но после некоторого реверс-инжиниринга и некоторых экспериментов у нас есть удивительно простое решение.

Все верно - интерфейс Adaptive Payments не оптимизирован для мобильных устройств. Но наиболее близким к этому является то, что мы называем опытом MiniBrowser. Вы можете попробовать и посмотреть, отвечает ли это вашим потребностям. Вы можете найти практическое руководство здесь на X.com: Реализация опции Mini-Browser

Другие вопросы по тегам