【问题标题】:Implement Stripe Payment Gateway in Cordova/Phonegap Application在 Cordova/Phonegap 应用程序中实现 Stripe 支付网关
【发布时间】:2014-08-04 00:08:48
【问题描述】:

搜索了很多。我想在我的 Cordova 应用程序中集成 Stripe 支付网关,有什么方法可以使用 javascript 在 android 和 ios 中实现它。

【问题讨论】:

    标签: javascript android ios cordova stripe-payments


    【解决方案1】:

    我通过电子邮件发送了 stripe,如果您像在网络上一样简单地集成它,显然它在 iOS 上运行良好。不幸的是,它还不能在安卓上运行! :(

    虽然 Checkout 在带有 PhoneGap(或任何使用原生 WebViews)的 iOS 设备上应该可以正常工作,但它不能在带有原生 WebViews 的 Android 设备上工作。这是一个已知问题,我们希望在未来修复,但目前还无法修复。目前,如果需要 Android,解决方案是使用 Stripe.js[0] 构建自定义表单。

    更新:

    显然存在一个!我还没试过,但这是链接

    http://plugins.telerik.com/plugin/stripe

    更新 2:checkout.js 现在实际上可以与 phonegap 或 cordova 配合使用。查看文档here

    更新 3:显然 checkout.js 再次被破坏,包括科尔多瓦 ios 4.0.0,最新版本的科尔多瓦 ios 是 3.9.2。这里还有另一个问题:Using Stripe Checkout with Cordova ios 4.0.0+

    更新 4:我们现在使用 Stripe V3 Elements,但只要您将条纹列入白名单,如 here 所示,条纹 checkout.js 应该可以工作

    【讨论】:

    • 感谢您的回复。我会试试这个。
    • Android webview 中有什么特别的中断?
    • 不确定,该回复是直接来自条纹的。我们实际上正在制作一个插件。
    • @AmritKahlon 这个插件会是一个开源的 Android Cordova 插件吗?如果存在,您是否有指向 repo 的链接?
    • @bertmaclin 仅适用于虚拟商品。 Stripe 适用于销售应用之外的商品和/或服务。
    【解决方案2】:

    编辑 2:

    我的下面的建议没有奏效,checkout.js 给我一个错误,说出了点问题,并尝试不同的浏览器。除了构建自己的结帐表单之外,我仍然没有其他情况。

    编辑 1:

    提出的解决方案以及我如何解决这个问题:

    为了解决checkout.js docs 的这部分问题(见底部的常见问题解答): 建议的解决方案:

    为了解决checkout.js docs 的这部分问题(请参阅底部的常见问题解答),

    “使用 Checkout 提交的所有付款信息都是通过安全的 HTTPS 连接进行的。但是,为了保护自己免受某些形式的中间人攻击,您必须为包含通过 HTTPS 的付款表单的页面。简而言之,包含 Checkout 的页面的地址必须以 https:// 开头,而不仅仅是 http://。”

    为了确保这一点,我在我的 Cordova 应用程序中嵌入了一个 <iframe>,并将 src 设置为我制作并拥有的 API 端点。 API 端点返回它们在文档中的简单实现中显示的<Form> sniper。所以我的 api 端点返回这个 HTML:

    <form action="/charge" method="POST">
      <script
        src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="pk_test_6pRNASCoBOKtIshFeQd4XMUh"
        data-amount="2000"
        data-name="Stripe.com"
        data-description="2 widgets"
        data-image="/img/documentation/checkout/marketplace.png"
        data-locale="auto">
      </script>
    </form>
    

    通过这种方式,结帐通过 https 得到保护!

    现在这是我对前面提到的插件的警告。感谢@Amrit Kahlon 更新该帖子!


    警告! 请勿使用此线程中讨论的插件:Telerik-Verified-Plugins/Stripe

    在插件方面似乎没有一个好的替代方案,你似乎也必须自己做。

    该插件要求您将 Stripe 密钥存储在客户端,这样恶意人员就有机会获取并使用它。

    密钥应该保密。

    这是插件的文档 (https://github.com/Telerik-Verified-Plugins/Stripe/blob/master/doc/index.md) 对自己的评价:

    安全警告

    此插件要求将 Stripe 密钥嵌入到应用程序中。顾名思义,您永远不应该共享密钥,因为它允许完全访问 Stripe API。将密钥嵌入应用程序意味着任何人都可以发现密钥并使用它来访问 API。这可能会导致敏感数据泄露(所有之前的费用都可见)甚至经济损失(可以发起退款)。

    您不太可能希望将 Stripe 密钥嵌入 Cordova 应用程序中,因此您不太可能希望使用此插件。

    https://support.stripe.com/questions/difference-between-secret-key-and-publishable-key

    从移动设备接受付款的正确方法仅使用可发布密钥。虽然可以使用密钥提交付款,但获得您的密钥的任何人都可以查看所有先前的费用、发放退款和发起转账。

    请在使用前仔细考虑这是否是预期的。

    【讨论】:

    • 实际上你不再需要使用插件,checkout.js 可以工作。我会更新我的答案
    猜你喜欢
    • 2018-02-22
    • 2014-07-07
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2012-08-27
    • 2019-03-30
    • 2020-10-08
    相关资源
    最近更新 更多