Search code examples
magento2razorpay

Magento 2 razorpay plugin version - 3.7.5 "Razorpay Error: Razorpay Error: Razorpay paymentId missing for payment verification..."


I am using Magento 2 api to create order. When COD is used, it works fine but in case of Razorpay it gives error:

Razorpay Error: Razorpay Error: Razorpay paymentId missing for payment verification...

Magento 2 razorpay plugin version used - 3.7.5


Solution

  • I also face similar issue and found the root cause in the plugin. Sharing the changes I made in the Razorpay plugin file to get it worked.

    Magento 2 API where I am getting issue

    POST : '/guest-carts/' . $cart_id . '/order';

    Solution Need to pass additional_data param. Following parameter, I passed to API

    'additional_data' => array(
       "razorpay_payment_id"=> $paymethodDetails['razorpay_payment_id'],
       "rzp_payment_id"=> $paymethodDetails['razorpay_payment_id'],
       "razorpay_signature"=> $paymethodDetails['razorpay_signature'],
       "rzp_signature"=> $paymethodDetails['razorpay_signature'],
       "razorpay_order_id"=> $paymethodDetails['razorpay_order_id'],
       "rzp_order_id"=> $paymethodDetails['razorpay_order_id'],
       "rzp_order_amount"=> $paymethodDetails['rzp_order_amount']),
    

    You will find some repetitions of data with different keys.

    After this, I got the following error from the plugin file

    Undefined variable: rzp_order_id in /app/code/Razorpay/Magento/Model/PaymentMethod.php on line 371

    I made the following change in file PaymentMethod.php on line 371

     //Original 
     $rzp_order_id = $rzp_order_id; 
    
     //Updated
     $rzp_order_id = $request['paymentMethod']['additional_data']['rzp_order_id']
    

    Post that I got another error on line 375

    Undefined variable: rzpOrderAmount in /app/code/Razorpay/Magento/Model/PaymentMethod.php on line 375

    Changed that to

     //Updated
     $rzpOrderAmount = $request['paymentMethod']['additional_data']['rzp_order_amount'];
    

    After these changes, I was able to successfully place the order.