我想通过Stripe在我的应用中实施付款。我正在阅读他们的文档,并且一直提到我将从Stripe检索令牌后使用我自己的服务器向某人收费。 (stripe documentation)
为什么我需要一台服务器来向我的用户收费?为什么我只能调用Stripe API方法来充电 - 我在服务器上做什么特别的事情?有没有办法在不创建自己的服务器的情况下充电? firebase能够充足吗?
由于
答案 0 :(得分:5)
是。您需要服务器的原因主要是保护您的密钥,Stripe为您提供。您不希望在您的移动应用中嵌入一个密钥,它为其提供零保护。有人可以简单地反汇编您的应用程序,即使它被混淆了,并试图找到无助的秘密密钥。
<强>链接强>:
Stripe网站上的This Q&A清楚地回答了这个问题,但没有详细介绍。
This blog post解释了端到端的过程,这可能对您阅读上下文感觉很好。
<强>替代强>:
Accepton也可以发挥作用。
...尽管如此,我建议您自己设置,以便尽可能多地保持控制。 HTTP和REST的定义和细节超出了本问题的范围,但请放心,实现这项工作的代码量是微不足道的(尽管您最初的学习/努力)。
答案 1 :(得分:5)
让我扩展一下他们的解释:
通过我们的移动库,我们无需将卡数据直接发送到您的服务器,从而承担了PCI合规性的负担。相反,我们的库将卡数据直接发送到我们的服务器,我们可以将它们转换为令牌。
这意味着通常会收到一个信用卡号码,并且会将其存储起来供以后使用(例如,客户将其输入您的帐户页面以便每月收费),但这使您有法律义务符合PCI标准,这可能是一个令人头疼的问题。条纹可以减轻您的负担 - 他们会存储信用卡,如果您想稍后向其收费,您可以向他们提供他们生成的代表该信用卡的令牌。
您的应用会收到令牌,然后可以将令牌发送到您服务器上的终端,可用于处理付款,建立定期结算或仅保存以供日后使用。
另有一节https://stripe.com/docs/mobile/android#using-tokens
对此进行了解释使用付款令牌,无论它是否已获得,都需要使用您的秘密API密钥从您的服务器进行API调用。 (出于安全考虑,您绝不应在您的应用中嵌入秘密API密钥。)
(这是drhr提到的。)
由于您需要密钥才能进行API调用,因此需要从您自己的服务器完成,因此您需要一台服务器。
注意:我没有使用Stripe,我记得,我只是想分享我对文档的阅读。
P.S。我认为你的第二个问题是独立的,但托管Java webapp的一些流行和简单的选择是Heroku和AppEngine。对于类似的东西,你可以使用无服务器方法,例如使用AWS Lambda https://aws.amazon.com/lambda(谷歌在Alpha阶段https://cloud.google.com/functions/中具有等价物)