I want to make some changes if the chosen payment method is COD. On existing WC_Order i have used
($order->payment_method_title == 'Cash On Delivery' ? ... : ... );
to retrieve the title. But i would like to check against the id (cod) because the title string gets translated to different languages which doesn't make it a good solution.
Is there a way to retrieve the id on a WC_Order in woocommerce?
Go to: WooCommerce > Settings > Payments. Use the toggle under Enabled to select Check Payments. Select Set Up. You are taken to the Check Payments settings.
On the right side of the screen, you can view logs from whatever time the requests were made. Within those logs if you scroll down, you will see a SHQ_REQUEST_20xx_xxxx_xxx_xxxxxxxx. This is the Transaction ID.
The post meta key for the payment method ID is simply _payment_method
So if $order->payment_method
doesn't have the magic methods in place to get that automatically, you could retrieve the post meta using traditional WordPress
get_post_meta( $order->id, '_payment_method', true );
Update for WooCommerce 3.0
$order->get_payment_method();
If you want the title of the payment method you can do:
$order = new WC_Order( $order_id );
$payment_title = $order->get_payment_method_title();
This returns the string set in the Woocommerce > Payment methods, ex: Paypal
.
Here are some very helpful references and documentation that will help you do anything you want with WooCommerce.
Cheers.
If you need the payment gateway object itself you can use the wc_get_payment_gateway_by_order
function.
$payment_gateway = wc_get_payment_gateway_by_order( $order );
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With