0

I had created a custom module to update order state and payment state. In my controller I used the following code to change the order state of order.

 $order = \Drupal\commerce_order\Entity\Order::load($order_id);

 if ($payment_status === 'payment.captured'){
   $order->set('state', 'completed');
   $order->save();
 }
 else {
   $order->set('state', 'pending');
   $order->save();
 }

How can I now change the payment state of a payment which comes inside that order?

This is the screenshot of my payment. Now the payment state is pending. I want to change it to something else by using code, for example completed.

This is the screenshot of my payment. Now the payment state is pending , I want to change it to something else by using code,for example completed

2

Load up the payments:

$payments = \Drupal\commerce_order\Payment\Payment::loadByProperties(['order_id' => $order->id()]);

Then loop through and save what you want to:

foreach ($payments as $payment) {
  $payment->setState('completed')->save();
}
  • The website encountered an unexpected error. Please try again later. Error: Class 'Drupal\commerce_order\Payment\Payment' not found in Drupal\razorpay\Controller\RazorpayController->hook() (line 36 of modules/custom/razorpay/src/Controller/RazorpayController.php). – Rifas Ali Aug 8 '18 at 11:11

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.