“无法识别的特征:‘支付’。”,来源:https://js.stripe.com/v3/ (1)

Posted

技术标签:

【中文标题】“无法识别的特征:‘支付’。”,来源:https://js.stripe.com/v3/ (1)【英文标题】:"Unrecognized feature: 'payment'.", source: https://js.stripe.com/v3/ (1) 【发布时间】:2022-01-16 05:47:55 【问题描述】:

我正在尝试在我的 Flutter 应用中集成条带结账。我无法使用flutter_stripe,因为我正在尝试设置订阅。结帐会话 ID 在服务器端生成得很好。但是在客户端我收到了这个错误:

I/chromium(13817): [INFO:CONSOLE(1)] "Unrecognized feature: 'payment'.", source: https://js.stripe.com/v3/ (1)

我似乎找不到与此错误相关的太多内容。甚至 Stripe 支持也被难住了。我做错了什么?

网页浏览代码

import 'package:flutter/cupertino.dart';
import 'package:webview_flutter/webview_flutter.dart';

class CheckoutPage extends StatefulWidget 
  const CheckoutPage(
    this.pubKey,
    this.checkoutSessionId,
    Key key,
  ) : super(key: key);

  final String pubKey;
  final String checkoutSessionId;

  @override
  _CheckoutPageState createState() => _CheckoutPageState();


class _CheckoutPageState extends State<CheckoutPage> 
  WebViewController _controller;

  void _stripeRedirect() async 
    final stripeJs = '''
    const stripe = Stripe("$widget.pubKey");

    stripe.reditrectToCheckout(
      sessionId: "$widget.checkoutSessionId"
    ).then(function (result) 
      if (result.error) 
        return result.error.message;
      

      return "Success";
    );

    
    ''';

    final resolve = await _controller.evaluatejavascript(stripeJs);

    print(resolve);
  

  @override
  Widget build(BuildContext context) 
    final String initialUrl = 'https://mywebsite.com/checkout/ ';
    return SafeArea(
      child: CupertinoPageScaffold(
        navigationBar: CupertinoNavigationBar(
          middle: const Text('checkout'),
        ),
        child: WebView(
          initialUrl: initialUrl,
          javascriptMode: JavascriptMode.unrestricted,
          onWebViewCreated: (controller) => _controller = controller,
          onPageFinished: (url) 
            if (url == initialUrl) 
              _stripeRedirect();
            
          ,
          navigationDelegate: (req) 
            if (req.url.contains('success')) 
              Navigator.pop(context, 'success');
            

            if (req.url.contains('cancel')) 
              Navigator.pop(context, 'cancel');
            

            return NavigationDecision.navigate;
          ,
        ),
      ),
    );
  

着陆页

<!DOCTYPE html>
<html>
<script src="https://js.stripe.com/v3/"></script>

<head>
    <title>Stripe checkout</title>
</head>

<body>
    <p>Loading, please wait...</p>
</body>

</html>

【问题讨论】:

【参考方案1】:

不太确定这一点,但它可能与Feature-Policy 以及 Flutter 的 webview 如何执行它有关。可能想与 Flutter 社区联系,看看他们是否能对此有所了解。

【讨论】:

感谢您的回复,欢迎光临。不要被机器人打扰。 AFAIK Feature-Policy 是一项实验性功能。为什么 Stripe 甚至需要它?

以上是关于“无法识别的特征:‘支付’。”,来源:https://js.stripe.com/v3/ (1)的主要内容,如果未能解决你的问题,请参考以下文章

iOs : 阻止具有来源“https://www.youtube.com”的框架访问具有来源的框架

实施 HTTP 到 HTTPS 重定向,保留 Google Analytics(分析)引荐来源网址

无法在“DOMWindow”上执行“postMessage”:提供的目标来源(“https://outlook.office.com”)与收件人窗口的来源不匹配

javascript //来源https://jsbin.com

html //来源https://jsbin.com

html //来源https://jsbin.com