Ответ 1
Попробуйте перенаправить ваш сайт на
https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?paykey=AP-XYZ&expType=mini
Заполните свой ключ оплаты вместо AP-XYZ
Сообщите мне, если он работает.
Im интегрирует API адаптивных платежей Paypal для мобильного сайта. Но когда я отправляю платеж на
https://www.paypal.com/webscr?cmd=_ap-payment&paykey=value
(для песочницы: https://www.sandbox.paypal.com/cgi-bin/webscr)
Он всегда перенаправляется на главную интернет-страницу Paypal. Не для веб-сайта Paypal Mobile. Как перенаправить клиента на мобильную сеть PayPal?
Попробуйте перенаправить ваш сайт на
https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay?paykey=AP-XYZ&expType=mini
Заполните свой ключ оплаты вместо AP-XYZ
Сообщите мне, если он работает.
Лучший подход, который я нашел, - это мини-браузер. Но у меня было множество различных проблем на мобильных устройствах, реализующих его (именно это и предназначалось в первую очередь). Вы увидите много похожих вопросов об адаптивных платежах и о всех проблемах с использованием лайтбокса и мини-браузера.
Но НАКОНЕЦ... Я понял это по часам, часам, дням и дням! Это должно решить все проблемы всех разных разновидностей, если речь идет о проблемах с адаптивными платежами PayPal и о проблемах с:
Drum roll пожалуйста.... здесь!! Это заменяет любую потребность в 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