blob: 3dabb689c658f8536460699bf1ecfa1f9f5b9878 [file] [log] [blame]
<?php
/***
* Class WC_REST_Stripe_Tokens_Controller
*/
defined( 'ABSPATH' ) || exit;
/**
* REST controller for tokens.
*/
class WC_REST_Stripe_Tokens_Controller extends WC_Stripe_REST_Base_Controller {
/**
* Endpoint path.
*/
protected $rest_base = 'wc_stripe/tokens';
/**
* Register REST API routes for Stripe tokens.
*/
public function register_routes() {
register_rest_route(
$this->namespace,
// For more info on Stripe tokens, see the following:
// https://stripe.com/docs/api/tokens/object
'/' . $this->rest_base . '/(?P<token_id>[a-z]{3}_[a-zA-Z0-9]{24})',
[
'methods' => WP_REST_Server::READABLE,
'callback' => [ $this, 'get_token' ],
'permission_callback' => [ $this, 'check_permission' ],
]
);
}
/**
* Retrieve a Stripe token, given a secret-key and token_id.
*
* @param WP_REST_Request $request Request object.
*
* @return WP_REST_Response Response object.
*/
public function get_token( $request ) {
$token_id = $request->get_param( 'token_id' );
$secret_key = $request->get_header( 'X-WCStripe-Secret-Key' );
try {
WC_Stripe_API::set_secret_key( $secret_key );
$response = WC_Stripe_API::request( [], "tokens/$token_id", 'GET' );
if ( ! empty( $response->error ) ) {
return new WP_REST_Response( [ 'result' => 'bad_request' ], 400 );
}
} catch ( Exception $exception ) {
return new WP_REST_Response( [ 'result' => 'bad_request' ], 400 );
}
return new WP_REST_Response( $response, 200 );
}
}