The id provided does not exist razorpay in nodejs

17,934

Solution 1

if you are using test mode then just remove order_id parameter from json object.

Solution 2

I also faced this error a week ago. This error arrived when we changed the test keys to the production keys for final payment to work.

So I faced this issue The id provided does not exist because of the mismatch of Razorpay Keys on the frontend and backend side(node.js side.)

So make sure you have the same client key and secret of the production environment on both backend and frontend side.

Let me know in comments if it still is not resolved.

Solution 3

  1. For Test Remove the OrderId from your options json data.
  2. For Live mode Pass the autogenerated Orderid From the user Control.

Solution 4

Removing order_id is not good practice we should follow documentation. To get order_id in React you have to first create a order in your backend eg(node.js). follow this steps to get order_id from Razorpay.

Step - 1

var instance = new Razorpay({  key_id: 'YOUR_KEY_ID',  key_secret: 'YOUR_KEY_SECRET'})

this will initiate new Razorpay object.

Step - 2

MyOrder = instance.orders.create({amount, currency, receipt, notes})

this will create an order for you and than you have access to order_id check your console for more options to get and finally you have to pass your order_id in your case you have to pass order_id in options.

Note : You can access order id like this MyOrder.id

for more information check official doc. https://razorpay.com/docs/payment-gateway/server-integration/nodejs/

you can find Razorpay SDKs for various Platform here https://razorpay.com/integrations/

Share:
17,934
zulqarnain
Author by

zulqarnain

Updated on June 05, 2022

Comments

  • zulqarnain
    zulqarnain about 2 years

    i'm implementing razorpay payment gateway in my React.js app with backend nodejs.

    here frontend.jsx

    razorpayHandler = () =>{
            const payment_amount  = this.props.TotalPrice;
            const backend_url = 'https://25234399bb.ngrok.io';
            const self = this;
            const options = {
            key: config.RAZOR_PAY_KEY,
            amount: payment_amount * 100,
            name: 'StanPlus',
            description: 'pay your ambulance fare',
            handler(response) {
                const paymentId = response.razorpay_payment_id;
                const url =  backend_url+'/razorpay/'+paymentId+'/'+payment_amount+'/'+self.id;
                console.log(paymentId)
                // Using my server endpoints to capture the payment
                fetch(url, {
                method: 'get',
                headers: {
                    "Content-type": "application/x-www-form-urlencoded; charset=UTF-8"
                }
                })
                .then(resp =>  resp.json())
                .then(function (data) {
                        console.log(data)
                })
                .catch(function (error) {
                    console.log('Request failed', error);
                });
            },
            theme: {
                color: '#40A9FF',
            },
            };
            const rzp1 = new window.Razorpay(options);
    
            rzp1.open();
        }
    

    backend.js(nodejs)

    var express = require('express');
    var router = express.Router();
    var config = require('../config');
    
    const Razorpay = require('razorpay');
    const instance = new Razorpay({
      key_id: config.razorpay_live_key,
      key_secret: config.razorpay_live_secret,
    });
    
    router.get('/:payment_id/:amount/:BID',function(req,res,next){
        const {payment_id } = req.params;
        const {BID} = req.params;
        const amount = Number(req.params.amount*100);
        instance.payments.capture(payment_id, amount).then((data) => {
            data.Bid = BID;
            res.json(data);
        }).catch((error) => {
            res.json(error);
        });
    })
    module.exports = router;
    

    it showing me error

    "statusCode":400,"error":{"code":"BAD_REQUEST_ERROR","description":"The id provided does not exist"

    but if the same code if do process using test key its getting successfully completed but it is not working with live api.
    here i'm passing an extra parameter to the backend which required for us but if removed that parameter then also it is not working.but with parameter it is working with test api.
    when we send request to backend it is generating id and sending to backend also but still it showing The id provided does not exist.

  • mohammed_ayaz
    mohammed_ayaz about 4 years
    it helps, in test mode. but I think you are passing your internal order id and not the razorpay order id. If you pass correct razorpay id then you don't need to remove the order id even in test mode.
  • Avinash Maurya
    Avinash Maurya about 4 years
    I have verified my keys both are same, but still get this error.
  • Pran Kumar Sarkar
    Pran Kumar Sarkar almost 4 years
    @mohammed_ayaz Can you please help to find the correct id? order = client.order.create(......) So I have passed order['id'] as order id. Tell me if this id is not the one in test mode.
  • mohammed_ayaz
    mohammed_ayaz almost 4 years
    @PranKumarSarkar, you can know if you are in test mode if razorpay doesn't ask you credentials of you internet banking(if you choose it). You will get two buttons like Success or Failure. You have the choice to make this transaction Successful or Failure
  • Pran Kumar Sarkar
    Pran Kumar Sarkar almost 4 years
    @mohammed_ayaz Yes, I am in test mode. From my understanding this error is shown because I am passing order_id in test mode. In live mode I have to pass order_id and it will not show any error. Please correct me if I am wrong.
  • mohammed_ayaz
    mohammed_ayaz almost 4 years
    @PranKumarSarkar Removing order_id will work. but that is not the correct way. You will have to obtain Test order id from Razorpay. Removing Order id is like a trick to make it work but it is not the correct way. You will run into issues later.
  • Pran Kumar Sarkar
    Pran Kumar Sarkar almost 4 years
    @mohammed_ayaz How to find test order id from razorpay? Is there a separate method to obtain that?
  • mohammed_ayaz
    mohammed_ayaz almost 4 years
    @PranKumarSarkar Actually, my company provided it. I don't remember. I think it was the api key.
  • saibbyweb
    saibbyweb almost 4 years
    this was exactly my issue. had forgotten to update the key id on the frontend.
  • Rahul
    Rahul almost 4 years
    I am facing this issue... I checked key_id and key_secret in front end and backend both are exactly same... still getting this error :( please help