我在 Angular 6 项目中使用 rxp-js 库时遇到问题。
所以我在 angular.json 中添加了 rxp-js,所以我可以在组件中使用它,因为库还没有模块或类型;
在我拥有的组件之上
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 帖子,它以角度导致页面重定向到响应 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()
然后它在一个新窗口中打开,服务器响应返回一条消息,说它将重定向回来,然后关闭窗口。
但是现在灯箱仍然打开。
总而言之,破解图书馆以使其工作并不理想。
有没有办法在不做 html 帖子的情况下处理 HPP_Hosted_Response 。或者至少知道何时收到响应。
说实话,Realex 并不是真正的简单支付集成。