50

ユーザーが iPad で自分の Stripe アカウントにログインし、誰からでも支払いを受け取れるように、Stripe API を使用して支払いを設定しています。これを行うには、Stripe Connect を使用してログインし、アカウント ID を保存します。次に を使用しSTPPaymentCardTextFieldてクレジット カードの詳細を取得し、Stripe iOS SDK を使用してカードを送信します (テスト カード情報を含む)。 - 4242...) を介してトークンを取得しますcreateTokenWithCard。これにより、トークンが正常に返されます。この時点で、Stripe に支払いを送信するために、そのトークンを宛先アカウント 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
}

ノードJS:

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

5 に答える 5

75

サーバーとクライアントで同じ API キーを使用していますか? Stripe Testing
で説明されているように、サーバーは (ライブ/テスト) 秘密鍵を使用し、iOS アプリは (ライブ/テスト) 公開可能キーを使用する必要があります。

于 2015-10-14T23:22:21.620 に答える
1
  1. まず、API キーがフロントエンドとバックエンドで同じかどうかを確認します。
  2. テスト API キーを使用している場合は、カード ソース トークンsource: 'tok_kb3kb23k2bk32bk3b2 ' の代わりに source: 'tok_visa'を渡す必要があります。
于 2020-07-16T19:33:53.107 に答える