Я использую Stripe и пытаюсь отправить тестовый webhook на мой URL и базу данных, размещенную в Firebase. Когда я «отправляю тестовый веб-крючок», я получаю следующее сообщение об ошибке в консоли Stripe:
Ошибка тестового веб-крюка: 405
»добавляется. json в URI вашего запроса для использования остальных API "
Мой код является прямой копией учебника: https://github.com/GaryH21/Stripe-Webhooks-Tutorial/blob/master/functions/index.js
Вот код моего индекса. js:
const functions = require('firebase-functions');
const stripe = require("stripe")(functions.config().keys.webhooks);
const admin = require('firebase-admin')
admin.initializeApp();
const endpointSecret = functions.config().keys.signing;
exports.events = functions.https.onRequest((request, response) => {
let sig = request.headers["stripe-signature"];
try {
let event = stripe.webhooks.constructEvent(request.rawBody, sig, endpointSecret)
return admin.database().ref('/events').push(event)
.then((snapshot) => {
return response.json({ received: true, ref: snapshot.ref.toString() })
})
.catch((err) => {
console.error(err)
return response.status(500).end() // error saving to database
})
} catch (err) {
return response.status(400).end() // signing signature failed
}
})
exports.exampleDataBaseTrigger = functions.database.ref('/events/{eventId}').onCreate((snapshot, context) => {
return console.log({
eventId: context.params.eventid,
data: snapshot.val()
})
})
Единственное время в учебнике и в моем коде, которое используется. json, находится в строке: return response.json({ received: true, ref: snapshot.ref.toString() })
Должен ли я добавлять. json где-то в "запрос", например как в request.RawBody?
Это не проблема с ключами подписи, поскольку это выдает сообщение об ошибке 400, которое я уже исправил и исправил.
Я был бы рад поделиться кодом других файлов в моем приложении, но, насколько я могу судить, ни один из остальных не имеет отношения к проблеме. Большое спасибо.