If you have access to an order object in WooCommerce then it is possible to call the get_payment_method()
function to see what payment method was used for the order. You could use use the call in an if statement to run some logic if a particular payment method was used. Here’s some code to illustrate what I’m talking about
$order_id = 16; $order = wc_get_order( $order_id ); if( 'cod' == $order->get_payment_method() ) { //run some logic here if the order was paid using the cash on delivery method }
But how do you know what payment method the value “cod” refers to? There are a couple of methods you could use to find out the answer to this question. Let’s look at them both now.
Click here to enroll in our Free WooCommerce Coding Course
Via the Admin Interface
If you go to the admin area of the WooCommerce site you are working on and choose WooCommerce -> Settings from the left hand menu then the “Payments” tab you’ll see a screen that lists all of the payment gateways set up for the store.
If you hover over any of the links you can see the id of the payment method show in the link that appears towards the bottom left of the screen, the id is the text that follows “section=”.
The image below shows that the id “cod” is linked to the “Cash on delivery” payment method
Via Code
You can also use code to list all of the payment methods and their ids, here’s the code that will output the details to the screen
echo "<h2>Payment Gateways</h2>"; foreach ( WC()->payment_gateways->payment_gateways() as $payment_gateway_id => $payment_gateway_item ) { echo "Payment gateway '" . $payment_gateway_item->title . "' has id '" .$payment_gateway_id . "'<br>"; } echo "<h2>Available Payment Gateways</h2>"; foreach ( WC()->payment_gateways->get_available_payment_gateways() as $payment_gateway_id => $payment_gateway_item ) { echo "Payment gateway '" . $payment_gateway_item->title . "' has id '" .$payment_gateway_id . "'<br>"; }
As you can see from the code above the payment gateway data can be accessed via the global WC()
object. There are two different functions that return payment gateway data
payment_gateways()
which returns all of the payment gateways that the store has access toget_available_payment_gateways()
which only returns the available payment gateways
In the code above a foreach
loop is used to output the ids and titles of each payment method, the image below shows the output from the code
How to get the Title of the Payment method used for an Order
You can do this using the get_payment_method_title()
function, here’s an example
$order_id = 375; $order = wc_get_order( $order_id ); echo 'The payment method title is - ' . $order->get_payment_method_title() . '<br>';
Final Thoughts
If you want to check what payment method was used for an order use the get_payment_method()
and get_payment_method_title()
functions.
You can also use the functions in if
statements to run logic depending on what payment method was used (as an example you may want to add a custom message to the thank you page) If you’re not sure of the value of the id or title of apayment method then you can check on the admin settings screen for payment gateways or loop through the WC()->payment_gateways->payment_gateways()
collection.
Click here for more details about the "Learning WooCommerce Development By Example" book
As always if you have nay questions or queries about this article then please don’t hesitate to let me know in the comments.