woocommerce-paypal-payments/modules/ppcp-applepay/services.php

82 lines
3.3 KiB
PHP
Raw Normal View History

<?php
/**
* The Applepay module services.
*
* @package WooCommerce\PayPalCommerce\Applepay
*/
declare(strict_types=1);
namespace WooCommerce\PayPalCommerce\Applepay;
2023-09-07 09:56:46 +02:00
use Automattic\WooCommerce\Blocks\Payments\PaymentMethodTypeInterface;
use WooCommerce\PayPalCommerce\ApiClient\Helper\Cache;
2023-08-24 18:05:05 +02:00
use WooCommerce\PayPalCommerce\Applepay\Assets\ApplePayButton;
use WooCommerce\PayPalCommerce\Applepay\Assets\AppleProductStatus;
use WooCommerce\PayPalCommerce\Applepay\Assets\DataToAppleButtonScripts;
2023-09-07 09:56:46 +02:00
use WooCommerce\PayPalCommerce\Applepay\Assets\BlocksPaymentMethod;
use WooCommerce\PayPalCommerce\Vendor\Psr\Container\ContainerInterface;
use WooCommerce\PayPalCommerce\WcGateway\Settings\Settings;
return array(
2023-09-08 16:58:32 +02:00
'applepay.status-cache' => static function( ContainerInterface $container ): Cache {
return new Cache( 'ppcp-paypal-apple-status-cache' );
},
2023-09-08 16:58:32 +02:00
'applepay.apple-product-status' => static function( ContainerInterface $container ): AppleProductStatus {
return new AppleProductStatus(
$container->get( 'wcgateway.settings' ),
$container->get( 'api.endpoint.partners' ),
2023-08-31 12:48:01 +02:00
$container->get( 'applepay.status-cache' ),
$container->get( 'onboarding.state' )
);
},
2023-09-08 16:58:32 +02:00
'applepay.enabled' => static function ( ContainerInterface $container ): bool {
2023-09-06 13:52:23 +02:00
$status = $container->get( 'applepay.apple-product-status' );
2023-09-08 16:58:32 +02:00
assert( $status instanceof AppleProductStatus );
2023-09-12 14:06:16 +02:00
/**
* If merchant isn't onboarded via /v1/customer/partner-referrals this returns false as the API call fails.
*/
return apply_filters( 'woocommerce_paypal_payments_applepay_product_status', $status->apple_is_active() );
},
2023-09-08 16:58:32 +02:00
'applepay.server_supported' => static function ( ContainerInterface $container ): bool {
return ! empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off';
},
2023-09-08 16:58:32 +02:00
'applepay.url' => static function ( ContainerInterface $container ): string {
$path = realpath( __FILE__ );
if ( false === $path ) {
return '';
}
return plugins_url(
'/modules/ppcp-applepay/',
dirname( $path, 3 ) . '/woocommerce-paypal-payments.php'
);
},
2023-09-08 16:58:32 +02:00
'applepay.sdk_script_url' => static function ( ContainerInterface $container ): string {
return 'https://applepay.cdn-apple.com/jsapi/v1/apple-pay-sdk.js';
},
2023-09-08 16:58:32 +02:00
'applepay.data_to_scripts' => static function ( ContainerInterface $container ): DataToAppleButtonScripts {
return new DataToAppleButtonScripts( $container->get( 'applepay.sdk_script_url' ), $container->get( 'wcgateway.settings' ) );
},
2023-09-08 16:58:32 +02:00
'applepay.button' => static function ( ContainerInterface $container ): ApplePayButton {
2023-08-31 12:48:01 +02:00
return new ApplePayButton(
$container->get( 'wcgateway.settings' ),
$container->get( 'woocommerce.logger.woocommerce' ),
$container->get( 'wcgateway.order-processor' ),
$container->get( 'applepay.url' ),
2023-09-08 16:58:32 +02:00
$container->get( 'ppcp.asset-version' ),
$container->get( 'applepay.data_to_scripts' ),
$container->get( 'wcgateway.settings.status' )
2023-08-31 12:48:01 +02:00
);
},
2023-09-07 09:56:46 +02:00
'applepay.blocks-payment-method' => static function ( ContainerInterface $container ): PaymentMethodTypeInterface {
return new BlocksPaymentMethod(
'ppcp-applepay',
$container->get( 'applepay.url' ),
$container->get( 'ppcp.asset-version' ),
$container->get( 'applepay.button' ),
$container->get( 'blocks.method' )
);
},
);