【问题标题】:Control over external links after HTTP Post (cordova)在 HTTP Post (cordova) 之后控制外部链接
【发布时间】:2016-03-05 14:50:47
【问题描述】:

这是我的第一个混合应用程序。我现在在这工作了 6 个月,所以我积累了很好的经验。我们同时针对 android 4 + 和 ios 8,9。我们正在使用cordova cli

在 cordova 应用程序中,我们目前正在开发在线支付功能。为此,我们正在使用第三方钱包系统。

我们准备详细信息(唯一 ID、交易详细信息、重定向 url 等)并通过 HTTP 发布(不是 ajax)发布到第三方托管服务器

第三方钱包系统提供了一个允许用户输入凭据的页面。成功完成后,用户将被重定向到定义的重定向 url(我们将在我们的服务器中托管)。在该页面中,将有返回按钮,点击后他必须返回应用程序。

我尝试了 inappbrowser 选项,我无法获得新支付页面的参考,因为它是 post request not get(我的意思是,window.open 没有帮助)。请帮帮我。

已编辑

更具体地说,在我的应用程序中,我有表单,它发布到外部 url。在外部页面中,点击链接后,我需要回到我的应用程序。

【问题讨论】:

  • HTTP 发布到支付系统。我宁愿使用 HTTPS。
  • 是的。你没看错。是HTTPS。
  • 在您的帖子中回答以下问题。因为这似乎是你关于这个主题的第一篇文章。这是您的第一个混合应用程序吗?您的目标平台及其目标版本是什么:Android 4、5、6? iOS 7、8、9?你在使用CLI, SDK or Build 吗?请不要假设答案,请阅读链接。一旦您在帖子中回答了问题,请在 cmets 中回复,以便我知道您已在帖子中添加信息。
  • 您还应该知道Phonegap 不是webserver or a webbrowser。并且Google and Apple frown on apps 都是网站包装器?
  • 是的,这是我的第一个混合应用程序,我已经使用了 6 个月。所以我在这方面积累了很好的经验(如果这是你的问题)。我们同时针对 android 4 + 和 ios 8,9。我们正在使用cordova cli。

标签: cordova phonegap-plugins hybrid-mobile-app inappbrowser


【解决方案1】:

要回到应用程序,您需要实现以下事件处理程序:

                var ref =cordova.InAppBrowser.open(url, "_blank",'location=no,clearcache=yes,hardwareback=no,zoom=no');                    
                ref.addEventListener('loadstart',onBrowserLoadStart);
                ref.addEventListener('loadstop',onBrowserLoadStop);
                ref.addEventListener('loaderror', onBrowserError);
                ref.addEventListener('exit', onBrowserClose);

在浏览器中的关闭按钮上,重定向到某个虚拟关闭页面,然后在 onBrowserLoadStart 事件上,执行以下操作:

             var cUrl= 'webpageaddress/dummytemplate/appClose';
             if(event.url===cUrl){
                  ref.close();
             }

在外部页面中将数据发布到表单。做这样的事情:

        function onBrowserLoadStop(event){

//alert('form url is:'+ event.url);
var cUrl= 'externalPageAddress/Dummytemplate/PaymentProcess';
if(event.url===cUrl){

    var msg;
    var newHtml='someHTMLDATA';


    var withoutScriptHtml = $(newHtml.bold());
    withoutScriptHtml.find('script').remove();


    msg=    " var formDiv = document.createElement('div'); formDiv.id='paymentFormDiv'; ";
    msg+=   " formDiv.innerHTML='" + withoutScriptHtml.html()+ "';" ;
    msg +=  " document.getElementById('InputForm').appendChild(formDiv);";
    msg +=  " document.getElementById('paymentForm').submit();";



    ref.executeScript(
        {
            code: msg
        },
        function(values){
            console.log(JSON.stringify(values));
        }
    );


}

}

【讨论】:

  • 是的。如果端点是 GET 端点,这将起作用。但就我而言,我需要将帖子发送到端点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
  • 1970-01-01
  • 2017-03-24
相关资源
最近更新 更多