【发布时间】:2017-03-23 06:14:19
【问题描述】:
我正在尝试将 Worldpay 集成到 angular2 应用程序中。
我正在使用 自己的表单 (own-form) 方法,需要在页面中包含他们的脚本:
<script src="https://cdn.worldpay.com/v1/worldpay.js"></script>
为某些输入添加特定的属性:data-worldpay 并将 Worldpay.js 逻辑附加到表单...
我设法完成了这些步骤:
1. 在您的页面中包含 Worldpay.js
2. 创建一个带有相关属性的支付表单
我怎样才能继续进行下一步... 我被这个问题困住了:
5.将 Worldpay.js 附加到您的表单:
<script type="text/javascript">
var form = document.getElementById('paymentForm');
Worldpay.useOwnForm({
'clientKey': 'your-test-client-key',
'form': form,
'reusable': false,
'callback': function(status, response) {
document.getElementById('paymentErrors').innerHTML = '';
if (response.error) {
Worldpay.handleError(form, document.getElementById('paymentErrors'), response.error);
} else {
var token = response.token;
Worldpay.formBuilder(form, 'input', 'hidden', 'token', token);
form.submit();
}
}
});
</script>
为什么?
angular2 从模板中删除所有标签<script。
假设有一种解决方法,可以在 ngAfterViewInit() 方法中在页面中注入一些脚本(就像我在第一步中所做的那样)
ngAfterViewInit(): void {
let s = document.createElement("script");
s.type = "text/javascript";
s.src = "https://cdn.worldpay.com/v1/worldpay.js";
this.worldPayScriptElement.nativeElement.appendChild(s);
}
其中this.worldPayScriptElement 是来自模板的 div 的 ViewChild:<div #worldPayScriptElement hidden></div>
但是, 由于他们的处理规则,worldpay 将使用名为 CreditCardToken
的字段替换我表单中的敏感数据来源:最后,在 Worldpay.formBuilder() 中,所有敏感的卡数据都从表单中删除,替换为令牌,然后才将表单提交回您的服务器。 来源:https://developer.worldpay.com/jsonapi/docs/own-form
如何继续集成这个...无法理解。
如果他们有一个基于GET/POST 请求返回 CreditCardToken 的 API,那将是完美的,但从文档中我还没有找到合适的方法......
我将非常感谢任何形式的建议。
【问题讨论】:
标签: angular typescript payment-gateway payment worldpay