WooCommerce Code Reference

WC_Gateway_Paypal extends WC_Payment_Gateway

WC_Gateway_Paypal Class.

Table of Contents

ID  = 'paypal'
Unique ID for this gateway.
$availability  : string
Available for all counties or specific.
$chosen  : bool
Chosen payment method id.
$countries  : array<string|int, mixed>
Countries this gateway is allowed for.
$debug  : bool
Whether the debug mode is enabled.
$description  : string
Payment method description for the frontend.
$email  : string
Email address to send payments to.
$enabled  : string
Yes or no based on whether the method is enabled.
$errors  : array<string|int, mixed>
Validation errors.
$form_fields  : array<string|int, mixed>
Form option fields.
$has_custom_place_order_button  : bool
Whether the gateway provides a custom place order button.
$has_fields  : bool
True if the gateway shows fields on the checkout.
$icon  : string
Icon for the gateway.
$id  : string
ID of the class extending the settings API. Used in option names.
$identity_token  : string
Identity token.
$intent  : string
The intent of the payment (capture or authorize).
$log  : WC_Logger
Logger instance
$log_enabled  : bool
Whether or not logging is enabled
$max_amount  : int
Maximum transaction amount, zero does not define a maximum.
$method_description  : string
Gateway description.
$method_title  : string
Gateway title.
$new_method_label  : string
Optional label to show for "new payment method" in the payment method/token selection radio selection.
$order_button_text  : string
Set if the place order button should be renamed on selection.
$pay_button_id  : string
Pay button ID if supported.
$plugin_id  : string
The plugin ID. Used for option names.
$receiver_email  : string
Receiver email.
$settings  : array<string|int, mixed>
Setting values.
$supports  : array<string|int, mixed>
Supported features such as 'default_credit_card_form', 'refunds'.
$testmode  : bool
Whether the test mode is enabled.
$title  : string
Payment method title for the frontend.
$view_transaction_url  : string
Optional URL to view a transaction.
$data  : array<string|int, mixed>
The posted settings data. When empty, $_POST data will be used.
$tokens  : array<string|int, mixed>
Contains a users saved tokens for this gateway.
$instance  : WC_Gateway_Paypal
The *Singleton* instance of this class
$jetpack_connection_manager  : Jetpack_Connection_Manager
Jetpack connection manager.
$transact_onboarding_complete  : bool
Whether the Transact onboarding is complete.
__construct()  : mixed
Constructor for the gateway.
add_error()  : mixed
Add an error message for display in admin on save.
add_payment_method()  : array<string|int, mixed>
Add payment method via account screen. This should be extended by gateway plugins.
add_paypal_sdk_attributes()  : array<string|int, mixed>
Add PayPal SDK attributes to the script.
admin_options()  : mixed
Admin Panel Options.
admin_scripts()  : mixed
Load admin scripts.
can_refund_order()  : bool
Can the order be refunded via PayPal?
capture_payment()  : mixed
Capture payment when the order is changed from on-hold to complete or processing
credit_card_form()  : mixed
Core credit card form which gateways can use if needed. Deprecated - inherit WC_Payment_Gateway_CC instead.
display_errors()  : mixed
Display admin error messages.
enqueue_scripts()  : mixed
Enqueue scripts.
format_settings()  : array<string|int, mixed>
Format settings if needed.
generate_checkbox_html()  : string
Generate Checkbox HTML.
generate_color_html()  : string
Generate Color Picker Input HTML.
generate_decimal_html()  : string
Generate Decimal Input HTML.
generate_multiselect_html()  : string
Generate Multiselect HTML.
generate_password_html()  : string
Generate Password Input HTML.
generate_price_html()  : string
Generate Price Input HTML.
generate_safe_text_html()  : string
Generates HTML for the 'safe_text' input type (mostly used for gateway-related settings).
generate_select_html()  : string
Generate Select HTML.
generate_settings_html()  : string
Generate Settings HTML.
generate_text_html()  : string
Generate Text Input HTML.
generate_textarea_html()  : string
Generate Textarea HTML.
generate_title_html()  : string
Generate Title HTML.
get_custom_attribute_html()  : string
Get custom attributes.
get_description()  : string
Return the gateway's description.
get_description_html()  : string
Get HTML for descriptions.
get_errors()  : mixed
Get admin error messages.
get_field_default()  : string
Get a fields default value. Defaults to "" if not set.
get_field_key()  : string
Prefix key for settings.
get_field_type()  : string
Get a fields type. Defaults to "text" if not set.
get_field_value()  : string
Get a field's posted and validated value.
get_form_fields()  : array<string|int, mixed>
Get the form fields after they are initialized.
get_icon()  : string
Get gateway icon.
get_instance()  : WC_Gateway_Paypal
Returns the *Singleton* instance of this class.
get_jetpack_connection_manager()  : Jetpack_Connection_Manager
Get the Jetpack connection manager.
get_method_description()  : string
Return the description for admin screens.
get_method_title()  : string
Return the title for admin screens.
get_new_payment_method_option_html()  : mixed
Displays a radio button for entering a new payment method (new CC details) instead of using a saved method.
get_option()  : string
Get option from DB.
get_option_key()  : string
Return the name of the option in the WP DB.
get_pay_button_id()  : string
Return the gateway's pay button ID.
get_post_data()  : array<string|int, mixed>
Returns the POSTed data, to be used to save the settings.
get_return_url()  : string
Get the return url (thank you page).
get_saved_payment_method_option_html()  : string
Gets saved payment method HTML from a token.
get_title()  : string
Return the gateway's title.
get_tokens()  : array<string|int, mixed>
Returns a users saved tokens for this gateway.
get_tooltip_html()  : string
Get HTML for tooltips.
get_transaction_url()  : string
Get the transaction URL.
has_fields()  : bool
Check if the gateway has fields on the checkout.
has_paypal_orders()  : bool
Checks if the store has at least one PayPal Standand order.
hide_action_buttons()  : array<string|int, mixed>
Hide "Pay" and "Cancel" action buttons for pending orders as orders v2 takes a while to be captured.
init_form_fields()  : mixed
Initialise Gateway Settings Form Fields.
init_settings()  : mixed
Initialise Settings.
is_available()  : bool
Check if the gateway is available for use.
is_transact_onboarding_complete()  : bool
Whether the Transact onboarding is complete.
is_valid_for_use()  : bool
Check if this gateway is available in the user's country based on currency.
log()  : mixed
Logging method.
manage_account_restriction_status()  : void
Handle PayPal order response to manage account restriction notices.
maybe_onboard_with_transact()  : void
Onboard the merchant with the Transact platform.
maybe_remove_fields()  : array<string|int, mixed>
Filter to remove fields for Orders v2.
needs_setup()  : bool
Return whether or not this gateway still requires setup to function.
order_received_text()  : string
Custom PayPal order received text.
payment_fields()  : mixed
Default payment fields display. Override this in your gateway to customize displayed fields.
process_admin_options()  : bool
Processes and saves options.
process_payment()  : array<string|int, mixed>
Process the payment and return the result.
process_refund()  : bool|WP_Error
Process a refund if supported.
render_buttons_container()  : mixed
Builds the PayPal payment fields area.
save_payment_method_checkbox()  : mixed
Outputs a checkbox for saving a new payment method to the database.
saved_payment_methods()  : mixed
Grab and display our saved payment methods.
set_current()  : mixed
Set as current gateway.
set_instance()  : void
Set the instance of the gateway.
set_post_data()  : mixed
Sets the POSTed data. This method can be used to set specific data, instead of taking it from the $_POST array.
set_transact_onboarding_complete()  : void
Set the Transact onboarding as complete.
should_load()  : bool
Determines whether PayPal Standard should be loaded or not.
should_use_orders_v2()  : bool
Check if the gateway should use Orders v2 API.
supports()  : bool
Check if a gateway supports a given feature.
tokenization_script()  : mixed
Enqueues our tokenization script to handle some of the new form options.
update_addresses_in_order()  : void
Update the shipping and billing information for the order.
update_option()  : bool
Update a single option.
validate_checkbox_field()  : string
Validate Checkbox Field.
validate_decimal_field()  : string
Validate Decimal Field.
validate_fields()  : bool
Validate frontend fields.
validate_multiselect_field()  : string|array<string|int, mixed>
Validate Multiselect Field.
validate_password_field()  : string
Validate Password Field. No input sanitization is used to avoid corrupting passwords.
validate_price_field()  : string
Validate Price Field.
validate_safe_text_field()  : string
Sanitize 'Safe Text' fields.
validate_select_field()  : string
Validate Select Field.
validate_settings_fields()  : mixed
Validate the data on the "Settings" form.
validate_text_field()  : string
Validate Text Field.
validate_textarea_field()  : string
Validate Textarea Field.
get_icon_image()  : array<string|int, mixed>
Get PayPal images for a country.
get_icon_url()  : string
Get the link for an icon based on country.
get_order_total()  : float
Get the order total in checkout and pay_for_order.
get_paypal_icon_image()  : string
Get PayPal icon image.
init_api()  : mixed
Init the API class and set the username/password etc.
set_defaults()  : array<string|int, mixed>
Set default required properties for each field.

Constants

Properties

$has_custom_place_order_button

Whether the gateway provides a custom place order button.

public bool $has_custom_place_order_button = alse

When true, the default "Place order" button will be hidden on page load if this gateway is pre-selected. The gateway must register its custom button via JavaScript using wc.customPlaceOrderButton.register().

Note: This property is purely for UX (preventing flash of default button). It does NOT affect security or functionality - the JS registration is what actually enables the custom button.

Tags
since
10.6.0

Methods

add_payment_method()

Add payment method via account screen. This should be extended by gateway plugins.

public add_payment_method() : array<string|int, mixed>
Tags
since
3.2.0

Included here from 3.2.0, but supported from 3.0.0.

Return values
array<string|int, mixed> —

add_paypal_sdk_attributes()

Add PayPal SDK attributes to the script.

public add_paypal_sdk_attributes(array<string|int, mixed> $attrs) : array<string|int, mixed>
Parameters
$attrs : array<string|int, mixed>

Attributes.

Return values
array<string|int, mixed> —

capture_payment()

Capture payment when the order is changed from on-hold to complete or processing

public capture_payment(int $order_id) : mixed
Parameters
$order_id : int

Order ID.

Return values
mixed —

credit_card_form()

Core credit card form which gateways can use if needed. Deprecated - inherit WC_Payment_Gateway_CC instead.

public credit_card_form([array<string|int, mixed> $args = array() ][, array<string|int, mixed> $fields = array() ]) : mixed
Parameters
$args : array<string|int, mixed> = array()

Arguments.

$fields : array<string|int, mixed> = array()

Fields.

Return values
mixed —

format_settings()

Format settings if needed.

public format_settings(array<string|int, mixed> $value) : array<string|int, mixed>
Parameters
$value : array<string|int, mixed>

Value to format.

Tags
deprecated
2.6.0

Unused.

Return values
array<string|int, mixed> —

generate_checkbox_html()

Generate Checkbox HTML.

public generate_checkbox_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_color_html()

Generate Color Picker Input HTML.

public generate_color_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_decimal_html()

Generate Decimal Input HTML.

public generate_decimal_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_multiselect_html()

Generate Multiselect HTML.

public generate_multiselect_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_password_html()

Generate Password Input HTML.

public generate_password_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_price_html()

Generate Price Input HTML.

public generate_price_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_safe_text_html()

Generates HTML for the 'safe_text' input type (mostly used for gateway-related settings).

public generate_safe_text_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
7.6.0
Return values
string —

generate_select_html()

Generate Select HTML.

public generate_select_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_settings_html()

Generate Settings HTML.

public generate_settings_html([array<string|int, mixed> $form_fields = array() ][, bool $echo = true ]) : string

Generate the HTML for the fields on the "settings" screen.

Parameters
$form_fields : array<string|int, mixed> = array()

(default: array()) Array of form fields.

$echo : bool = true

Echo or return.

Tags
since
1.0.0
uses
method_exists()
Return values
string — the html for the settings

generate_text_html()

Generate Text Input HTML.

public generate_text_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_textarea_html()

Generate Textarea HTML.

public generate_textarea_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

generate_title_html()

Generate Title HTML.

public generate_title_html(string $key, array<string|int, mixed> $data) : string
Parameters
$key : string

Field key.

$data : array<string|int, mixed>

Field data.

Tags
since
1.0.0
Return values
string —

get_custom_attribute_html()

Get custom attributes.

public get_custom_attribute_html(array<string|int, mixed> $data) : string
Parameters
$data : array<string|int, mixed>

Field data.

Return values
string —

get_description_html()

Get HTML for descriptions.

public get_description_html(array<string|int, mixed> $data) : string
Parameters
$data : array<string|int, mixed>

Data for the description.

Return values
string —

get_field_default()

Get a fields default value. Defaults to "" if not set.

public get_field_default(array<string|int, mixed> $field) : string
Parameters
$field : array<string|int, mixed>

Field array.

Return values
string —

get_field_type()

Get a fields type. Defaults to "text" if not set.

public get_field_type(array<string|int, mixed> $field) : string
Parameters
$field : array<string|int, mixed>

Field array.

Return values
string —

get_field_value()

Get a field's posted and validated value.

public get_field_value(string $key, array<string|int, mixed> $field[, array<string|int, mixed> $post_data = array() ]) : string
Parameters
$key : string

Field key.

$field : array<string|int, mixed>

Field array.

$post_data : array<string|int, mixed> = array()

Posted data.

Return values
string —

get_new_payment_method_option_html()

Displays a radio button for entering a new payment method (new CC details) instead of using a saved method.

public get_new_payment_method_option_html() : mixed

Only displayed when a gateway supports tokenization.

Tags
since
2.6.0
Return values
mixed —

get_option()

Get option from DB.

public get_option(string $key[, mixed $empty_value = null ]) : string

Gets an option from the settings API, using defaults if necessary to prevent undefined notices.

Parameters
$key : string

Option key.

$empty_value : mixed = null

Value when empty.

Return values
string — The value specified for the option or a default value for the option.

get_tooltip_html()

Get HTML for tooltips.

public get_tooltip_html(array<string|int, mixed> $data) : string
Parameters
$data : array<string|int, mixed>

Data for the tooltip.

Return values
string —

hide_action_buttons()

Hide "Pay" and "Cancel" action buttons for pending orders as orders v2 takes a while to be captured.

public hide_action_buttons(array<string|int, mixed> $actions, WC_Order $order) : array<string|int, mixed>
Parameters
$actions : array<string|int, mixed>

An array with the default actions.

$order : WC_Order

The order.

Return values
array<string|int, mixed> —

init_settings()

Initialise Settings.

public init_settings() : mixed

Store all settings in a single database entry and make sure the $settings array is either the default or the settings stored in the database.

Tags
since
1.0.0
uses

get_option(), add_option()

Return values
mixed —

log()

Logging method.

public static log(string $message[, string $level = 'info' ]) : mixed
Parameters
$message : string

Log message.

$level : string = 'info'

Optional. Default 'info'. Possible values: emergency|alert|critical|error|warning|notice|info|debug.

Return values
mixed —

manage_account_restriction_status()

Handle PayPal order response to manage account restriction notices.

public manage_account_restriction_status(int|string $http_code, array<string|int, mixed> $response_data, WC_Order $order) : void

This method is called via the 'woocommerce_paypal_standard_order_created_response' hook and manages the account restriction flag based on PayPal API responses.

Extensions can disable this feature using the filter: add_filter( 'woocommerce_paypal_account_restriction_notices_enabled', '__return_false' );

Parameters
$http_code : int|string

The HTTP status code from the PayPal API response.

$response_data : array<string|int, mixed>

The decoded response data from the PayPal API.

$order : WC_Order

The WooCommerce order object.

Return values
void —

maybe_remove_fields()

Filter to remove fields for Orders v2.

public maybe_remove_fields(array<string|int, mixed> $form_fields) : array<string|int, mixed>
Parameters
$form_fields : array<string|int, mixed>

Form fields.

Return values
array<string|int, mixed> —

needs_setup()

Return whether or not this gateway still requires setup to function.

public needs_setup() : bool

When this gateway is toggled on via AJAX, if this returns true a redirect will occur to the settings page instead.

Tags
since
3.4.0
Return values
bool —

payment_fields()

Default payment fields display. Override this in your gateway to customize displayed fields.

public payment_fields() : mixed

By default this renders the payment gateway description.

Tags
since
1.5.7
Return values
mixed —

process_admin_options()

Processes and saves options.

public process_admin_options() : bool

If there is an error thrown, will continue to save and validate fields, but will leave the erroring field out.

Return values
bool — was anything saved?

process_payment()

Process the payment and return the result.

public process_payment(int $order_id) : array<string|int, mixed>
Parameters
$order_id : int

Order ID.

Tags
throws
Exception

If the PayPal order creation fails.

Return values
array<string|int, mixed> —

process_refund()

Process a refund if supported.

public process_refund(int $order_id[, float $amount = null ][, string $reason = '' ]) : bool|WP_Error
Parameters
$order_id : int

Order ID.

$amount : float = null

Refund amount.

$reason : string = ''

Refund reason.

Return values
bool|WP_Error —

set_post_data()

Sets the POSTed data. This method can be used to set specific data, instead of taking it from the $_POST array.

public set_post_data([array<string|int, mixed> $data = array() ]) : mixed
Parameters
$data : array<string|int, mixed> = array()

Posted data.

Return values
mixed —

should_load()

Determines whether PayPal Standard should be loaded or not.

public should_load() : bool

By default PayPal Standard isn't loaded on new installs or on existing sites which haven't set up the gateway.

Tags
since
5.5.0
Return values
bool — Whether PayPal Standard should be loaded.

supports()

Check if a gateway supports a given feature.

public supports(string $feature) : bool

Gateways should override this to declare support (or lack of support) for a feature. For backward compatibility, gateways support 'products' by default, but nothing else.

Parameters
$feature : string

string The name of a feature to test support for.

Tags
since
1.5.7
Return values
bool — True if the gateway supports the feature, false otherwise.

update_addresses_in_order()

Update the shipping and billing information for the order.

public update_addresses_in_order(int $order_id) : void

Hooked on 'woocommerce_before_thankyou'.

Parameters
$order_id : int

The order ID.

Return values
void —

update_option()

Update a single option.

public update_option(string $key[, mixed $value = '' ]) : bool
Parameters
$key : string

Option key.

$value : mixed = ''

Value to set.

Tags
since
3.4.0
Return values
bool — was anything saved?

validate_checkbox_field()

Validate Checkbox Field.

public validate_checkbox_field(string $key, string $value) : string

If not set, return "no", otherwise return "yes".

Parameters
$key : string

Field key.

$value : string

Posted Value.

Return values
string —

validate_decimal_field()

Validate Decimal Field.

public validate_decimal_field(string $key, string $value) : string

Make sure the data is escaped correctly, etc.

Parameters
$key : string

Field key.

$value : string

Posted Value.

Return values
string —

validate_multiselect_field()

Validate Multiselect Field.

public validate_multiselect_field(string $key, string $value) : string|array<string|int, mixed>
Parameters
$key : string

Field key.

$value : string

Posted Value.

Return values
string|array<string|int, mixed> —

validate_password_field()

Validate Password Field. No input sanitization is used to avoid corrupting passwords.

public validate_password_field(string $key, string $value) : string
Parameters
$key : string

Field key.

$value : string

Posted Value.

Return values
string —

validate_price_field()

Validate Price Field.

public validate_price_field(string $key, string $value) : string

Make sure the data is escaped correctly, etc.

Parameters
$key : string

Field key.

$value : string

Posted Value.

Return values
string —

validate_safe_text_field()

Sanitize 'Safe Text' fields.

public validate_safe_text_field(string $key, string $value) : string

These fields are similar to regular text fields, but a much smaller set of HTML tags are allowed. By default, this means <br>, <img>, <p> and <span> tags.

Note: this is a sanitization method, rather than a validation method (the name is due to some historic naming choices).

Parameters
$key : string

Field key (currently unused).

$value : string

Posted Value.

Return values
string —

validate_select_field()

Validate Select Field.

public validate_select_field(string $key, string $value) : string
Parameters
$key : string

Field key.

$value : string

Posted Value.

Return values
string —

validate_settings_fields()

Validate the data on the "Settings" form.

public validate_settings_fields([array<string|int, mixed> $form_fields = array() ]) : mixed
Parameters
$form_fields : array<string|int, mixed> = array()

Array of fields.

Tags
deprecated
2.6.0

No longer used.

Return values
mixed —

validate_text_field()

Validate Text Field.

public validate_text_field(string $key, string $value) : string

Make sure the data is escaped correctly, etc.

Parameters
$key : string

Field key.

$value : string

Posted Value.

Return values
string —

validate_textarea_field()

Validate Textarea Field.

public validate_textarea_field(string $key, string $value) : string
Parameters
$key : string

Field key.

$value : string

Posted Value.

Tags
since
9.0.0

No longer allows storing IFRAME, which was allowed for "ShareThis" integration no longer found in core.

Return values
string —

get_icon_image()

Get PayPal images for a country.

protected get_icon_image(string $country) : array<string|int, mixed>
Parameters
$country : string

Country code.

Tags
deprecated
10.6.0

Use get_paypal_icon_image() instead.

Return values
array<string|int, mixed> — of image URLs

set_defaults()

Set default required properties for each field.

protected set_defaults(array<string|int, mixed> $field) : array<string|int, mixed>
Parameters
$field : array<string|int, mixed>

Setting field array.

Return values
array<string|int, mixed> —