在支付过程中带有动态名称的Angular外部脚本



我在电子商务页面中实现了来自德国商业银行(Docs: https://commerzbank.docs.oppwa.com/tutorials/integration-guide)的支付模块,如果您查看步骤2,您会发现,我必须在源代码中加载包含变量(checkoutId)的javascript文件。

<script src="https://test.oppwa.com/v1/paymentWidgets.js?checkoutId={checkoutId}"></script>

这样的脚本是这样的:

(function(){
var wpwl = wpwl || {};
// timestamp
wpwl.timestamp = new Date().toUTCString();
// paymentWidgets.js request
wpwl.minified = true;
wpwl.checkoutId = "D7953E29AA922D918F02A1C268C0230E.sbg-vm-tx02";
// environment
wpwl.url = "https://test.oppwa.com";
wpwl.cacheVersion = "1814c6681b9c8a96918c1f4883f0649e";
wpwl.isTestSystem = true;
wpwl.apiVersion = "1";
// ndc
wpwl.ndc = "D7953E29AA922D918F02A1C268C0230E.sbg-vm-tx02";
// payment config
wpwl.paymentWidgetConfig = {"brandConfig":{"brands":["ADVANTAGE","BARPAY","CARDFINANS"],"overrideShopBrands":false,"activateBrands":false},"registrations":[],"detectIp":false,"environmentConfig":{"url":"https://test.oppwa.com","defaultPaymentMode":"INTEGRATOR_TEST","cacheVersion":"1814c6681b9c8a96918c1f4883f0649e"},"workflowSpecificConfig":{"aliRiskConfig":{"active":false,"aliRiskParameters":{"clientAppName":"PAY.ON"}},"kountConfig":{"active":false,"merchantId":"","sessionId":""},"gfklConfig":{"active":false}}};
wpwl.aliRiskParams = {"clientAppName":"PAY.ON"};
wpwl.kountSessionId = '';
wpwl.endPoint = "/payment";
// expose wpwl to global
window.wpwl = wpwl;
// load static files async
(function(d,t,w,s,j){
    s = d.createElement(t), j = d.getElementsByTagName(t)[0];
    s.src = [w.url, "/v", w.apiVersion, "/static/", w.cacheVersion, "/js/static", w.minified ? ".min" : "", ".js"].join("");
    s.async = true;
    j.parentNode.insertBefore(s, j);
}(document, "script", wpwl));
}());

我用的是Angular的ui-router。每当我注入此javascript时,它都会将我的表单替换为Commerzbank的安全表单,用户可以在其中输入信用卡信息(正确的行为)。但是在步骤3中,我总是得到一个错误说,credit card number may not be null,即使我输入了它。

我已经联系了他们的支持,我们已经研究这个问题近两个月了。不幸的是,他们没有使用Angular的经验。我非常确定这与他们的脚本被注入的方式(或时间)有关。

它只在我硬编码src时为我工作过一次。对于德国商业银行的支持,我的版本在在线测试环境中工作。我转到相同的页面,但它不起作用。我已经确认,它通过屏幕共享对他们有效。

我知道这听起来很奇怪——为什么同样的代码对他们有效,而对我却不行?我肯定漏掉了什么。我很确定这太具体了,信息不够,但我忍不住发了。

我找到问题了。最后,这只是一个问题,有德国商业银行表单嵌套到我的外部表单为整个结帐。我将把这个问题留在这里,以备将来有人遇到同样的问题时参考。

一个简单的解决方案是不让他们的表单嵌套到另一个表单。如果不符合你的逻辑,我可以在找到他们的支持并了解更多信息后再添加更多细节。

最新更新