我正在使用Stripe API设置支付功能,允许用户在iPad上登录Stripe账户,接受任何人的支付。为此,我使用Stripe Connect让用户登录并保存他们的账户ID,然后使用STPPaymentCardTextField
获取信用卡详细信息。然后使用Stripe iOS SDK提交一张卡片(测试卡信息为4242...)并通过createTokenWithCard
取回令牌。这将成功返回令牌。此时,我需要提交该令牌沿着目标帐户ID(在用户登录后提供给应用程序)和其他信息(货币,金额等)到我自己的服务器提交付款到条纹。我已经验证信息正在提交并转发到条纹,但条带返回错误:
{ type: 'invalid_request_error',
app[web.1]: message: 'No such token: tok_13vxes2eZkKYli2C9bHY1YfX',
app[web.1]: param: 'source',
app[web.1]: statusCode: 400,
app[web.1]: requestId: 'req_7AIT8cEasnzEaq' },
app[web.1]: requestId: 'req_7AIT8cEasnzEaq',
app[web.1]: statusCode: 400 }
如果我们直接提交信用卡信息,完全避免使用令牌,则付款成功。此令牌有问题,我们不确定失败的原因。这里可能出现了什么问题?
[[STPAPIClient sharedClient] createTokenWithCard:card completion:^(STPToken *token, NSError *error) {
//submit tokenId and other info to 'charge' endpoint below
}
NodeJS :
app.post('/charge', (req, res, next) => {
stripe.charges.create({
amount: req.body.amount,
currency: req.body.currency,
source: req.body.token,
description: req.body.description,
destination: req.body.destination
}, (err, charge) => {
if (err) return next(err)
res.json(charge)
})
})
6条答案
按热度按时间s6fujrry1#
您确定您在服务器和客户端上使用相同的API密钥吗?
您的服务器应使用您的(live/test)密钥,iOS应用应使用您的(live/ test)可发布密钥,如Stripe Testing上所述。
vm0i2vca2#
我的测试环境一直面临着同样的问题,我一直在做的错误是,我添加了Stripe收到的令牌,如下所示来源:'tok_18nnwSJ6tVEvTdcVs3dNIhGs',但对于测试环境,我们必须使用源代码:“托克签证”。
下面是Stripe提供的测试源列表。https://stripe.com/docs/testing#cards
它为我创造了客户,让我知道它是否也帮助了其他人。
ars1skjm3#
接受的答案对我不起作用。我正在使用客户端和服务器的正确密钥,但问题仍然存在。我也在从iOS发送源代码到服务器,基于Stripe示例RocketRides,它正在发送信用卡的源ID,即"card_xxx",这是行不通的。您必须在服务器端为调用添加"customer"属性。
例如:(Python)
k10s72fa4#
这两个答案对我都不管用。
我试着使用Stripe的PHP库来对我已经存档的卡进行收费...
我收到了上面的没有这样的令牌错误。
为了让它工作,我还必须提供客户ID像这样...
2w3rbyxf5#
1.首先检查API键是否在前端和后端相同。
1.如果您正在使用测试API密钥,则必须传递source:'tok_visa'而不是您的卡源令牌源:“令牌_kb3kb23k2bk32bk3b2”.
jyztefdp6#
我有一个相同的问题,而我正试图交换到新的秘密API密钥和公共API密钥。我发现重新启动服务器和客户端的解决方案。在共同点,我们保存的条纹密钥到env文件。只有当我们重新启动项目的env文件重新加载。希望能帮助你。