我正在集成Razorpay来处理付款,并且我正在使用node-JS sdk。
请参阅此链接以供参考:https://github.com/razorpay/razorpay-node/blob/master/examples/index.js。
现在,我正在尝试捕获已使用我的 Firebase 云函数授权的付款。请参阅我上面共享的链接中的第 32 行。
让我向您展示我编写的云函数:
exports.CapturePayment = functions.database.ref('payment_id').onWrite((event) => {
const payment_id = event.data.val();
// Capture a particular payment
rzp.payments.capture(payment_id, 1000).then((data) => {
event.data.ref.child('status').set("paid");
// success
}).catch((error) => {
// error
});
});
当我运行它时,我收到此错误:
https://i.stack.imgur.com/abKoe.jpg
我附上了我的 razorpay.js 文件和 index.js 文件的屏幕截图。有人可以指出我的错误并帮助我使其起作用吗?
剃刀付.js:https://i.stack.imgur.com/SbEYl.jpg 索引.js: https://i.stack.imgur.com/rEEh3.jpg
PS:我对Node很陌生.JS所以我认为这可能是语法错误。
更新 1: 我将环境变量声明更改为">
let rzp = new Razorpay({
key_id: process.env.KEY_ID || "rzp_test_T1334114312" , // your `KEY_ID`
key_secret: process.env.KEY_SECRET || "K7W234fdsCt4dE12341" // your `KEY_SECRET`
})`
我仍然收到同样的错误。
你需要用key_id
和key_secret
初始化RazorPay SDK。您可以设置环境变量或直接传递值,如下所示。
process.env
是环境变量,则需要对其进行配置。您不只是在代码中替换它们(我在屏幕截图中看到(。
let rzp = new Razorpay({
key_id: process.env.KEY_ID || "<your actual key id>",
key_secret: process.env.KEY_SECRET || "<your actual key secret>"
})
这就是为什么它会抛出一个错误,即缺少key_id。
事实证明,这是声明环境变量时的简单语法错误。我只需要声明如下:
process.env.KEY_ID = '随机字符串1'; process.env.KEY_SECRET = '随机字符串2';
它有效!