mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-06 13:44:42 +08:00
Fix psalm
This commit is contained in:
parent
48c5773ecd
commit
00d9cf52a4
7 changed files with 54 additions and 25 deletions
|
@ -146,13 +146,18 @@ class OrderFactory {
|
||||||
|
|
||||||
$payment_source = null;
|
$payment_source = null;
|
||||||
if ( isset( $order_data->payment_source ) ) {
|
if ( isset( $order_data->payment_source ) ) {
|
||||||
$payment_source_as_array = json_decode( json_encode( $order_data->payment_source ), true );
|
$json_encoded_payment_source = wp_json_encode( $order_data->payment_source );
|
||||||
if ( $payment_source_as_array ) {
|
if ( $json_encoded_payment_source ) {
|
||||||
$name = array_key_first( $payment_source_as_array );
|
$payment_source_as_array = json_decode( $json_encoded_payment_source, true );
|
||||||
$payment_source = new PaymentSource(
|
if ( $payment_source_as_array ) {
|
||||||
array_key_first( $payment_source_as_array ),
|
$name = array_key_first( $payment_source_as_array );
|
||||||
$order_data->payment_source->$name
|
if ( $name ) {
|
||||||
);
|
$payment_source = new PaymentSource(
|
||||||
|
$name,
|
||||||
|
$order_data->payment_source->$name
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ use Exception;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\DccApplies;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
|
||||||
|
@ -144,10 +145,13 @@ class ApproveOrderEndpoint implements EndpointInterface {
|
||||||
|
|
||||||
$order = $this->api_endpoint->order( $data['order_id'] );
|
$order = $this->api_endpoint->order( $data['order_id'] );
|
||||||
|
|
||||||
if ( $order->payment_source() && $order->payment_source()->name() === 'card' ) {
|
$payment_source = $order->payment_source();
|
||||||
|
assert( $payment_source instanceof PaymentSource );
|
||||||
|
|
||||||
|
if ( $payment_source->name() === 'card' ) {
|
||||||
if ( $this->settings->has( 'disable_cards' ) ) {
|
if ( $this->settings->has( 'disable_cards' ) ) {
|
||||||
$disabled_cards = (array) $this->settings->get( 'disable_cards' );
|
$disabled_cards = (array) $this->settings->get( 'disable_cards' );
|
||||||
$card = strtolower( $order->payment_source()->properties()->brand ?? '' );
|
$card = strtolower( $payment_source->properties()->brand ?? '' );
|
||||||
if ( 'master_card' === $card ) {
|
if ( 'master_card' === $card ) {
|
||||||
$card = 'mastercard';
|
$card = 'mastercard';
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@ namespace WooCommerce\PayPalCommerce\Button\Helper;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\CardAuthenticationResult as AuthResult;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\CardAuthenticationResult as AuthResult;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ThreeDSecure
|
* Class ThreeDSecure
|
||||||
|
@ -49,17 +50,19 @@ class ThreeDSecure {
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function proceed_with_order( Order $order ): int {
|
public function proceed_with_order( Order $order ): int {
|
||||||
if ( ! $order->payment_source() ) {
|
$payment_source = $order->payment_source();
|
||||||
return self::NO_DECISION;
|
if ( ! $payment_source ) {
|
||||||
}
|
|
||||||
if ( ! $order->payment_source()->properties()->brand ?? '' ) {
|
|
||||||
return self::NO_DECISION;
|
|
||||||
}
|
|
||||||
if ( ! $order->payment_source()->properties()->authentication_result ?? '' ) {
|
|
||||||
return self::NO_DECISION;
|
return self::NO_DECISION;
|
||||||
}
|
}
|
||||||
|
|
||||||
$result = $order->payment_source()->properties()->authentication_result;
|
if ( ! $payment_source->properties()->brand ?? '' ) {
|
||||||
|
return self::NO_DECISION;
|
||||||
|
}
|
||||||
|
if ( ! $payment_source->properties()->authentication_result ?? '' ) {
|
||||||
|
return self::NO_DECISION;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $payment_source->properties()->authentication_result;
|
||||||
$this->logger->info( '3DS authentication result: ' . wc_print_r( $result->to_array(), true ) );
|
$this->logger->info( '3DS authentication result: ' . wc_print_r( $result->to_array(), true ) );
|
||||||
|
|
||||||
if ( $result->liability_shift() === AuthResult::LIABILITY_SHIFT_POSSIBLE ) {
|
if ( $result->liability_shift() === AuthResult::LIABILITY_SHIFT_POSSIBLE ) {
|
||||||
|
|
|
@ -80,6 +80,11 @@ class CreatePaymentToken implements EndpointInterface {
|
||||||
try {
|
try {
|
||||||
$data = $this->request_data->read_request( $this->nonce() );
|
$data = $this->request_data->read_request( $this->nonce() );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Suppress ArgumentTypeCoercion
|
||||||
|
*
|
||||||
|
* @psalm-suppress ArgumentTypeCoercion
|
||||||
|
*/
|
||||||
$payment_source = new PaymentSource(
|
$payment_source = new PaymentSource(
|
||||||
'token',
|
'token',
|
||||||
(object) array(
|
(object) array(
|
||||||
|
|
|
@ -69,6 +69,11 @@ class CreateSetupToken implements EndpointInterface {
|
||||||
try {
|
try {
|
||||||
$this->request_data->read_request( $this->nonce() );
|
$this->request_data->read_request( $this->nonce() );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Suppress ArgumentTypeCoercion
|
||||||
|
*
|
||||||
|
* @psalm-suppress ArgumentTypeCoercion
|
||||||
|
*/
|
||||||
$payment_source = new PaymentSource(
|
$payment_source = new PaymentSource(
|
||||||
'paypal',
|
'paypal',
|
||||||
(object) array(
|
(object) array(
|
||||||
|
|
|
@ -9,20 +9,17 @@ declare(strict_types=1);
|
||||||
|
|
||||||
namespace WooCommerce\PayPalCommerce\SavePaymentMethods;
|
namespace WooCommerce\PayPalCommerce\SavePaymentMethods;
|
||||||
|
|
||||||
use Exception;
|
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use stdClass;
|
|
||||||
use WC_Order;
|
use WC_Order;
|
||||||
use WC_Payment_Tokens;
|
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Authentication\UserIdToken;
|
use WooCommerce\PayPalCommerce\ApiClient\Authentication\UserIdToken;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\PayPalApiException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
use WooCommerce\PayPalCommerce\SavePaymentMethods\Endpoint\CreatePaymentToken;
|
use WooCommerce\PayPalCommerce\SavePaymentMethods\Endpoint\CreatePaymentToken;
|
||||||
use WooCommerce\PayPalCommerce\SavePaymentMethods\Endpoint\CreateSetupToken;
|
use WooCommerce\PayPalCommerce\SavePaymentMethods\Endpoint\CreateSetupToken;
|
||||||
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenFactory;
|
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenFactory;
|
||||||
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenHelper;
|
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenHelper;
|
||||||
use WooCommerce\PayPalCommerce\Vaulting\PaymentTokenPayPal;
|
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider;
|
use WooCommerce\PayPalCommerce\Vendor\Dhii\Container\ServiceProvider;
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface;
|
use WooCommerce\PayPalCommerce\Vendor\Dhii\Modular\Module\ModuleInterface;
|
||||||
use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface;
|
use WooCommerce\PayPalCommerce\Vendor\Interop\Container\ServiceProviderInterface;
|
||||||
|
@ -91,7 +88,7 @@ class SavePaymentMethodsModule implements ModuleInterface {
|
||||||
// Adds attributes needed to save payment method.
|
// Adds attributes needed to save payment method.
|
||||||
add_filter(
|
add_filter(
|
||||||
'ppcp_create_order_request_body_data',
|
'ppcp_create_order_request_body_data',
|
||||||
function( $data ) {
|
function( array $data ): array {
|
||||||
$data['payment_source'] = array(
|
$data['payment_source'] = array(
|
||||||
'paypal' => array(
|
'paypal' => array(
|
||||||
'attributes' => array(
|
'attributes' => array(
|
||||||
|
@ -110,7 +107,10 @@ class SavePaymentMethodsModule implements ModuleInterface {
|
||||||
add_action(
|
add_action(
|
||||||
'woocommerce_paypal_payments_after_order_processor',
|
'woocommerce_paypal_payments_after_order_processor',
|
||||||
function( WC_Order $wc_order, Order $order ) use ( $c ) {
|
function( WC_Order $wc_order, Order $order ) use ( $c ) {
|
||||||
$payment_vault_attributes = $order->payment_source()->properties()->attributes->vault ?? null;
|
$payment_source = $order->payment_source();
|
||||||
|
assert( $payment_source instanceof PaymentSource );
|
||||||
|
|
||||||
|
$payment_vault_attributes = $payment_source->properties()->attributes->vault ?? null;
|
||||||
if ( $payment_vault_attributes ) {
|
if ( $payment_vault_attributes ) {
|
||||||
update_user_meta( $wc_order->get_customer_id(), '_ppcp_target_customer_id', $payment_vault_attributes->customer->id );
|
update_user_meta( $wc_order->get_customer_id(), '_ppcp_target_customer_id', $payment_vault_attributes->customer->id );
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ class SavePaymentMethodsModule implements ModuleInterface {
|
||||||
$wc_payment_tokens->create_payment_token_paypal(
|
$wc_payment_tokens->create_payment_token_paypal(
|
||||||
$wc_order->get_customer_id(),
|
$wc_order->get_customer_id(),
|
||||||
$payment_vault_attributes->id,
|
$payment_vault_attributes->id,
|
||||||
$order->payment_source()->properties()->email_address ?? ''
|
$payment_source->properties()->email_address ?? ''
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -14,6 +14,7 @@ use WC_Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
use WooCommerce\PayPalCommerce\ApiClient\Endpoint\OrderEndpoint;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\Order;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\OrderStatus;
|
||||||
|
use WooCommerce\PayPalCommerce\ApiClient\Entity\PaymentSource;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
use WooCommerce\PayPalCommerce\ApiClient\Exception\RuntimeException;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
|
use WooCommerce\PayPalCommerce\ApiClient\Factory\OrderFactory;
|
||||||
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
|
use WooCommerce\PayPalCommerce\ApiClient\Helper\OrderHelper;
|
||||||
|
@ -324,7 +325,13 @@ class OrderProcessor {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! $order->payment_source() || $order->payment_source()->name() !== 'card' ) {
|
$payment_source = $order->payment_source();
|
||||||
|
if ( ! $payment_source ) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
assert( $payment_source instanceof PaymentSource );
|
||||||
|
if ( $payment_source->name() !== 'card' ) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue