Загрузка функции stripeCharge в облачную функцию Firebase не работает - PullRequest
0 голосов
/ 23 февраля 2019

Я попытался развернуть эту функцию в Firebase

Кроме того, я использую Cloud Firestore в качестве базы данных

const stripe = require("stripe")("STRIPE_API_KEY");
exports.stripeCharge = functions.firestore
  .document("/payments/{userId}/{paymentId}")
  .onWrite(event => {
    const payment = event.data.val();
    const userId = event.params.userId;
    const paymentId = event.params.paymentId;

    // checks if payment exists or if it has already been charged
    if (!payment || payment.charge) return;

    return admin
      .firestore()
      .doc(`/users/${userId}`)
      .once("value")
      .then(snapshot => {
        return snapshot.val();
      })
      .then(customer => {
        const amount = payment.amount;
        const idempotency_key = paymentId; // prevent duplicate charges
        const source = payment.token.id;
        const currency = "eur";
        const charge = { amount, currency, source };

        return stripe.charges.create(charge, { idempotency_key });
      })

      .then(charge => {
        admin
          .firestore()
          .doc(`/payments/${userId}/${paymentId}/charge`)
          .set(charge),
          { merge: true };
      });
  });

Я следовал этому руководству

Обработка платежей через чекис функциями Firebase Cloud - Часть 2 YouTube · 14 000+ просмотров · 2017/07/11 · по Fireship - AngularFirebase

Когда я запускаю firebase deploy --only functions

Это появляется в терминале

!  functions: failed to create function stripeCharge
HTTP Error: 400, The request has errors


Functions deploy had errors with the following functions:
        stripeCharge


To try redeploying those functions, run:
    firebase deploy --only functions:stripeCharge


To continue deploying other features (such as database), run:
    firebase deploy --except functions

Error: Functions did not deploy properly.

И я получаю эту ошибку в журнале Firebase Ошибка журнала Firebase

Кто-нибудь знает, что может быть не так?

1 Ответ

0 голосов
/ 23 февраля 2019

По крайней мере, одна из ваших проблем заключается в том, что вы используете синтаксис Firebase SDK для облачных функций для версии <</strong> 1.0.0, а ваш package.json показывает, что вы используете версию с> = 2.2.0.

Вы должны использовать новый синтаксис:

exports.stripeCharge = functions.firestore
  .document("/payments/{userId}/{paymentId}")
  .onWrite((change, context) => {

    const payment = change.after.data();
    const userId = event.params.userId;
    const paymentId = event.params.paymentId;
    ...
});
...