如何解决科尔多瓦中的 inappbrowser 不从弹出窗口返回 3ds 支付数据
我有一个移动应用,它在科尔多瓦的 inappbrowser 上使用结账付款。
当我按下付款时,它会向我显示带有按钮的付款页面,我按下按钮并打开一个模式,客户在其中输入他的卡付款信息,输入所有信息后,他按下继续按钮,然后出现一个用于 3ds(3d 安全)验证的弹出窗口,一旦我验证了交易并且它应该返回应用程序来验证订单,它就会卡在一个白页上,就好像返回付款信息时出错一样。
如果有人可以,请帮助我解决这个问题。
这是显示该过程的视频的链接:https://drive.google.com/file/d/17Ujdz_-kfvAscM4H3ZjUvHvE2IJHqoHb/view?usp=sharing
我的 app.js 文件中与 appbrowser 中的付款相关的代码和函数。
payWebview = function(url){ 如果(!krms_config.debug){ inapp = cordova.InAppbrowser.open( url,'_blank','location=no,footer=yes,footercolor=#000000,closebuttoncaption=X,closebuttoncolor=#ffffff,EnableViewPortScale=no,hidden=no');
inapp.addEventListener('loadstart',function() {
showLoader(true);
});
inapp.addEventListener('loadstop',function(event){
inapp.show();
showLoader(false);
url = event.url;
var res = url.match(/success/gi);
if(!empty(res)){
inapp.executeScript({
code: "document.documentElement.innerText"
},function(html) {
inapp.close();
setTimeout(function(){
$graphical = isTrackingGraphical();
if($graphical){
showLoader(true,'modal_order_sent');
setTimeout(function(){
processAjax('getordergraphical','order_id=' + getStorage("global_receipt_order_id") );
},2*1000);
} else {
var options = {
"order_id" : getStorage("global_receipt_order_id"),"total_amount" : getStorage("global_receipt_amount_pay"),'message': getStorage("global_receipt_message")
};
onsenNavigator.pushPage('receipt.html',{
animation : "slide",data : options
});
}
},1);
});
}
var error = url.match(/error/gi);
if(!empty(error)){
inapp.executeScript({
code: "document.documentElement.innerText"
},function(html) {
inapp.close();
showAlert(html);
});
}
var cancel = url.match(/cancel/gi);
if(!empty(cancel)){
inapp.close();
}
});
} else {
//window.open(url);
window.open( url,hidden=no');
}
};
和
case "init_webview":
setStorage("global_receipt_order_id",data.details.order_id );
setStorage("global_receipt_amount_pay",data.details.total_amount );
setStorage("global_receipt_message",data.msg );
payWebview( data.details.redirect_url);
break;
当支付卡没有 3ds 验证时,该过程成功完成。
提前感谢您的帮助
解决方法
弹出窗口在 Cordova inapp 浏览器插件中不起作用。
即,如果您在应用内浏览器中打开的页面调用 window.open(url,'_blank')
,它将无法工作。
但如果您加载到 inappbrowser 的页面使用 Braintree JS SDK 作为其支付解决方案,那么有一个可能的解决方案:
Braintree 为 iOS 和 Android 创建了一个“PopupBridge”扩展,它扩展了原生 web 视图,以在应用内浏览器的上下文中提供对弹出窗口的模拟支持。
cordova-plugin-inappbrowser-popup-bridge 插件扩展了官方 cordova-plugin-inappbrowser 插件以包装本机 Braintree PopupBridge 扩展,为适用于 Android 和 iOS 的 Cordova 应用程序提供解决方案。 我已在生产应用中广泛使用此方法,并确认该方法与 Braintree JS SDK 结合使用时适用于 PayPal 和 3d 安全弹出窗口。
但是,如果您的支付服务提供商不是 Braintree,我无法为您提供解决方案。
免责声明:我是cordova-plugin-inappbrowser-popup-bridge
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。