How to trigger Woocommerce payment process like checkout but it should process in the background
To trigger Woocommerce payment process, need to call “process_payment” method. Here is an example to process Woocommerce payment programmatically.
global $woocommerce; $address = array( 'first_name' => 'Test', 'last_name' => 'Test', 'company' => 'Test', 'email' => 'test@softwarehtec.com', 'phone' => '00-00-0000', 'address_1' => '0 test st', 'address_2' => '', 'city' => 'Test', 'state' => 'NY', 'postcode' => '10010', 'country' => 'US' ); $order = wc_create_order(); $order->add_product( get_product('1'), 1); $order->set_address( $address, 'billing' ); $order->set_address( $address, 'shipping' ); $order->calculate_totals(); update_post_meta( $order->id, '_payment_method', 'paypal' ); update_post_meta( $order->id, '_payment_method_title', 'PayPal' ); WC()->session->order_awaiting_payment = $order->id; $available_gateways = WC()->payment_gateways->get_available_payment_gateways(); $result = $available_gateways[ 'paypal' ]->process_payment( $order->id ); if ( $result['result'] == 'success' ) { $result = apply_filters( 'woocommerce_payment_successful_result', $result, $order->id ); wp_redirect( $result['redirect'] ); exit; }