在Cordova中使用Stripe Checkout

时间:2017-08-30 17:07:21

标签: javascript cordova iframe stripe-payments

我可以让Stripe Checkout在我的Ionic / Cordova应用程序中运行。它显示了一个iFrame,允许用户输入他们的Stripe登录信息/信用卡信息以完成付款流程。

但是有一个用户案例我无法正确支持 - 当用户点击Stripe Checkout iFrame中的Terms | Privacy链接时,会使用Cordova Webview打开该链接,因为Cordova离开后会破坏我的应用程序我的应用程序并转到Stripe的Terms | Privacy网页。 iOS上没有后退按钮,即使Android上有一个后退按钮,应用程序状态也完全被破坏,因为我们已经离开了我们的应用程序。

我已尝试使用In app browser,但没有运气,因为我无法从Stripe获取网址以将其提供给In app browser。此外,由于security reasons,我无法操纵Stripe Checkout iFrame HTML。因此,我似乎无法通过Terms | Privacy打开In app browser或通过更改iFrame HTML隐藏/删除Terms | Privacy

这个问题有解决方案吗?如果没有,我可能会考虑不在我的应用程序中使用Stripe Checkout。

谢谢!

Stripe Checkout iFrame

2 个答案:

答案 0 :(得分:1)

它的长短不应该是你不应该在Cordova应用程序中使用Checkout。虽然某些功能在某些情况下可能有效,但并非所有功能都能正常工作(就像您描述的问题一样)。

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

答案 1 :(得分:1)

我已经使用提到的 InAppBrowser 插件成功地让 Stripe Checkout 在 Cordova 应用程序中工作。

您是对的,您不能使用直接返回 URL 提供 InAppBrowser 插件,因为用于结帐的 Stripes javascript 只会创建重定向。

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

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>'; 


?>

基本上就是这样,您现在要做的就是使用指向您创建的 php 文件的 URL 调用 InAppBrowser ;)