我是否需要自己的服务器才能使用 Stripe API?

2022-09-04 20:06:43

我想通过 Stripe 在我的应用中实现付款。我正在阅读他们的文档,它不断提到,在我从Stripe检索令牌后,我将使用自己的服务器向某人收费。(条带文档)

stripe documentation

为什么我需要一个服务器来向我的用户收费,为什么我不能只调用 Stripe API 方法来收费 - 我在我的服务器上做了什么特别的事情?有没有办法在不创建自己的服务器的情况下充电?火力基础是否足够?

谢谢


答案 1

让我用我的解释来扩展他们所说的内容:

通过我们的移动库,我们承担了PCI合规性的负担,无需将卡数据直接发送到您的服务器。相反,我们的库将卡数据直接发送到我们的服务器,在那里我们可以将它们转换为令牌。

这意味着通常一个人会收到一个信用卡号,并期望将其存储以供以后使用(例如,客户将其输入您的帐户页面,以便可以按月收费),但这会使您在法律上有义务遵守PCI标准,这可能是一个令人头疼的问题。Stripe减轻了你的负担 - 他们会存储信用卡,如果你想稍后收费,你可以给他们他们生成的代表信用卡的令牌。

你的应用将接收回令牌,然后可以将令牌发送到服务器上的终结点,在该终结点中,令牌可用于处理付款、建立定期计费或仅保存以供以后使用。

这将在下一节中解释,https://stripe.com/docs/mobile/android#using-tokens

使用支付令牌(无论它是如何获得的)都需要使用您的秘密 API 密钥从服务器进行 API 调用。(出于安全考虑,切勿在应用中嵌入秘密 API 密钥。

(drhr提到了这一点。

由于您需要密钥来进行API调用,因此需要从您自己的服务器完成,因此您确实需要一个服务器。

注意:我没有使用我记得的Stripe,我只是想分享我对文档的阅读。

附言:我认为你的第二个问题是分开的,但是托管Java webapp的一些流行和简单的选择是Heroku和AppEngine。但是,对于这样的事情,您可以使用无服务器方法,例如使用AWS Lambda https://aws.amazon.com/lambda(google在Alpha阶段有一个等效 https://cloud.google.com/functions/)


答案 2

是的。您需要服务器的原因主要是为了保护您的密钥,这是 Stripe 提供给您的。您不希望在移动应用中嵌入密钥,因为该密钥为其提供几乎为零的保护。有人可以简单地反汇编你的应用程序,即使它被混淆了,并试图无助地找到秘密密钥。

友情链接

Stripe网站上的这个问答清楚地回答了它,但没有详细说明。

这篇博客文章端到端地解释了这个过程,这对你来说可能很好阅读上下文。

替代方案

  1. Webtask stripe 脚本(另请参阅主 Webtask 页面)。

  2. Accepton也可以工作。

...不过,我建议您自己设置,以便您可以保持尽可能多的控制。HTTP和REST的定义和细节超出了这个问题的范围,但请放心,使这项工作的代码量微不足道(尽管您进行了初步的学习/努力)。


推荐