Automattic\WooCommerce\StoreApi\Routes\V1
CartRemoveCoupon::get_route_post_response
Handle the request and return a valid response for this endpoint.
Method of the class: CartRemoveCoupon{}
No Hooks.
Returns
\WP_REST_Response.
Usage
// protected - for code of main (parent) or child class $result = $this->get_route_post_response( $request );
- $request(WP_REST_Request) (required)
- Request object.
CartRemoveCoupon::get_route_post_response() CartRemoveCoupon::get route post response code WC 10.3.6
protected function get_route_post_response( \WP_REST_Request $request ) {
if ( ! wc_coupons_enabled() ) {
throw new RouteException( 'woocommerce_rest_cart_coupon_disabled', esc_html__( 'Coupons are disabled.', 'woocommerce' ), 404 );
}
$cart = $this->cart_controller->get_cart_instance();
$coupon_code = wc_format_coupon_code( $request['code'] );
$coupon = new \WC_Coupon( $coupon_code );
$discounts = new \WC_Discounts( $cart );
if ( ! wc_is_same_coupon( $coupon->get_code(), $coupon_code ) || is_wp_error( $discounts->is_coupon_valid( $coupon ) ) ) {
throw new RouteException( 'woocommerce_rest_cart_coupon_error', esc_html__( 'Invalid coupon code.', 'woocommerce' ), 400 );
}
if ( ! $this->cart_controller->has_coupon( $coupon_code ) ) {
throw new RouteException( 'woocommerce_rest_cart_coupon_invalid_code', esc_html__( 'Coupon cannot be removed because it is not already applied to the cart.', 'woocommerce' ), 409 );
}
$cart = $this->cart_controller->get_cart_instance();
$cart->remove_coupon( $coupon_code );
return rest_ensure_response( $this->schema->get_item_response( $cart ) );
}