javascript - Error de banda: "El token no es compatible" al intentar suscribirse a la suscripciĆ³n
angularjs node.js (1)
Encontró la respuesta en el canal IRC de Stripe: no se menciona en los documentos oficiales , pero Stripe está esperando la ID del token , en lugar del token completo.
Simplemente pasando la source: stripeToken.id
solucionó el problema por mí.
No puedo encontrar ninguna información sobre este error en particular en ningún lugar, así que por favor, tengan paciencia conmigo.
La aplicación My Angular / NodeJS tiene una página de pago (para suscripciones mensuales y anuales) manejada a través de Stripe.
He creado los tipos de suscripción en mi panel de control de Stripe (dos suscripciones: StarterAnnual
y StarterMonthly
), y configuré el controlador de esta forma:
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
});
En mi ruta del Nodo, estoy haciendo esto:
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);
}
});
}
Cuando intento hacer un pago obtengo:
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 }
Casi he usado código directamente de los documentos, ¿qué estoy haciendo mal aquí? ¿Necesito configurar las cosas de manera diferente para crear un cliente al realizar una suscripción?