Automattic\WooCommerce\StoreApi\Routes\V1
Checkout::get_request_payment_method
Gets the chosen payment method from the request.
Method of the class: Checkout{}
No Hooks.
Returns
\WC_Payment_Gateway|null.
Usage
// private - for code of main (parent) class only $result = $this->get_request_payment_method( $request );
- $request(WP_REST_Request) (required)
- Request object.
Checkout::get_request_payment_method() Checkout::get request payment method code WC 10.6.2
private function get_request_payment_method( \WP_REST_Request $request ) {
$available_gateways = WC()->payment_gateways->get_available_payment_gateways();
$request_payment_method = wc_clean( wp_unslash( $request['payment_method'] ?? '' ) );
// For PUT requests, the order never requires payment, only POST does.
$requires_payment_method = $this->order->needs_payment() && 'POST' === $request->get_method();
if ( empty( $request_payment_method ) ) {
if ( $requires_payment_method ) {
throw new RouteException(
'woocommerce_rest_checkout_missing_payment_method',
esc_html__( 'No payment method provided.', 'woocommerce' ),
400
);
}
return null;
}
if ( ! isset( $available_gateways[ $request_payment_method ] ) ) {
$all_payment_gateways = WC()->payment_gateways->payment_gateways();
$gateway_title = isset( $all_payment_gateways[ $request_payment_method ] ) ? $all_payment_gateways[ $request_payment_method ]->get_title() : $request_payment_method;
throw new RouteException(
'woocommerce_rest_checkout_payment_method_disabled',
sprintf(
// Translators: %s Payment method ID.
esc_html__( '%s is not available for this order—please choose a different payment method', 'woocommerce' ),
esc_html( $gateway_title )
),
400
);
}
return $available_gateways[ $request_payment_method ];
}