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
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.