#javascript #node.js #npm #stripe-payments #velo
#javascript #node.js #npm #stripe-платежи #velo
Вопрос:
Я пытаюсь вернуть объект ответа, который я получаю от stripe после создания подписки с помощью npm.
import Stripe from 'stripe';
const key = require("stripe")("XXXXXXXXXXXXXXXXX");
export function subscribe(cus, items) {
key.subscriptions.create({
customer: cus,
items: items
});
}
Когда я использовал fetch (POST), я делал это:
if (response.status >= 200 amp;amp; response.status < 300) {
// transaction successful - get charge ID
const ret = await response.json();
let subId = ret.id
return {"subId": subId};
}
// transaction failed - return error messages and codes
let res = await response.json();
let err = res.error.message;
let code = res.error.code;
let type = res.error.type;
return {"error": err, "code": code, "type": type};
}
Но в node я не понимаю. Мне нужно вернуть весь ответ, чтобы я мог сохранить идентификатор подписки, идентификатор клиента и т.д.
Я пытался использовать это, но не работает, даже если подписка прошла успешно
key.subscriptions.create({
customer: cus,
items: items
}, function(err, subscription) {
if (err) {
let response = err;
return{response};
}
let response = subscription;
return{response};
}
}
);
Ответ №1:
Вот пример из документации Stripe API, внутри функции обратного вызова вы получите желаемый результат
var stripe = require("stripe")("sk_test_4eC39HqLyjWDarjtT1zdp7dc");
app.post('/stripe/sub', (req, res) => {
stripe.subscriptions.create({
customer: "cus_EcmCu9HT7EZWEH",
items: [
{
plan: "emerald-company-234",
},
]
}, function(err, subscription) {
if(subscription){
res.send(subscription)
}
}
);
});
Комментарии:
1. Я знаю этот пример. Но я не могу разобраться, что нужно закодировать в функции обратного вызова, чтобы ответ был возвращен на страницу.
2. если вы используете express, то просто вызовите res.send(), чтобы отправить ответ обратно клиенту. или, если вы хотите получить ответ на HTML-странице, вы можете сослаться на это codementor.io/naeemshaikh27/node-with-express-and-ejs-du107lnk6