У меня проблемы с использованием библиотеки rxp- js в проекте Angular 6.
Итак, я добавил rxp- js в angular. json, чтобы я мог использовать его в компоненте, так как еще нет модуля или типов для библиотеки;
Над компонентом у меня есть
declare let RealexHpp;
OnInit Я просто получаю JSON от сервера, чтобы инициировать лайтбокс.
this.realexJSON = await this.dataService.getRealexJson();
RealexHpp.setHppUrl("https://pay.sandbox.realexpayments.com/pay");
RealexHpp.init("realex-button", 'http://localhost:1337/responseurl', this.realexJSON);
Это все работает отлично. Я могу добавить фиктивные данные карты и отправить платеж.
Вот где это сложно. rxp- js делает запись html, которая в angular заставляет страницу перенаправить на URL-адрес ответа. Итак, как вам не испортить весь пользовательский опыт.
Перенаправляет на все, что отвечает API, так что вы можете иметь страницу с сообщением о перенаправлении обратно к клиенту.
Но это все в одном окне.
Итак, я вошел в rxp- js и добавил строку, чтобы открыть форму в новом окне, как это
//Create a form and submit the hpp response to the merchant's response url
var form = document.createElement("form");
form.setAttribute("method", "POST");
form.setAttribute("action", merchantUrl);
form.setAttribute("target",'_blank');
form.appendChild(internal.createFormHiddenInput("hppResponse", response));
document.body.appendChild(form)
form.submit()
Итак, он открывается в новом окне, ответ сервера возвращается с сообщением о перенаправлении назад, а затем закрывает окно.
Но теперь лайтбокс все еще открыт.
В целом взломать библиотеку, чтобы заставить ее работать, - это не идеально.
Нет ли способа обработать HPP_Hosted_Response, не выполняя пост html. Или, по крайней мере, зная, когда ответ получен.
Если честно, Realex - это не простая интеграция платежей.