Order_Endpoint::handle_update_order( WP_REST_Request $request )
Handles the request that updates 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_update_order( WP_REST_Request $request ) {
$response = [
'success' => false,
];
$messages = $this->get_error_messages();
$paypal_order_id = $request->get_param( 'order_id' );
$order = tec_tc_orders()->by_args( [
'status' => tribe( Pending::class )->get_wp_slug(),
'gateway_order_id' => $paypal_order_id,
] )->first();
if ( ! $order ) {
return new WP_Error( 'tec-tc-gateway-paypal-nonexistent-order-id', $messages['nonexistent-order-id'], $order );
}
$recheck = $request->get_param( 'recheck' );
if ( $recheck ) {
return $this->handle_recheck_order( $paypal_order_id, $order );
}
$payer_id = $request->get_param( 'payer_id' );
$paypal_capture_response = tribe( Client::class )->capture_order( $paypal_order_id, $payer_id );
$debug_header = tribe( Client::class )->get_debug_header();
if ( ! empty( $debug_header ) ) {
$paypal_capture_response['debug_id'] = $debug_header;
}
if (
'UNPROCESSABLE_ENTITY' === Arr::get( $paypal_capture_response, 'name' )
) {
// Flag the order as Denied.
tribe( Order::class )->modify_status( $order->ID, Denied::SLUG, [
'gateway_payload' => $paypal_capture_response,
] );
return new WP_Error( 'tec-tc-gateway-paypal-failed-capture', $messages['failed-capture'], $paypal_capture_response );
}
$response['success'] = true;
$response['order_id'] = $paypal_order_id;
return new WP_REST_Response( $response );
}
Changelog
| Version | Description |
|---|---|
| 5.1.9 | Introduced. |