无法在 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() 有两个参数,通常命名为 datacontext,它们与 Express 中的 requestresponse 不同:

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

中阅读更多关于差异的信息