diff --git a/modules/ppcp-save-payment-methods/services.php b/modules/ppcp-save-payment-methods/services.php index 8089fbaf2..f1a188681 100644 --- a/modules/ppcp-save-payment-methods/services.php +++ b/modules/ppcp-save-payment-methods/services.php @@ -75,16 +75,16 @@ return array( $container->get( 'save-payment-methods.wc-payment-tokens' ) ); }, - 'save-payment-methods.endpoint.capture-card-payment' => static function( ContainerInterface $container): CaptureCardPayment { + 'save-payment-methods.endpoint.capture-card-payment' => static function( ContainerInterface $container ): CaptureCardPayment { return new CaptureCardPayment( $container->get( 'button.request-data' ), $container->get( 'api.host' ), $container->get( 'api.bearer' ), $container->get( 'api.factory.order' ), - $container->get('api.factory.purchase-unit'), - $container->get('api.endpoint.order'), - $container->get('session.handler'), + $container->get( 'api.factory.purchase-unit' ), + $container->get( 'api.endpoint.order' ), + $container->get( 'session.handler' ), $container->get( 'woocommerce.logger.woocommerce' ) ); - } + }, ); diff --git a/modules/ppcp-save-payment-methods/src/Endpoint/CaptureCardPayment.php b/modules/ppcp-save-payment-methods/src/Endpoint/CaptureCardPayment.php index 63b965bbd..6bf923867 100644 --- a/modules/ppcp-save-payment-methods/src/Endpoint/CaptureCardPayment.php +++ b/modules/ppcp-save-payment-methods/src/Endpoint/CaptureCardPayment.php @@ -24,6 +24,9 @@ use WooCommerce\PayPalCommerce\Button\Endpoint\RequestData; use WooCommerce\PayPalCommerce\Session\SessionHandler; use WP_Error; +/** + * Class CaptureCardPayment + */ class CaptureCardPayment implements EndpointInterface { use RequestTrait; @@ -86,24 +89,36 @@ class CaptureCardPayment implements EndpointInterface { */ private $logger; + /** + * CaptureCardPayment constructor. + * + * @param RequestData $request_data The request data. + * @param string $host The host. + * @param Bearer $bearer The bearer. + * @param OrderFactory $order_factory The order factory. + * @param PurchaseUnitFactory $purchase_unit_factory The purchase unit factory. + * @param OrderEndpoint $order_endpoint The order endpoint. + * @param SessionHandler $session_handler The session handler. + * @param LoggerInterface $logger The logger. + */ public function __construct( - RequestData $request_data, - string $host, - Bearer $bearer, - OrderFactory $order_factory, + RequestData $request_data, + string $host, + Bearer $bearer, + OrderFactory $order_factory, PurchaseUnitFactory $purchase_unit_factory, - OrderEndpoint $order_endpoint, - SessionHandler $session_handler, - LoggerInterface $logger + OrderEndpoint $order_endpoint, + SessionHandler $session_handler, + LoggerInterface $logger ) { - $this->request_data = $request_data; - $this->host = $host; - $this->bearer = $bearer; - $this->order_factory = $order_factory; + $this->request_data = $request_data; + $this->host = $host; + $this->bearer = $bearer; + $this->order_factory = $order_factory; $this->purchase_unit_factory = $purchase_unit_factory; - $this->order_endpoint = $order_endpoint; - $this->logger = $logger; - $this->session_handler = $session_handler; + $this->order_endpoint = $order_endpoint; + $this->logger = $logger; + $this->session_handler = $session_handler; } /** @@ -115,29 +130,37 @@ class CaptureCardPayment implements EndpointInterface { return self::ENDPOINT; } + /** + * Handles the request. + * + * @return bool + */ public function handle_request(): bool { $data = $this->request_data->read_request( $this->nonce() ); - $tokens = WC_Payment_Tokens::get_customer_tokens(get_current_user_id()); - foreach ($tokens as $token) { - if($token->get_id() === (int)$data['payment_token']) { + $tokens = WC_Payment_Tokens::get_customer_tokens( get_current_user_id() ); + foreach ( $tokens as $token ) { + if ( $token->get_id() === (int) $data['payment_token'] ) { try { - $order = $this->create_order($token->get_token()); + $order = $this->create_order( $token->get_token() ); - $id = $order->id ?? ''; - $status = $order->status ?? ''; - $payment_source = isset($order->payment_source->card) ? 'card' : ''; - if($id && $status && $payment_source) { - WC()->session->set('ppcp_saved_payment_card', array( - 'order_id' => $id, - 'status' => $status, - 'payment_source' => $payment_source - )); + $id = $order->id ?? ''; + $status = $order->status ?? ''; + $payment_source = isset( $order->payment_source->card ) ? 'card' : ''; + if ( $id && $status && $payment_source ) { + WC()->session->set( + 'ppcp_saved_payment_card', + array( + 'order_id' => $id, + 'status' => $status, + 'payment_source' => $payment_source, + ) + ); wp_send_json_success(); return true; } - } catch (RuntimeException $exception) { + } catch ( RuntimeException $exception ) { wp_send_json_error(); return false; } @@ -151,15 +174,16 @@ class CaptureCardPayment implements EndpointInterface { /** * Creates PayPal order from the given card vault id. * - * @param string $vault_id + * @param string $vault_id Vault id. * @return stdClass + * @throws RuntimeException When request fails. */ - private function create_order(string $vault_id): stdClass { - $items = array( $this->purchase_unit_factory->from_wc_cart()); + private function create_order( string $vault_id ): stdClass { + $items = array( $this->purchase_unit_factory->from_wc_cart() ); $data = array( - 'intent' => 'CAPTURE', - 'purchase_units' => array_map( + 'intent' => 'CAPTURE', + 'purchase_units' => array_map( static function ( PurchaseUnit $item ): array { return $item->to_array( true, false ); }, @@ -167,7 +191,7 @@ class CaptureCardPayment implements EndpointInterface { ), 'payment_source' => array( 'card' => array( - 'vault_id' => $vault_id + 'vault_id' => $vault_id, ), ), ); @@ -177,9 +201,9 @@ class CaptureCardPayment implements EndpointInterface { $args = array( 'method' => 'POST', 'headers' => array( - 'Authorization' => 'Bearer ' . $bearer->token(), - 'Content-Type' => 'application/json', - 'PayPal-Request-Id' => uniqid( 'ppcp-', true ), + 'Authorization' => 'Bearer ' . $bearer->token(), + 'Content-Type' => 'application/json', + 'PayPal-Request-Id' => uniqid( 'ppcp-', true ), ), 'body' => wp_json_encode( $data ), ); diff --git a/modules/ppcp-wc-gateway/src/Gateway/CreditCardGateway.php b/modules/ppcp-wc-gateway/src/Gateway/CreditCardGateway.php index 04c7664a2..5b35aef1a 100644 --- a/modules/ppcp-wc-gateway/src/Gateway/CreditCardGateway.php +++ b/modules/ppcp-wc-gateway/src/Gateway/CreditCardGateway.php @@ -365,9 +365,9 @@ class CreditCardGateway extends \WC_Payment_Gateway_CC { ); } - $saved_payment_card = WC()->session->get('ppcp_saved_payment_card'); - if($saved_payment_card) { - if($saved_payment_card['payment_source'] === 'card' && $saved_payment_card['status'] === 'COMPLETED') { + $saved_payment_card = WC()->session->get( 'ppcp_saved_payment_card' ); + if ( $saved_payment_card ) { + if ( $saved_payment_card['payment_source'] === 'card' && $saved_payment_card['status'] === 'COMPLETED' ) { $this->update_transaction_id( $saved_payment_card['order_id'], $wc_order ); $wc_order->payment_complete(); WC()->session->set( 'ppcp_saved_payment_card', null );