Order_Endpoint::handle_fail_order( WP_REST_Request $request )
Handles the request that handles failing an order with Tickets Commerce and the PayPal gateway.
Contents
Parameters
- $request
-
(WP_REST_Request) (Required) The request object.
Return
(WP_Error|WP_REST_Response) An array containing the data on success or a WP_Error instance on failure.
Source
File: src/Tickets/Commerce/Gateways/PayPal/REST/Order_Endpoint.php
public function handle_fail_order( WP_REST_Request $request ) {
$response = [
'success' => false,
];
$paypal_order_id = $request->get_param( 'order_id' );
$order = tec_tc_orders()->by_args( [
'status' => 'any',
'gateway_order_id' => $paypal_order_id,
] )->first();
$messages = $this->get_error_messages();
if ( ! $order ) {
return new WP_Error( 'tec-tc-gateway-paypal-nonexistent-order-id', null, $order );
}
$failed_reason = $request->get_param( 'failed_reason' );
$failed_status = $request->get_param( 'failed_status' );
if ( empty( $failed_status ) ) {
$failed_status = 'not-completed';
}
$status = tribe( Status_Handler::class )->get_by_slug( $failed_status );
if ( ! $status ) {
return new WP_Error( 'tec-tc-gateway-paypal-invalid-failed-status', null, [
'failed_status' => $failed_status,
'failed_reason' => $failed_reason
] );
}
/**
* @todo possible determine if we should have error code associated with the failing of this order.
*/
$updated = tribe( Order::class )->modify_status( $order->ID, $status->get_slug() );
if ( is_wp_error( $updated ) ) {
return $updated;
}
$response['success'] = true;
$response['status'] = $status->get_slug();
$response['order_id'] = $order->ID;
$response['title'] = $messages['canceled-creating-order'];
return new WP_REST_Response( $response );
}
Changelog
| Version | Description |
|---|---|
| 5.2.0 | Introduced. |