我使用Stripe API设置付款,以允许用户在iPad上登录其Stripe帐户并接受任何人的付款。为此,我使用Stripe Connect将其登录并保存其帐户ID,然后我使用STPPaymentCardTextField
获取信用卡详细信息,然后使用Stripe iOS SDK I&#39 ;提交一张卡片(带有测试卡信息--4242 ......)并通过createTokenWithCard
取回令牌。这成功返回一个令牌。此时我需要将该令牌连同目标帐户ID(在用户登录后提供给应用程序)和其他信息(货币,金额等)提交到我自己的服务器以将付款提交给Stripe。我已经确认信息正在提交并转发到Stripe,但Stripe正在返回错误:
{ 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)
})
})
答案 0 :(得分:55)
您确定在服务器和客户端上使用相同的API密钥吗? 您的服务器应该使用您的(实时/测试)密钥,并且您的iOS应用应该使用Stripe Testing中提到的(实时/测试)可发布密钥。
答案 1 :(得分:7)
接受的答案对我不起作用。我正在为客户端和服务器使用正确的密钥,但问题仍然存在。我正在从iOS向服务器发送源代码,基于条带示例RocketRides,它发送信用卡的源ID,即" card_xxx",这是行不通的。您将不得不添加"客户"服务器端呼叫的属性。
例如:(python)
textBox.bind("<Return>", newQuote, add="+")
答案 2 :(得分:4)
我在测试环境中遇到了同样的问题,我一直在做错误,我正在添加Stripe收到的令牌,就像这样一个来源:'tok_18nnwSJ6tVEvTdcVs3dNIhGs'一样,但是对于测试环境我们必须使用 source:'tok_visa'。
这是Stripe提供的测试源列表。 https://stripe.com/docs/testing#cards
它为我创造了客户,让我知道它是否也对其他人有所帮助。
答案 3 :(得分:1)
答案 4 :(得分:0)
这里没有一个答案对我有用。
我正在尝试使用Stripe的PHP库来收取我已经在文件中保存的卡,就像这样...
$charge = \Stripe\Charge::create([
'amount' => 1000,
'currency' => 'gbp',
'card' => 'card_xxx',
'description' => 'Payment for Sam',
]);
我在上面没有收到这样的令牌错误。
要使其正常工作,我还必须像这样提供客户ID ...
$charge = \Stripe\Charge::create([
'amount' => 1000,
'currency' => 'gbp',
'customer' => 'cus_xxx',
'card' => 'card_xxx',
'description' => 'Payment for Sam',
]);