2015-08-21 2 views
3

После того как пользователь платит через In-context Express Checkout, PayPal перезагружает страницу и перенаправляет пользователя на страницу, указанную параметром 'returnUrl' на сервере.paypal: оставайтесь на странице после экспресс-проверки in-context

Однако это приведет к удалению текущей страницы.

Есть ли способ избежать перезагрузки страницы после успешной проверки?

+0

Это действительно очень важная функция. Одностраничные приложения не нужны или не нуждаются в обновлении/переадресации и т. Д. PayPal In-Context, по-видимому, соразмерен в том, что SPA не рассматривались! –

+0

В настоящее время в этой проблеме проблема с PayPal подразумевает, что это возможно https://www.paypal.com/webapps/mpp/digital-goods >> «как это работает» – Alan

ответ

3

Включите iframe на свою страницу и используйте этот iframe для запуска процесса. Поскольку iframe является тем, который инициирует окно контекста PayPal, это iframe, который будет перенаправлен на ваш returnURL. Таким образом, ваша оригинальная страница остается в точном состоянии, которое было до вызова, переменной и всех.

Вот пример ...

У меня checkout.html с невидимым IFRAME именем paypaliframe. В PayPaliframe нет пользовательского интерфейса, он содержит только функции js, связанные с PayPal.

На странице checkout.html я нажимаю кнопку «Моя учетная запись», а PayPal выбрана в качестве опции оплаты. Событие «OnClick» говорит IFRAME для установки сделки:

paypaliframe.contentWindow.setupAutorization() 

IFrame выполняет функцию setupAutorization(), получает маркер транзакции с Paypal, то начинается процесс проверки в-контексте:

paypal.checkout.initXO(); 
paypal.checkout.startFlow(paypal.checkout.urlPrefix + token) 

Теперь отображается окно проверки внутри контекста, и мы видим, что новое окно перенаправляется на сайт PayPal. Клиент вводит свой логин, соглашается на вашу транзакцию, тогда Paypal перенаправляет iframe на ваш returnUrl.

После страницы ReturnUrl загружается в IFRAME, вы просто скажите родительскую страницу, чтобы следовать через со следующими шагами:

$(window).load(function() { 
    parent.continueAfterPaypal(); 
}); 

TLDR; Используйте iframe для запуска внутриконтрактной проверки, а затем используйте страницу iframe returnURL, чтобы сообщить родителям продолжить, когда все остановилось.

Смежные вопросы