Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在Cordova中使用条带签出_Javascript_Cordova_Iframe_Stripe Payments - Fatal编程技术网

Javascript 在Cordova中使用条带签出

Javascript 在Cordova中使用条带签出,javascript,cordova,iframe,stripe-payments,Javascript,Cordova,Iframe,Stripe Payments,我可以在我的Ionic/Cordova应用程序中使用。它显示一个iFrame,允许用户在其中输入条带登录信息/信用卡信息以完成支付过程 然而,有一个用户案例我无法正确支持——当用户从Stripe Checkout iFrame中单击Terms | Privacy链接时,该链接将使用Cordova Webview打开,这会破坏我的应用程序,因为Cordova离开了我的应用程序,进入Stripe的Terms | Privacy网页。iOS上没有后退按钮,即使Android上有后退按钮,但自从我们离开

我可以在我的Ionic/Cordova应用程序中使用。它显示一个iFrame,允许用户在其中输入条带登录信息/信用卡信息以完成支付过程

然而,有一个用户案例我无法正确支持——当用户从Stripe Checkout iFrame中单击
Terms | Privacy
链接时,该链接将使用Cordova Webview打开,这会破坏我的应用程序,因为Cordova离开了我的应用程序,进入Stripe的
Terms | Privacy
网页。iOS上没有后退按钮,即使Android上有后退按钮,但自从我们离开应用程序后,应用程序状态完全被破坏

我曾尝试使用
应用程序浏览器
,但没有成功,因为我无法从Stripe中获取URL以将它们提供给
应用程序浏览器
。此外,我无法操作条带签出iFrame HTML,因为。因此,我似乎没有办法在应用程序浏览器中打开
Terms | Privacy
,或者通过更改iFrame HTML隐藏/删除
Terms | Privacy

这个问题有解决办法吗?如果不是,我可能会考虑在我的应用程序中不使用条纹签出。 谢谢


它的长短不一之处在于,您不应该在Cordova应用程序中使用它。虽然某些功能在某些情况下可以正常工作,但并非所有功能都能正常工作(正如您所描述的问题)


相反,您应该使用Stripe的库来设计自己的自定义表单,以便在Cordova webview中使用它。

我已成功地使用提到的InAppBrowser插件在Cordova应用程序中实现了Stripe签出

你是对的,你不能给InAppBrowser插件提供一个直接返回的URL,因为用于签出的javascript只会创建一个重定向

解决这个问题的方法是创建自己的php文件,该文件将执行条带重定向

对于使用sofort付款类型,redirect.php看起来像这样

<?php 

// Include neccessary php Stripe sdk 
require_once('PATH TO STRIPE SDK');

$stripe_secret_key = 'YOUR STRIPE SECRET KEY'; 
$stripe_api_key = 'YOUR STRIPE API KEY'; 

// Using Stripe SDK create the Checkout 


// price in € 
$price_including = 100; 


\Stripe\Stripe::setApiKey($stripe_secret_key);

        $session = \Stripe\Checkout\Session::create([
            'payment_method_types' => ['sofort'],
            'line_items' => [[
              'price_data' => [
                'currency' => 'eur',
                'product_data' => [
                  'name' => 'YOUR PRODUCT NAME',
                ],
                'unit_amount' => $price_including*100,
              ],
              'quantity' => 1,
            ]],
            'mode' => 'payment',
            'success_url' => 'URL TO YOUR SUCCESS PAGE',
            'cancel_url' => 'URL TO YOUR ERROR PAGE',
          ]);
        
          $sid = $session->id;


// with the created Session ID call the Stripe Javascript which will do the redirect

// Include Stripe JS First
echo '<script src="https://js.stripe.com/v3/"></script>'; 

          echo '<script type="text/javascript">

                     var stripe = Stripe("'.$stripe_api_key.'");

                      function redirect() 
                      {
                        return stripe.redirectToCheckout({ sessionId: "'.$sid.'" });
                      }

                      redirect(); 
         
          </script>'; 


?>

代码>元素似乎不记得我的条纹信息(例如,经过验证的电话号码,我不需要再次输入我的CC信息)同样的方式签出,我认为第一个好处我从结帐。我可能会坚持使用我的旧的和苍白的表单输入来获取客户信息。条纹元素在生产中有效吗?(我的网络视图显示在
文件://
中,而不是
https://
中)我认为@Ywain应该突出元素。将stripe.js引用放在cordova应用程序上会导致警告,生产使用将需要SSL。AFIK将其用于cordova(或电容器)应用程序的生产使用。