I need to reduce fraud on my WooCommerce site. Most of the time someone writes a robot which uses different stolen credit cards over and over again and will use the person's billing info, but ship the products purchased with the stolen money to somewhere else. So, I want to place all orders On Hold if the billing information does not match the shipping information.
Here is the function I have so far inside my functions.php file that is not working. Can anyone point out where I am going wrong?
add_action( 'woocommerce_thankyou', 'woocommerce_billing_shipping_address_match', 10, 1);
function woocommerce_billing_shipping_address_match( $order_id ) {
if ( ! $order_id ) {
return;
}
// Get an instance of the WC_Customer Object from the user ID
$customer = new WC_Customer( $user_id );
// Customer billing information details (from account)
// if this doesn't work, try removing the 2nd equals sign in each line below
$billing_first_name == $customer->get_billing_first_name();
$billing_last_name == $customer->get_billing_last_name();
$billing_company == $customer->get_billing_company();
$billing_address_1 == $customer->get_billing_address_1();
$billing_address_2 == $customer->get_billing_address_2();
$billing_city == $customer->get_billing_city();
$billing_state == $customer->get_billing_state();
$billing_postcode == $customer->get_billing_postcode();
$billing_country == $customer->get_billing_country();
// Customer shipping information details (from account)
$shipping_first_name == $customer->get_shipping_first_name();
$shipping_last_name == $customer->get_shipping_last_name();
$shipping_company == $customer->get_shipping_company();
$shipping_address_1 == $customer->get_shipping_address_1();
$shipping_address_2 == $customer->get_shipping_address_2();
$shipping_city == $customer->get_shipping_city();
$shipping_state == $customer->get_shipping_state();
$shipping_postcode == $customer->get_shipping_postcode();
$shipping_country == $customer->get_shipping_country();
$order = wc_get_order( $order_id );
// The text for the note
$note_1 = __("This was a test order");
// Add the note
$order->add_order_note( $note_1 );
// check if all the billing info matches all of the shipping info and place on hold if not
if( $billing_first_name !== $shipping_first_name ||
$billing_last_name !== $shipping_last_name ||
$billing_address_1 !== $shipping_address_1 ||
$billing_address_2 !== $shipping_address_2 ||
$billing_city !== $shipping_city ||
$billing_state !== $shipping_state ||
$billing_postcode !== $shipping_postcode ||
$billing_country !== $shipping_country) {
// The text for the note
$note_2 = __("The billing and shipping info did not match");
// Add the note
$order->add_order_note( $note_2 );
// Place the order on hold
$order->update_status( 'on-hold' );
}
}