Automattic\WooCommerce\Internal\Orders
PaymentInfo::get_wcpay_card_info()
Get info about the card used for payment on an order, when the payment gateway is WooPayments.
Метод класса: PaymentInfo{}
Хуков нет.
Возвращает
Массив
.
Использование
$result = PaymentInfo::get_wcpay_card_info( $order ): array;
- $order(WC_Abstract_Order) (обязательный)
- The order in question.
Заметки
Код PaymentInfo::get_wcpay_card_info() PaymentInfo::get wcpay card info WC 9.5.1
private static function get_wcpay_card_info( WC_Abstract_Order $order ): array { if ( 'woocommerce_payments' !== $order->get_payment_method() ) { return array(); } // For testing purposes: if WooCommerce Payments development mode is enabled, an order meta item with // key '_wcpay_payment_details' will be used if it exists as a replacement for the call to the Stripe // API's 'get intent' endpoint. The value must be the JSON encoding of an array simulating the // "payment_details" part of the response from the endpoint. $stored_payment_details = Constants::get_constant( 'WCPAY_DEV_MODE' ) ? $order->get_meta( '_wcpay_payment_details' ) : ''; $payment_details = json_decode( $stored_payment_details, true ); if ( ! $payment_details ) { if ( ! class_exists( \WC_Payments::class ) ) { return array(); } $payment_method_id = $order->get_meta( '_payment_method_id' ); if ( ! $payment_method_id ) { return array(); } try { $payment_details = \WC_Payments::get_payments_api_client()->get_payment_method( $payment_method_id ); } catch ( \Throwable $ex ) { $order_id = $order->get_id(); $message = $ex->getMessage(); wc_get_logger()->error( sprintf( '%s - retrieving info for payment method %s for order %s: %s', StringUtil::class_name_without_namespace( static::class ), $payment_method_id, $order_id, $message ), array( 'source' => 'payment-info', ) ); return array(); } } $card_info = array(); if ( isset( $payment_details['type'], $payment_details[ $payment_details['type'] ] ) ) { $details = $payment_details[ $payment_details['type'] ]; switch ( $payment_details['type'] ) { case 'card': default: $card_info['brand'] = $details['brand'] ?? ''; $card_info['last4'] = $details['last4'] ?? ''; break; case 'card_present': case 'interac_present': $card_info['brand'] = $details['brand'] ?? ''; $card_info['last4'] = $details['last4'] ?? ''; $card_info['account_type'] = $details['receipt']['account_type'] ?? ''; $card_info['aid'] = $details['receipt']['dedicated_file_name'] ?? ''; $card_info['app_name'] = $details['receipt']['application_preferred_name'] ?? ''; break; } } return array_map( 'sanitize_text_field', $card_info ); }