You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
95 lines
2.5 KiB
95 lines
2.5 KiB
<?php
|
|
|
|
use WPML\FP\Obj;
|
|
use WPML\FP\Fns;
|
|
use function WCML\functions\getClientCurrency;
|
|
|
|
/**
|
|
* @see https://wordpress.org/plugins/woocommerce-paypal-payments/
|
|
*/
|
|
class WCML_Payment_Gateway_PayPal_V2 extends WCML_Payment_Gateway_PayPal {
|
|
|
|
const ID = 'ppcp-gateway';
|
|
|
|
const FIELDS = [
|
|
'merchant_email',
|
|
'merchant_id',
|
|
'client_id',
|
|
'client_secret',
|
|
'currency',
|
|
];
|
|
|
|
const BEARER_TOKEN_TRANSIENT = 'ppcp-paypal-bearerppcp-bearer';
|
|
|
|
public function get_output_model() {
|
|
return [
|
|
'id' => $this->get_id(),
|
|
'title' => $this->get_title(),
|
|
'isSupported' => true,
|
|
'settings' => $this->get_currencies_details(),
|
|
'tooltip' => '',
|
|
'strings' => [
|
|
'labelCurrency' => __( 'Currency', 'woocommerce-multilingual' ),
|
|
'labelPayPalEmail' => __( 'PayPal Email', 'woocommerce-multilingual' ),
|
|
'labelMerchantId' => __( 'Merchant ID', 'woocommerce-multilingual' ),
|
|
'labelClientId' => __( 'Client ID', 'woocommerce-multilingual' ),
|
|
'labelSecretKey' => __( 'Secret Key', 'woocommerce-multilingual' ),
|
|
// translators: %s is currency code.
|
|
'tooltipNotSupported' => __( 'This gateway does not support %s. To show this gateway please select another currency.', 'woocommerce-multilingual' ),
|
|
],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @return array
|
|
*/
|
|
public function get_currencies_details() {
|
|
$currencies_details = [];
|
|
$default_currency = wcml_get_woocommerce_currency_option();
|
|
$woocommerce_currencies = get_woocommerce_currencies();
|
|
|
|
foreach ( $woocommerce_currencies as $code => $currency ) {
|
|
if ( $default_currency === $code ) {
|
|
$getSetting = Obj::propOr( '', Fns::__, $this->get_gateway()->settings );
|
|
} else {
|
|
$getSetting = Obj::propOr( '', Fns::__, $this->get_setting( $code ) );
|
|
}
|
|
|
|
foreach ( self::FIELDS as $key ) {
|
|
$currencies_details[ $code ][ $key ] = $getSetting( $key );
|
|
}
|
|
|
|
$currencies_details[ $code ]['isValid'] = $this->is_valid_for_use( $code );
|
|
}
|
|
|
|
return $currencies_details;
|
|
}
|
|
|
|
public function add_hooks() {
|
|
|
|
}
|
|
|
|
/**
|
|
* @param array $settings
|
|
*
|
|
* @return array
|
|
*/
|
|
public static function filter_ppcp_args( $settings ) {
|
|
if ( is_admin() ) {
|
|
return $settings;
|
|
}
|
|
|
|
$gateway = Obj::prop( getClientCurrency(), get_option( self::OPTION_KEY . self::ID, [] ) );
|
|
|
|
if ( $gateway ) {
|
|
$getSetting = Obj::prop( Fns::__, $gateway );
|
|
|
|
foreach ( self::FIELDS as $key ) {
|
|
$settings[ $key ] = $getSetting( $key ) ?: $settings[ $key ];
|
|
}
|
|
}
|
|
|
|
return $settings;
|
|
}
|
|
|
|
}
|
|
|