Stripe / Firebase paymentIntent не определено - PullRequest
0 голосов
/ 20 апреля 2020

Я создал простое приложение с оплатой Gpay / картой с флаттером и пожарной базой. Но теперь в функции firebase я получил эту ошибку: paymentIntent не определен. Может кто-нибудь дать совет, как с этим бороться?

Это моя функция

    const functions = require('firebase-functions');


const stripe = require('stripe')('sk_test_');

exports.StripePI = functions.https.onRequest(async (req, res) => {
  const fee = (req.query.amount/100) | 0;
  const stripeVendorAccount = 'acct_';

  stripe.paymentIntents.create({
                amount: req.query.amount,
                currency: req.query.currency,
                payment_method: req.query.paym,
                confirmation_method: 'automatic',
                confirm: true,
                payment_method_types: ['card'],
                //application_fee_amount: fee,
                description: req.query.description,
              }, {
                stripeAccount: stripeVendorAccount
              },
              function(err, paymentIntent) {
                // asynchronously called
                const paymentIntentReference = paymentIntent;

if (err !== null){
  console.log('Error payment Intent: ', err);
  res.send('error');
} else {
  console.log('Created paymentintent: ', paymentIntent);
  res.json({
    paymentIntent: paymentIntent, 
    stripeAccount: stripeVendorAccount});
}});

    console.log(paymentIntent.status);


});

1 Ответ

1 голос
/ 20 апреля 2020

Ваш окончательный console.log(paymentIntent.status); определен вне блока, где объявлено paymentIntent, поэтому он не может достичь его.

Чтобы исправить это, переместите console.log(paymentIntent.status); в блок над ним:

exports.StripePI = functions.https.onRequest(async (req, res) => {
    const fee = (req.query.amount / 100) | 0;
    const stripeVendorAccount = 'acct_';

    stripe.paymentIntents.create({
            amount: req.query.amount,
            currency: req.query.currency,
            payment_method: req.query.paym,
            confirmation_method: 'automatic',
            confirm: true,
            payment_method_types: ['card'],
            //application_fee_amount: fee,
            description: req.query.description,
        }, {
            stripeAccount: stripeVendorAccount
        },
        function(err, paymentIntent) {
            // asynchronously called
            const paymentIntentReference = paymentIntent;

            if (err !== null) {
                console.log('Error payment Intent: ', err);
                res.send('error');
            } else {
                console.log('Created paymentintent: ', paymentIntent);
                res.json({
                    paymentIntent: paymentIntent,
                    stripeAccount: stripeVendorAccount
                });
            }
            console.log(paymentIntent.status);
        });
});

Как вы, возможно, видите выше, мне легче поймать такие проблемы, как если код постоянно с отступом. Если вам трудно поддерживать согласованный стиль, подумайте о том, чтобы использовать такой инструмент, как Prettier или (как я делал выше) beautifier.io .

...