Automattic\WooCommerce\StoreApi\Routes\V1

Checkout::process_customer()privateWC 1.0

Order processing relating to customer account.

Creates a customer account as needed (based on request & store settings) and updates the order with the new customer ID. Updates the order with user details (e.g. address).

Метод класса: Checkout{}

Хуков нет.

Возвращает

null. Ничего.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->process_customer( $request );
$request(\WP_REST_Request) (обязательный)
Request object.

Код Checkout::process_customer() WC 7.3.0

private function process_customer( \WP_REST_Request $request ) {
	try {
		if ( $this->should_create_customer_account( $request ) ) {
			$customer_id = $this->create_customer_account(
				$request['billing_address']['email'],
				$request['billing_address']['first_name'],
				$request['billing_address']['last_name']
			);
			// Log the customer in.
			wc_set_customer_auth_cookie( $customer_id );

			// Associate customer with the order.
			$this->order->set_customer_id( $customer_id );
			$this->order->save();
		}
	} catch ( \Exception $error ) {
		switch ( $error->getMessage() ) {
			case 'registration-error-invalid-email':
				throw new RouteException(
					'registration-error-invalid-email',
					__( 'Please provide a valid email address.', 'woocommerce' ),
					400
				);
			case 'registration-error-email-exists':
				throw new RouteException(
					'registration-error-email-exists',
					__( 'An account is already registered with your email address. Please log in before proceeding.', 'woocommerce' ),
					400
				);
		}
	}

	// Persist customer address data to account.
	$this->order_controller->sync_customer_data_with_order( $this->order );
}