tutorial stripe standard ephemeral custom ios node.js stripe-payments stripe-connect

ios - standard - Error "No hay tal token" al enviar la solicitud de pago a Stripe



stripe payment reference (2)

¿Está seguro de que está utilizando las mismas claves de API en su servidor y cliente?
Su servidor debe usar su clave secreta (en vivo / de prueba), y su aplicación iOS debe usar su clave de publicación (en vivo / de prueba) como se menciona aquí en Stripe Testing .

Estoy configurando los pagos utilizando la API de Stripe para permitir que un usuario inicie sesión en su cuenta de Stripe en un iPad y acepte pagos de cualquier persona. Para hacer esto, estoy usando Stripe Connect para iniciar sesión y guardar su identificación de cuenta, luego estoy usando el STPPaymentCardTextField para obtener detalles de la tarjeta de crédito, luego uso el SDK de Stripe para iOS. Estoy enviando una tarjeta (con la tarjeta de prueba info - 4242 ...) y recuperar un token a través de createTokenWithCard . Esto devuelve un token con éxito. En este punto, debo enviar ese token junto con el ID de la cuenta de destino (proporcionado a la aplicación después de que el usuario haya iniciado sesión) y otra información (moneda, monto, etc.) a mi propio servidor para enviar el pago a Stripe. He verificado que la información se envía y reenvía a Stripe, pero Stripe está devolviendo un error:

{ 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 }

Si enviamos la información de la tarjeta de crédito directamente, evitando el token por completo, el pago se realiza correctamente. Algo está mal con este token, y no estamos seguros de por qué está fallando. ¿Qué podría estar saliendo mal aquí?

[[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) }) })


La respuesta aceptada no funciona para mí. Estoy usando la clave correcta para el cliente y el servidor, pero el problema sigue ahí. También estoy enviando la fuente de iOS al servidor, según el ejemplo de banda RocketRides, está enviando la ID de fuente de la tarjeta de crédito, que es "card_xxx", y eso no va a funcionar. Tendrá que agregar el atributo "cliente" para la llamada en el lado del servidor.

Por ejemplo: (python)

stripe.Charge.create(amount=1000, currency=''usd'', source="card_xxxxx", **customer**=''cus_xxxx'', application_fee=600,destination={''account'': ''acct_xxxx''})