mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-01 07:02:48 +08:00
♻️ Refactor PaymentMethodsDefinition structure
This commit is contained in:
parent
4073f84454
commit
4d2f9d2042
1 changed files with 136 additions and 218 deletions
|
@ -65,15 +65,21 @@ class PaymentMethodsDefinition {
|
||||||
// Refresh the WooCommerce gateway details before we build the definitions.
|
// Refresh the WooCommerce gateway details before we build the definitions.
|
||||||
$this->wc_gateways = WC()->payment_gateways()->payment_gateways();
|
$this->wc_gateways = WC()->payment_gateways()->payment_gateways();
|
||||||
|
|
||||||
$paypal_methods = $this->group_paypal_methods();
|
$all_methods = array_merge(
|
||||||
$card_methods = $this->group_card_methods();
|
$this->group_paypal_methods(),
|
||||||
$apm_methods = $this->group_apms();
|
$this->group_card_methods(),
|
||||||
|
$this->group_apms(),
|
||||||
$all_methods = array_merge( $paypal_methods, $card_methods, $apm_methods );
|
);
|
||||||
|
|
||||||
$result = array();
|
$result = array();
|
||||||
foreach ( $all_methods as $method ) {
|
foreach ( $all_methods as $method ) {
|
||||||
$result[ $method['id'] ] = $method;
|
$result[ $method['id'] ] = $this->define_common_fields(
|
||||||
|
$method['id'],
|
||||||
|
$method['title'],
|
||||||
|
$method['description'],
|
||||||
|
$method['icon'],
|
||||||
|
$method['fields'] ?? array()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
|
@ -138,13 +144,48 @@ class PaymentMethodsDefinition {
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function group_paypal_methods() : array {
|
public function group_paypal_methods() : array {
|
||||||
return array(
|
$group = array(
|
||||||
$this->define_paypal(),
|
array(
|
||||||
$this->define_venmo(),
|
'id' => PayPalGateway::ID,
|
||||||
$this->define_pay_later(),
|
'title' => __( 'PayPal', 'woocommerce-paypal-payments' ),
|
||||||
$this->define_card_button(),
|
'description' => __( 'Our all-in-one checkout solution lets you offer PayPal, Venmo, Pay Later options, and more to help maximize conversion.', 'woocommerce-paypal-payments' ),
|
||||||
|
'icon' => 'payment-method-paypal',
|
||||||
|
'fields' => array(
|
||||||
|
'paypalShowLogo' => array(
|
||||||
|
'type' => 'toggle',
|
||||||
|
'default' => $this->settings->get_paypal_show_logo(),
|
||||||
|
'label' => __( 'Show logo', 'woocommerce-paypal-payments' ),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => 'venmo',
|
||||||
|
'title' => __( 'Venmo', 'woocommerce-paypal-payments' ),
|
||||||
|
'description' => __(
|
||||||
|
'Offer Venmo at checkout to millions of active users.',
|
||||||
|
'woocommerce-paypal-payments'
|
||||||
|
),
|
||||||
|
'icon' => 'payment-method-venmo',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => 'pay-later',
|
||||||
|
'title' => __( 'Pay Later', 'woocommerce-paypal-payments' ),
|
||||||
|
'description' => __(
|
||||||
|
'Get paid in full at checkout while giving your customers the flexibility to pay in installments over time with no late fees.',
|
||||||
|
'woocommerce-paypal-payments'
|
||||||
|
),
|
||||||
|
'icon' => 'payment-method-paypal',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => CardButtonGateway::ID,
|
||||||
|
'title' => __( 'Credit and debit card payments', 'woocommerce-paypal-payments' ),
|
||||||
|
'description' => __( "Accept all major credit and debit cards - even if your customer doesn't have a PayPal account . ", 'woocommerce-paypal-payments' ),
|
||||||
|
'icon' => 'payment-method-cards',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return apply_filters( 'woocommerce_paypal_payments_gateway_group_paypal', $group );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -152,13 +193,87 @@ class PaymentMethodsDefinition {
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
private function group_card_methods() : array {
|
public function group_card_methods() : array {
|
||||||
return array(
|
$group = array(
|
||||||
$this->define_advanced_cards(),
|
array(
|
||||||
$this->define_axo(),
|
'id' => CreditCardGateway::ID,
|
||||||
$this->define_apple_pay(),
|
'title' => __( 'Advanced Credit and Debit Card Payments', 'woocommerce-paypal-payments' ),
|
||||||
$this->define_google_pay(),
|
'description' => __( "Present custom credit and debit card fields to your payers so they can pay with credit and debit cards using your site's branding.", 'woocommerce-paypal-payments' ),
|
||||||
|
'icon' => 'payment-method-advanced-cards',
|
||||||
|
'fields' => array(
|
||||||
|
'threeDSecure' => array(
|
||||||
|
'type' => 'radio',
|
||||||
|
'default' => $this->settings->get_three_d_secure(),
|
||||||
|
'label' => __( '3D Secure', 'woocommerce-paypal-payments' ),
|
||||||
|
'description' => __(
|
||||||
|
'Authenticate cardholders through their card issuers to reduce fraud and improve transaction security. Successful 3D Secure authentication can shift liability for fraudulent chargebacks to the card issuer.',
|
||||||
|
'woocommerce-paypal-payments'
|
||||||
|
),
|
||||||
|
'options' => array(
|
||||||
|
array(
|
||||||
|
'label' => __(
|
||||||
|
'No 3D Secure',
|
||||||
|
'woocommerce-paypal-payments'
|
||||||
|
),
|
||||||
|
'value' => 'no-3d-secure',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'label' => __(
|
||||||
|
'Only when required',
|
||||||
|
'woocommerce-paypal-payments'
|
||||||
|
),
|
||||||
|
'value' => 'only-required-3d-secure',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'label' => __(
|
||||||
|
'Always require 3D Secure',
|
||||||
|
'woocommerce-paypal-payments'
|
||||||
|
),
|
||||||
|
'value' => 'always-3d-secure',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => AxoGateway::ID,
|
||||||
|
'title' => __( 'Fastlane by PayPal', 'woocommerce-paypal-payments' ),
|
||||||
|
'description' => __( "Tap into the scale and trust of PayPal's customer network to recognize shoppers and make guest checkout more seamless than ever.", 'woocommerce-paypal-payments' ),
|
||||||
|
'icon' => 'payment-method-fastlane',
|
||||||
|
'fields' => array(
|
||||||
|
'fastlaneCardholderName' => array(
|
||||||
|
'type' => 'toggle',
|
||||||
|
'default' => $this->settings->get_fastlane_cardholder_name(),
|
||||||
|
'label' => __(
|
||||||
|
'Display cardholder name',
|
||||||
|
'woocommerce-paypal-payments'
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'fastlaneDisplayWatermark' => array(
|
||||||
|
'type' => 'toggle',
|
||||||
|
'default' => $this->settings->get_fastlane_display_watermark(),
|
||||||
|
'label' => __(
|
||||||
|
'Display Fastlane Watermark',
|
||||||
|
'woocommerce-paypal-payments'
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => ApplePayGateway::ID,
|
||||||
|
'title' => __( 'Apple Pay', 'woocommerce-paypal-payments' ),
|
||||||
|
'description' => __( 'Allow customers to pay via their Apple Pay digital wallet.', 'woocommerce-paypal-payments' ),
|
||||||
|
'icon' => 'payment-method-apple-pay',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'id' => GooglePayGateway::ID,
|
||||||
|
'title' => __( 'Google Pay', 'woocommerce-paypal-payments' ),
|
||||||
|
'description' => __( 'Allow customers to pay via their Google Pay digital wallet.', 'woocommerce-paypal-payments' ),
|
||||||
|
'icon' => 'payment-method-google-pay',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
return apply_filters( 'woocommerce_paypal_payments_gateway_group_cards', $group );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -167,8 +282,8 @@ class PaymentMethodsDefinition {
|
||||||
*
|
*
|
||||||
* @return array List of payment method definitions.
|
* @return array List of payment method definitions.
|
||||||
*/
|
*/
|
||||||
private function group_apms() : array {
|
public function group_apms() : array {
|
||||||
$apm_list = array(
|
$group = array(
|
||||||
array(
|
array(
|
||||||
'id' => BancontactGateway::ID,
|
'id' => BancontactGateway::ID,
|
||||||
'title' => __( 'Bancontact', 'woocommerce-paypal-payments' ),
|
'title' => __( 'Bancontact', 'woocommerce-paypal-payments' ),
|
||||||
|
@ -261,203 +376,6 @@ class PaymentMethodsDefinition {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
return array_map(
|
return apply_filters( 'woocommerce_paypal_payments_gateway_group_apm', $group );
|
||||||
function ( $apm ) {
|
|
||||||
return $this->define_common_fields(
|
|
||||||
$apm['id'],
|
|
||||||
$apm['title'],
|
|
||||||
$apm['description'],
|
|
||||||
$apm['icon']
|
|
||||||
);
|
|
||||||
},
|
|
||||||
$apm_list
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Payment method specific definitions.
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the payment method definition for PayPal.
|
|
||||||
*
|
|
||||||
* @return array Payment method definition.
|
|
||||||
*/
|
|
||||||
private function define_paypal() : array {
|
|
||||||
return $this->define_common_fields(
|
|
||||||
PayPalGateway::ID,
|
|
||||||
__( 'PayPal', 'woocommerce-paypal-payments' ),
|
|
||||||
__( 'Our all-in-one checkout solution lets you offer PayPal, Venmo, Pay Later options, and more to help maximize conversion.', 'woocommerce-paypal-payments' ),
|
|
||||||
'payment-method-paypal',
|
|
||||||
array(
|
|
||||||
'paypalShowLogo' => array(
|
|
||||||
'type' => 'toggle',
|
|
||||||
'default' => $this->settings->get_paypal_show_logo(),
|
|
||||||
'label' => __( 'Show logo', 'woocommerce-paypal-payments' ),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the payment method definition for Venmo.
|
|
||||||
*
|
|
||||||
* @return array Payment method definition.
|
|
||||||
*/
|
|
||||||
private function define_venmo() : array {
|
|
||||||
$gateway = $this->define_common_fields(
|
|
||||||
'venmo',
|
|
||||||
__( 'Venmo', 'woocommerce-paypal-payments' ),
|
|
||||||
__(
|
|
||||||
'Offer Venmo at checkout to millions of active users.',
|
|
||||||
'woocommerce-paypal-payments'
|
|
||||||
),
|
|
||||||
'payment-method-venmo',
|
|
||||||
);
|
|
||||||
|
|
||||||
unset( $gateway['fields'] );
|
|
||||||
|
|
||||||
return $gateway;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the payment method definition for Pay Later.
|
|
||||||
*
|
|
||||||
* @return array Payment method definition.
|
|
||||||
*/
|
|
||||||
private function define_pay_later() : array {
|
|
||||||
$gateway = $this->define_common_fields(
|
|
||||||
'pay-later',
|
|
||||||
__( 'Pay Later', 'woocommerce-paypal-payments' ),
|
|
||||||
__(
|
|
||||||
'Get paid in full at checkout while giving your customers the flexibility to pay in installments over time with no late fees.',
|
|
||||||
'woocommerce-paypal-payments'
|
|
||||||
),
|
|
||||||
'payment-method-paypal',
|
|
||||||
);
|
|
||||||
|
|
||||||
unset( $gateway['fields'] );
|
|
||||||
|
|
||||||
return $gateway;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the payment method definition for Credit Card Button.
|
|
||||||
*
|
|
||||||
* @return array Payment method definition.
|
|
||||||
*/
|
|
||||||
private function define_card_button() : array {
|
|
||||||
return $this->define_common_fields(
|
|
||||||
CardButtonGateway::ID,
|
|
||||||
__( 'Credit and debit card payments', 'woocommerce-paypal-payments' ),
|
|
||||||
__( "Accept all major credit and debit cards - even if your customer doesn't have a PayPal account.", 'woocommerce-paypal-payments' ),
|
|
||||||
'payment-method-cards',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the payment method definition for Advanced Card Payments.
|
|
||||||
*
|
|
||||||
* @return array Payment method definition.
|
|
||||||
*/
|
|
||||||
private function define_advanced_cards() : array {
|
|
||||||
return $this->define_common_fields(
|
|
||||||
CreditCardGateway::ID,
|
|
||||||
__( 'Advanced Credit and Debit Card Payments', 'woocommerce-paypal-payments' ),
|
|
||||||
__( "Present custom credit and debit card fields to your payers so they can pay with credit and debit cards using your site's branding.", 'woocommerce-paypal-payments' ),
|
|
||||||
'payment-method-advanced-cards',
|
|
||||||
array(
|
|
||||||
'threeDSecure' => array(
|
|
||||||
'type' => 'radio',
|
|
||||||
'default' => $this->settings->get_three_d_secure(),
|
|
||||||
'label' => __( '3D Secure', 'woocommerce-paypal-payments' ),
|
|
||||||
'description' => __(
|
|
||||||
'Authenticate cardholders through their card issuers to reduce fraud and improve transaction security. Successful 3D Secure authentication can shift liability for fraudulent chargebacks to the card issuer.',
|
|
||||||
'woocommerce-paypal-payments'
|
|
||||||
),
|
|
||||||
'options' => array(
|
|
||||||
array(
|
|
||||||
'label' => __(
|
|
||||||
'No 3D Secure',
|
|
||||||
'woocommerce-paypal-payments'
|
|
||||||
),
|
|
||||||
'value' => 'no-3d-secure',
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'label' => __(
|
|
||||||
'Only when required',
|
|
||||||
'woocommerce-paypal-payments'
|
|
||||||
),
|
|
||||||
'value' => 'only-required-3d-secure',
|
|
||||||
),
|
|
||||||
array(
|
|
||||||
'label' => __(
|
|
||||||
'Always require 3D Secure',
|
|
||||||
'woocommerce-paypal-payments'
|
|
||||||
),
|
|
||||||
'value' => 'always-3d-secure',
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the payment method definition for Fastlane.
|
|
||||||
*
|
|
||||||
* @return array Payment method definition.
|
|
||||||
*/
|
|
||||||
private function define_axo() : array {
|
|
||||||
return $this->define_common_fields(
|
|
||||||
AxoGateway::ID,
|
|
||||||
__( 'Fastlane by PayPal', 'woocommerce-paypal-payments' ),
|
|
||||||
__( "Tap into the scale and trust of PayPal's customer network to recognize shoppers and make guest checkout more seamless than ever.", 'woocommerce-paypal-payments' ),
|
|
||||||
'payment-method-fastlane',
|
|
||||||
array(
|
|
||||||
'fastlaneCardholderName' => array(
|
|
||||||
'type' => 'toggle',
|
|
||||||
'default' => $this->settings->get_fastlane_cardholder_name(),
|
|
||||||
'label' => __(
|
|
||||||
'Display cardholder name',
|
|
||||||
'woocommerce-paypal-payments'
|
|
||||||
),
|
|
||||||
),
|
|
||||||
'fastlaneDisplayWatermark' => array(
|
|
||||||
'type' => 'toggle',
|
|
||||||
'default' => $this->settings->get_fastlane_display_watermark(),
|
|
||||||
'label' => __(
|
|
||||||
'Display Fastlane Watermark',
|
|
||||||
'woocommerce-paypal-payments'
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the payment method definition for Apple Pay.
|
|
||||||
*
|
|
||||||
* @return array Payment method definition.
|
|
||||||
*/
|
|
||||||
private function define_apple_pay() : array {
|
|
||||||
return $this->define_common_fields(
|
|
||||||
ApplePayGateway::ID,
|
|
||||||
__( 'Apple Pay', 'woocommerce-paypal-payments' ),
|
|
||||||
__( 'Allow customers to pay via their Apple Pay digital wallet.', 'woocommerce-paypal-payments' ),
|
|
||||||
'payment-method-apple-pay',
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the payment method definition for Google Pay.
|
|
||||||
*
|
|
||||||
* @return array Payment method definition.
|
|
||||||
*/
|
|
||||||
private function define_google_pay() : array {
|
|
||||||
return $this->define_common_fields(
|
|
||||||
GooglePayGateway::ID,
|
|
||||||
__( 'Google Pay', 'woocommerce-paypal-payments' ),
|
|
||||||
__( 'Allow customers to pay via their Google Pay digital wallet.', 'woocommerce-paypal-payments' ),
|
|
||||||
'payment-method-google-pay',
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue