为什么 firebase-admin sdk 拒绝这里的承诺?

问题描述 投票:0回答:0

一切顺利,但是当它进入 fullfillOrder func 时给我 400 响应。 我试图更好地搜索 google firebase 语法,但文档没有给我太多信息,在另一个网页上它是 firebase 的订购版本,所以我又遇到了另一个错误。

import { buffer } from 'micro'
import { initializeApp, getApps, getApp } from 'firebase-admin/app'
import { credential } from 'firebase-admin'

const serviceAccount = require('../../permissions.json')

const app = !getApps().length
  ? initializeApp({
      credentials: credential.cert(serviceAccount),
    })
  : getApp()

const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY)

const endpointSecret = process.env.STRIPE_SIGNING_SECRET //webhook listener key

const fullfillOrder = async (session) => {
// this func gives an error
  return app
    .firestore()
    .collection('users')
    .doc(session.metadata.email)
    .collection('orders')
    .doc(session.id)
    .set({
      amount: session.amount_total / 100, //coz of subcurrency
      amount_shipping: session.total_details.amount_shipping / 100,
      images: JSON.parse(session.metadata.images),
      timestamp: admin.firestore().FieldValue.serverTimestamp(),
    })
}

export default async function webhook(req, res) {
  if (req.method === 'POST') {
    const reqBuffer = await buffer(req)
    const payload = reqBuffer.toString()
    const sig = req.headers['stripe-signature']

let event

try {
  event = stripe.webhooks.constructEvent(payload, sig, endpointSecret)
} catch (err) {
  console.log(err.message)
  return res.status(400).send(`Error : ${err.message}`)
}

if (event.type === 'checkout.session.completed') {
  const session = event.data.object

  return fullfillOrder(session)
    .then(() => res.status(200))
    .catch((err) => res.status(400).send(`Webhook error ${err.message}`))
    }
  }
}
node.js firebase next.js stripe-payments firebase-admin
© www.soinside.com 2019 - 2024. All rights reserved.