Запрос функции NodeJS google cloud не определен

#node.js #google-cloud-platform #stripe-payments

#node.js #google-облачная платформа #stripe-платежи

Вопрос:

Я пытаюсь написать несколько NodeJS для облачной функции Google для обработки stripe. Я довольно новичок в этом и пытаюсь следовать различным руководствам.

В настоящее время я получаю следующую ошибку:

  Detailed stack trace: ReferenceError: request is not defined
  

Я действительно не понимаю, поскольку запрос, который, как я думал, является частью пакета express. Это весь мой код. Он предназначен для получения токена из формы и создания оплаты. Даже при просмотре руководства stripe они не определяют запрос отдельно.

 var app = require('express')();
var http = require('http').Server(app);
var stripe = require('stripe')(
  "sk_);
var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

//get token from body
const token = request.body.stripeToken;

//initiate a one-off charge for a customer
exports.chargeCustomer = app.get("/", function      chargeCustomer (req,res){
stripe.charges.create({
source: token,
currency: 'usd',
amount:999
 },function(err, charge) {
  if(err) {
  return res.send(JSON.stringify(err));
  }
  res.send(JSON.stringify(charge));
  });
  });
  

Комментарии:

1. request.body это просто пример. В Google Cloud вы, вероятно, захотите прочитать cloud.google.com/functions/docs/writing/http

2. app.get() при написании этих бессерверных функций нет необходимости. Это становится задачей этой строки кода exports.createUser = functions.https.onRequest(createUser); , что также делает ненужным запрос в http-модуле.

Ответ №1:

Я не уверен, какому руководству вы следовали, поэтому не могу указать на это. Чего не хватает в вашем коде, так это первого запроса к конечной точке tokens, которая создает токен card, необходимый для последующего charges вызова.

 var stripe = require("stripe")("sk_test_XXXXXXX"); // your test key

stripe.tokens.create({
  card: {
    number: '4242424242424242',
    exp_month: 12,
    exp_year: 2020,
    cvc: '123'
  }
}, function(err, token) {
  // asynchronously called
});
  

В результате этого будет возвращен объект JSON, и вам понадобится id этого объекта. Идентификатор представляет собой строку, начинающуюся с tok_ , т.е. tok_0EDyAkDOjEFp8g5k9NxTrm2k