无法在 razorpay [firebase_functions/internal] 内部的 firebase 云函数中创建订单 ID
Unable to create order id in firebase cloud functions for razorpay [firebase_functions/internal] internal
我正在使用 node.js 在 firebase 中编写云函数,但出现错误 [firebase_functions/internal] internal
。
我在 index.js 中的代码:-
const cors = require('cors')({origin: true});
const Razorpay = require('razorpay')
const instance = new Razorpay({
key_id: 'my id',
key_secret: 'my key'
})
exports.razorpayOrderId = functions.https.onCall(async(req, res) => {
var options = {
amount: 10000,
currency: "INR",
};
try{
instance.orders.create(options).then(order => console.log(order));
}catch(e){
console.log(e);
res.status(403).send({error: 'error'});
}
});
我的代码在 flutter 中触发函数:-
HttpsCallable callable = FirebaseFunctions.instance.httpsCallable(
'razorpayOrderId',
options: HttpsCallableOptions(timeout: Duration(seconds: 5)),
);
try {
final HttpsCallableResult result = await callable.call(
<String, dynamic>{
'message': 10000,
},
);
print(result.data['response']);
} catch (e) {
print(e);
}
您正在使用 onCall()
函数而不是 onRequest()
,因此您必须通过返回 data/promise 而不是响应来终止该函数。 onCall()
有两个参数,通常命名为 data
和 context
,它们与 Express 中的 request
和 response
不同:
exports.razorpayOrderId = functions.https.onCall(async (data, context) => {
var options = {
amount: 10000,
currency: "INR",
};
try {
const order = await instance.orders.create(options)
return {data: order}
} catch(e) {
console.log(e);
return { error: "Something went wrong" }
}
});
您可以在 documentation
中阅读更多关于差异的信息
我正在使用 node.js 在 firebase 中编写云函数,但出现错误 [firebase_functions/internal] internal
。
我在 index.js 中的代码:-
const cors = require('cors')({origin: true});
const Razorpay = require('razorpay')
const instance = new Razorpay({
key_id: 'my id',
key_secret: 'my key'
})
exports.razorpayOrderId = functions.https.onCall(async(req, res) => {
var options = {
amount: 10000,
currency: "INR",
};
try{
instance.orders.create(options).then(order => console.log(order));
}catch(e){
console.log(e);
res.status(403).send({error: 'error'});
}
});
我的代码在 flutter 中触发函数:-
HttpsCallable callable = FirebaseFunctions.instance.httpsCallable(
'razorpayOrderId',
options: HttpsCallableOptions(timeout: Duration(seconds: 5)),
);
try {
final HttpsCallableResult result = await callable.call(
<String, dynamic>{
'message': 10000,
},
);
print(result.data['response']);
} catch (e) {
print(e);
}
您正在使用 onCall()
函数而不是 onRequest()
,因此您必须通过返回 data/promise 而不是响应来终止该函数。 onCall()
有两个参数,通常命名为 data
和 context
,它们与 Express 中的 request
和 response
不同:
exports.razorpayOrderId = functions.https.onCall(async (data, context) => {
var options = {
amount: 10000,
currency: "INR",
};
try {
const order = await instance.orders.create(options)
return {data: order}
} catch(e) {
console.log(e);
return { error: "Something went wrong" }
}
});
您可以在 documentation
中阅读更多关于差异的信息