我有一个在cordova的inappbrowser上使用结账支付的移动应用程序。
当我按下支付,它显示我的支付页面与一个按钮,我按下按钮和模式打开,在那里客户输入他的卡支付信息,一旦所有的信息输入,他按下继续按钮和3ds (3D-安全)验证弹出出现,一旦我验证交易,它应该回到应用程序来验证订单,它卡住在一个白色页面,好像有一个错误返回付款信息。
请帮助我解决这个问题,如果有人可以的话。
以下是显示该过程的视频的链接:https://drive.google.com/file/d/17Ujdz_-kfvAscM4H3ZjUvHvE2IJHqoHb/view?usp=sharing
我的app.js文件中的代码和函数与应用浏览器中的支付相关。
payWebview =函数( url ){ if ( !krms_config.debug ){ inapp = cordova.InAppBrowser.open( url,‘_payWebview’,'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 , '_blank', 'location=no,footer=yes,footercolor=#000000,closebuttoncaption=X,closebuttoncolor=#ffffff,EnableViewPortScale=no,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验证时,流程成功完成。
提前感谢您的帮助
发布于 2021-03-01 22:21:29
弹出窗口在Cordova的应用浏览器插件中不起作用。也就是说,如果你在应用浏览器中打开的页面调用了window.open(url, '_blank'),它将无法工作。
但是,如果您加载到into浏览器的页面使用Braintree JS SDK作为其支付解决方案,那么有一个可能的解决方案:
Braintree为iOS和Android创建了一个"PopupBridge“扩展,它扩展了原生webviews,以在应用内浏览器的上下文中提供对弹出窗口的仿真支持。
cordova-plugin-inappbrowser-popup-bridge插件扩展了官方的cordova-plugin-inappbrowser插件,包装了原生的Braintree PopupBridge扩展,为同时在安卓和iOS上工作的科尔多瓦应用程序提供了一个解决方案。我已经在生产应用程序中广泛使用了这种方法,并确认当与Braintree JS SDK结合使用时,该方法适用于PayPal和3d-secure弹出窗口。
然而,如果您的支付提供商不是Braintree,我没有为您提供解决方案。
作者:我是cordova-plugin-inappbrowser-popup-bridge的作者
https://stackoverflow.com/questions/66421879
复制相似问题