我可以让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。
谢谢!
答案 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 ;)