mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 12:25:15 +08:00
82 lines
1.6 KiB
PHP
82 lines
1.6 KiB
PHP
<?php
|
|
/**
|
|
* The endpoint for starting webhooks simulation.
|
|
*
|
|
* @package WooCommerce\PayPalCommerce\Webhooks\Endpoint
|
|
*/
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace WooCommerce\PayPalCommerce\Webhooks\Endpoint;
|
|
|
|
use Exception;
|
|
use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData;
|
|
use WooCommerce\PayPalCommerce\Webhooks\Status\WebhookSimulation;
|
|
|
|
/**
|
|
* Class SimulateEndpoint
|
|
*/
|
|
class SimulateEndpoint {
|
|
|
|
const ENDPOINT = 'ppc-webhooks-simulate';
|
|
|
|
/**
|
|
* The simulation handler.
|
|
*
|
|
* @var WebhookSimulation
|
|
*/
|
|
private $simulation;
|
|
|
|
/**
|
|
* The Request Data helper object.
|
|
*
|
|
* @var RequestData
|
|
*/
|
|
private $request_data;
|
|
|
|
/**
|
|
* SimulateEndpoint constructor.
|
|
*
|
|
* @param WebhookSimulation $simulation The simulation handler.
|
|
* @param RequestData $request_data The Request Data helper object.
|
|
*/
|
|
public function __construct(
|
|
WebhookSimulation $simulation,
|
|
RequestData $request_data
|
|
) {
|
|
$this->simulation = $simulation;
|
|
$this->request_data = $request_data;
|
|
}
|
|
|
|
/**
|
|
* Returns the nonce for the endpoint.
|
|
*
|
|
* @return string
|
|
*/
|
|
public static function nonce(): string {
|
|
return self::ENDPOINT;
|
|
}
|
|
|
|
/**
|
|
* Handles the incoming request.
|
|
*/
|
|
public function handle_request() {
|
|
if ( ! current_user_can( 'manage_woocommerce' ) ) {
|
|
wp_send_json_error( 'Not admin.', 403 );
|
|
return false;
|
|
}
|
|
|
|
try {
|
|
// Validate nonce.
|
|
$this->request_data->read_request( $this->nonce() );
|
|
|
|
$this->simulation->start();
|
|
|
|
wp_send_json_success();
|
|
return true;
|
|
} catch ( Exception $error ) {
|
|
wp_send_json_error( $error->getMessage(), 500 );
|
|
return false;
|
|
}
|
|
}
|
|
}
|