无法在firebase中部署函数
我正在尝试将Razorpay集成到我的nuxt应用程序中。 为此,我使用npm I razorpay安装了razorpay依赖项 我的index.js文件以无法在firebase中部署函数,firebase,google-cloud-platform,google-cloud-functions,nuxt.js,razorpay,Firebase,Google Cloud Platform,Google Cloud Functions,Nuxt.js,Razorpay,我正在尝试将Razorpay集成到我的nuxt应用程序中。 为此,我使用npm I razorpay安装了razorpay依赖项 我的index.js文件以 const functions = require('firebase-functions') const Razorpay = require('razorpay') const admin = require('firebase-admin') const crypto = require('crypto') 但是在编写func
const functions = require('firebase-functions')
const Razorpay = require('razorpay')
const admin = require('firebase-admin')
const crypto = require('crypto')
但是在编写functionbasic helloWorld函数并部署之后,它给了我一个无法部署函数的错误。
但当我在下面一行评论时,helloWorld函数成功部署
//const Razorpay = require('razorpay')
我再一次在上面一行取消注释,它仍然给我无法部署的错误
版本信息
节点v12.18.3
Firebase v8.16.2
我的依赖关系
请注意,要集成Razorpray,您需要在Firebase Cloud函数中添加以下内容:
const Razorpay = require("razorpay");
var key_id = "YOUR_RAZORPAY_KEY_ID";
var key_secret = "YOUR_RAZORPAY_KEY_SECRET";
var instance = new Razorpay({
key_id: key_id,
key_secret: key_secret
});
您需要按照以下步骤进行集成:
注册razorpay并从中获取您的密钥Id和密钥机密
在前端集成razorpay的结帐模式,以接受用户的付款详细信息。
在后端实现Order API。
获取授权付款。
为了更好地理解,请查看下面的内容,这是一个代码示例
**********更新**********
关于Cors错误,请确保:
进口Cors
调用每个函数顶部的cors模块,如下所示:
你能分享你得到的错误吗?它现在给了我cors错误。你导入了cors如下吗?const cors=require'cors'{origin:true};是,因为导入的常量cors=require'cors'{origin:true}。你能帮我把cors添加到我的代码中吗。这是我的代码。您能分享一下它给您的关于Cors的错误吗?付款:1从源站获取的访问已被Cors策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源站”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”以获取禁用cors的资源。cors错误最终通过将functions.https.onRequest更改为functions.https.onCall来解决。
const Razorpay = require("razorpay");
var key_id = "YOUR_RAZORPAY_KEY_ID";
var key_secret = "YOUR_RAZORPAY_KEY_SECRET";
var instance = new Razorpay({
key_id: key_id,
key_secret: key_secret
});
const cors = require('cors')({origin: true});
exports.createPayment = functions.https.onRequest(async (req, res) => {
cors(req, res, () => {
// your function body here - use the provided req and res from cors
})
});
const functions = require('firebase-functions')
const Razorpay = require('razorpay')
const admin = require('firebase-admin')
const crypto = require('crypto')
const cors = require('cors')({ origin: true })
admin.initializeApp()
//Function to Create Payment
exports.createPayment = functions.https.onRequest(async (req, res) => {
cors(req, res, () => {
admin
.firestore()
.collection('payments')
.add(req.body.data)
.then((payment) => {
var instance = new Razorpay({
key_id: 'rzp_test_my_key',
key_secret: 'my_secret_key',
})
var options = {
amount: req.body.data.amount * 100,
currency: 'INR',
receipt: payment.id,
payment_capture: 1,
}
instance.orders.create(options, function (err, order) {
res.status(201).send({ data: order })
})
})
})
})
// Function to Verify Payment
exports.verifyPayment = functions.https.onRequest(async (req, res) => {
cors(req, res, () => {
const order = req.body.data
const text = order.razorpay_order_id + '|' + order.razorpay_payment_id
var signature = crypto
.createHmac('sha256', secret_key)
.update(text)
.digest('hex')
if (signature === order.razorpay_signature) {
res.status(201).send({ data: { message: 'Successfull Payment' } })
} else {
res.status(400).send({ data: { message: 'Signature mismatch' } })
}
})
})