首页 > 解决方案 > razorpay 订单 ID 和 razorpay 签名值在付款响应中未定义

问题描述

在测试模式下工作时,我从处理程序响应中获得了未定义的razorpayOrderIdrazorpaySignature值。所以后端支付验证失败。我已经坚持了一天多。非常感谢任何帮助。

这是我的代码片段:

const launchRazorpay = async () => {
    const order = await axios.post(`${domain}/api/subscription/pay`);

    const { amount, id: order_id, currency } = order.data;

    console.log(order);

    const options = {
      key: "rzp_test_asdfg345dfCVBN",
      amount: amount,
      currency: currency,
      name: "Razorpay",
      description: "PAY YOUR SUBSCRIPTION FEES",
      image: `${process.env.PUBLIC_URL}/assets/images/logo.png`,
      orderId: order_id,
      handler: function (response) {
        alert(response.razorpay_payment_id);// pay_asd1234
        alert(response.razorpay_order_id);// undefined
        alert(response.razorpay_signature);// undefined
        console.log("response:",response); 
/* response: {razorpay_payment_id: "pay_asd1234", org_logo: "", org_name: "Razorpay Software Private Ltd", checkout_logo: "https://cdn.razorpay.com/logo.png", custom_branding: false} */
      },
      prefill: {
        name: "abc",
        email: "abc@gmail.com",
        contact: "+911234567890",
      },
    };
    console.log("====================================");
    console.log(options.orderId === order_id); // true
    console.log(response.razorpay_order_id === order_id);// false
    console.log("====================================");
    const paymentObject = new window.Razorpay(options);
    paymentObject.open();
  };

期待来自很棒的社区成员的一些帮助。

标签: node.jsreactjspayment-gatewayrazorpay

解决方案


我也面临同样的问题。终于找到解决办法了。得到订单响应后,确保将“id”转换为字符串。

    RazorpayClient client = new RazorpayClient(_key, _secret);
    Dictionary<string, object> options = new Dictionary<string, object>();
    options.Add("amount", 50000);
    options.Add("receipt", "order_rcptid_11");
    options.Add("payment_capture", "1");
    options.Add("currency", "INR");
    Order order = client.Order.Create(options);


    var paymentObj = new
    {
        key = _key,
        amount = 50000,
        orderId = order.Attributes.id.ToString() 
        // if you are just passing order.Attributes.id, you will get nly 
        // razorpay_payment_id and undefined for order_id and signature
    };

推荐阅读