2016-01-12 12 views
24

Impossibile trovare alcuna informazione su questo particolare errore in qualsiasi punto, quindi si prega di portare con me.Errore righe: "Token non è supportato" quando si tenta di iscriversi all'abbonamento

L'app My Angular/NodeJS ha una pagina di pagamento (per gli abbonamenti mensili e annuali) gestita tramite Stripe.

Ho creato i tipi di abbonamento a mia banda cruscotto (due abbonamenti: StarterAnnual e StarterMonthly), e ho impostato il gestore in questo modo:

var handler = StripeCheckout.configure({ 
      key: 'pk_test_qs8Ot1USopAZAyLN3gNXma0T', 
      image: '/img/stripe-logo.png', 
      locale: 'auto', 
      email: $scope.user.email, 
      token: function(token) { 
      console.log(token) 
      var tempObj = { 
       stripeToken : token, 
       email : $scope.user.email, 
       cost : $scope.plan.price * 100 
       plan : $scope.plan.name 
      } 
      $http.post('/api/makePayment', tempObj).then(function(data){ 
       console.log('stripe data', data); 
      },function(err){ 
       console.log('stripe error', err); 
      }) 
      } 
     }); 

     handler.open({ 
      name: '<bizname>', 
      description: $scope.plan.name, 
      amount: $scope.plan.price * 100 
     }); 

Nel mio percorso Nodo, io sono fare questo:

exports.makePayment = function(req,res){ 

    var stripeToken = req.body.stripeToken, 
      email = req.body.email, 
      cost = req.body.cost, 
      plan = req.body.plan; 

    var tempObj = { 
    source: stripeToken, 
    plan: plan, 
    email: email 
    } 

    console.log(tempObj); // Everything looks fine in this log 

    stripe.customers.create(tempObj, function(err, customer) { 
    if(err){ 
     console.log("Stripe Error"); 
     console.log(err); 
    }else{ 
     console.log(customer); 
     res.status(200).send(customer); 
    } 

    }); 
} 

Quando provo a fare un pagamento ottengo:

Stripe Error 
{ [Error: token is not supported.] 
    type: 'StripeInvalidRequestError', 
    stack: 'Error: token is not supported.\n at Error._Error (/node_modules/stripe/lib/Error.js:12:17)\n at Error.Constructor (/node_modules/stripe/lib/utils.js:105:13)\n at Error.Constructor (/node_modules/stripe/lib/utils.js:105:13)\n at Function.StripeError.generate (/node_modules/stripe/lib/Error.js:56:14)\n at IncomingMessage.<anonymous> (/node_modules/stripe/lib/StripeResource.js:138:39)\n at emitNone (events.js:72:20)\n at IncomingMessage.emit (events.js:166:7)\n at endReadableNT (_stream_readable.js:905:12)\n at doNTCallback2 (node.js:452:9)\n at process._tickCallback (node.js:366:17)', 
    rawType: 'invalid_request_error', 
    code: undefined, 
    param: 'source', 
    message: 'token is not supported.', 
    detail: undefined, 
    raw: 
    { type: 'invalid_request_error', 
    message: 'token is not supported.', 
    param: 'source', 
    statusCode: 400, 
    requestId: 'req_7hzY3mEgeM3nNJ' }, 
    requestId: 'req_7hzY3mEgeM3nNJ', 
    statusCode: 400 } 

Ho praticamente usato il codice direttamente dai documenti, cosa sto facendo di sbagliato qui? Devo impostare le cose in modo diverso per creare un cliente quando si fa un abbonamento?

risposta

56

trovato la risposta sul canale IRC di banda: Non è menzionato nel official docs, ma Stripe si aspetta che il Token ID, piuttosto che il token di sé.

Basta passare source: stripeToken.id risolto il problema per me.

+4

GRAZIE! Non solo non è menzionato, non è corretto nei campioni. – ScottCate

+3

4 ore perse. PERCHÉ non è questo nei documenti ?? Grazie a caro signore. –

+0

Stripe, correggi i tuoi documenti. – Jelling