2015-10-14 17 views
20

我使用Stripe API設置付款以允許用戶在iPad上登錄其條紋帳戶並接受任何人的付款。爲此,我使用Stripe Connect將其登錄並保存其帳戶ID,然後使用STPPaymentCardTextField獲取信用卡詳細信息,然後使用Stripe iOS SDK我正在提交一張卡(使用測試卡info - 4242 ...)並通過createTokenWithCard取回代幣。這成功返回一個令牌。此時,我需要將該令牌連同目標帳戶ID(在用戶登錄後提供給應用程序)以及其他信息(貨幣,金額等)一起提交給我自己的服務器,以將付款提交給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) 
    }) 
}) 

回答

4

接受的答案不適用於我。我爲客戶端和服務器使用正確的密鑰,但問題仍然存在。我也從iOS發送源到服務器,基於條紋示例RocketRides,它發送信用卡的源ID,即「card_xxx」,這是不會工作的。您將不得不在服務器端爲呼叫添加「客戶」屬性。

例如:(蟒)

stripe.Charge.create(量= 1000,貨幣= 'USD',源= 「card_xxxxx」 顧客 = 'cus_xxxx',application_fee = 600,目的地= {'account':'acct_xxxx'})

+0

這是2年前的答案,並被接受。你爲什麼用一種甚至沒有要求的編程語言來回答? –

+2

因爲我有相同的「沒有這樣的toke」錯誤,並且接受的答案不起作用。如果其他人發現相同的問題,他們可以檢查他們是否缺少這個屬性。編程語言不是關鍵,關鍵是要添加這個屬性 – Usher

36

你確定你使用你的服務器和客戶端相同的API密鑰?
您的服務器應該使用您的(實時/測試)密鑰,並且您的iOS應用程序應該使用您的(實時/測試)可發佈密鑰,如Stripe Testing所述。

+3

問題是可發佈密鑰與帳戶設置中顯示的密鑰不匹配。不知怎麼的,自從我把它粘貼到我的AppDelegate之後,它就發生了變化。 – Joey

+2

阿格有同樣的問題。感謝指出解決方案@Joey – Christophe

+0

同樣的問題,這麼簡單,但我沒有想到它。 – robertmylne