ml__( 'Afterpay allows customers to receive products immediately and pay for purchases over four installments, always interest-free.', 'woocommerce' ), 'image' => plugins_url( 'assets/images/onboarding/afterpay.png', WC_PLUGIN_FILE ), 'icon' => plugins_url( 'assets/images/onboarding/icons/afterpay-clearpay.svg', WC_PLUGIN_FILE ), 'plugin' => array( '_type' => self::PLUGIN_TYPE_WPORG, 'slug' => 'afterpay-gateway-for-woocommerce', ), 'links' => array( array( '_type' => self::LINK_TYPE_PRICING, 'url' => 'https://www.afterpay.com/for-retailers', ), array( '_type' => self::LINK_TYPE_ABOUT, 'url' => 'https://woocommerce.com/products/afterpay/', ), array( '_type' => self::LINK_TYPE_TERMS, 'url' => 'https://www.afterpay.com/terms-of-service', ), array( '_type' => self::LINK_TYPE_DOCS, 'url' => 'https://woocommerce.com/document/afterpay/', ), array( '_type' => self::LINK_TYPE_SUPPORT, 'url' => 'https://woocommerce.com/my-account/contact-support/?select=afterpay', ), ), ), self::CLEARPAY => array( '_type' => self::TYPE_BNPL, 'title' => esc_html__( 'Clearpay', 'woocommerce' ), 'description' => esc_html__( 'Clearpay allows customers to receive products immediately and pay for purchases over four installments, always interest-free.', 'woocommerce' ), 'icon' => plugins_url( 'assets/images/onboarding/icons/afterpay-clearpay.svg', WC_PLUGIN_FILE ), 'plugin' => array( '_type' => self::PLUGIN_TYPE_WPORG, 'slug' => 'clearpay-gateway-for-woocommerce', ), 'links' => array( array( '_type' => self::LINK_TYPE_PRICING, 'url' => 'https://www.clearpay.co.uk/en-GB/for-retailers', ), array( '_type' => self::LINK_TYPE_ABOUT, 'url' => 'https://woocommerce.com/products/clearpay/', ), array( '_type' => self::LINK_TYPE_TERMS, 'url' => 'https://www.clearpay.co.uk/terms-of-service', ), array( '_type' => self::LINK_TYPE_DOCS, 'url' => 'https://woocommerce.com/document/clearpay/', ), array( '_type' => self::LINK_TYPE_SUPPORT, 'url' => 'https://woocommerce.com/my-account/contact-support/?select=clearpay', ), ), ), self::KLARNA => array( '_type' => self::TYPE_BNPL, 'title' => esc_html__( 'Klarna Payments', 'woocommerce' ), 'description' => esc_html__( 'Choose the payment that you want, pay now, pay later or slice it. No credit card numbers, no passwords, no worries.', 'woocommerce' ), 'image' => plugins_url( 'assets/images/onboarding/klarna-black.png', WC_PLUGIN_FILE ), 'icon' => plugins_url( 'assets/images/onboarding/icons/klarna.svg', WC_PLUGIN_FILE ), 'plugin' => array( '_type' => self::PLUGIN_TYPE_WPORG, 'slug' => 'klarna-payments-for-woocommerce', ), 'links' => array( array( '_type' => self::LINK_TYPE_PRICING, 'url' => 'https://www.klarna.com/us/business/payment-methods/', ), array( '_type' => self::LINK_TYPE_ABOUT, 'url' => 'https://woocommerce.com/products/klarna-payments/', ), array( '_type' => self::LINK_TYPE_TERMS, 'url' => 'https://www.klarna.com/us/legal/', ), array( '_type' => self::LINK_TYPE_DOCS, 'url' => 'https://woocommerce.com/document/klarna-payments/', ), array( '_type' => self::LINK_TYPE_SUPPORT, 'url' => 'https://woocommerce.com/my-account/contact-support/?select=klarna-payments', ), ), ), self::HELIOPAY => array( '_type' => self::TYPE_CRYPTO, 'title' => esc_html__( 'Helio Pay', 'woocommerce' ), 'description' => esc_html__( 'Effortlessly accept cryptocurrency payments in your WooCommerce store with Helio Pay.', 'woocommerce' ), 'icon' => plugins_url( 'assets/images/onboarding/icons/heliopay.png', WC_PLUGIN_FILE ), 'plugin' => array( '_type' => self::PLUGIN_TYPE_WPORG, 'slug' => 'helio', ), 'links' => array( array( '_type' => self::LINK_TYPE_PRICING, 'url' => 'https://www.hel.io/pricing', ), array( '_type' => self::LINK_TYPE_ABOUT, 'url' => 'https://woocommerce.com/products/helio-pay/', ), array( '_type' => self::LINK_TYPE_TERMS, 'url' => 'https://info.docs.hel.io/terms-of-service', ), array( '_type' => self::LINK_TYPE_DOCS, 'url' => 'https://woocommerce.com/document/helio-pay/', ), array( '_type' => self::LINK_TYPE_SUPPORT, 'url' => 'https://woocommerce.com/my-account/contact-support/?select=helio-pay', ), ), ), ); } /** * Get the base details for a specific extension. * * @see self::standardize_extension_details() for the supported entries. * * @param string $extension_id The extension ID. * * @return ?array The extension base details. * Null if the extension is not one we have details for. */ private function get_extension_base_details( string $extension_id ): ?array { $extensions = $this->get_all_extensions_base_details(); if ( ! isset( $extensions[ $extension_id ] ) ) { return null; } return $extensions[ $extension_id ]; } /** * Standardize the details for an extension. * * Ensures that the details array has all the required fields, and fills in any missing optional fields with defaults. * We also enforce a consistent order for the fields. * * @param array $extension_details The extension details. * * @return array The standardized extension details. */ private function standardize_extension_details( array $extension_details ): array { $standardized = array(); // Required fields. $standardized['id'] = $extension_details['id']; $standardized['_priority'] = $extension_details['_priority']; $standardized['_type'] = $extension_details['_type']; $standardized['title'] = $extension_details['title']; $standardized['description'] = $extension_details['description']; $standardized['plugin'] = $extension_details['plugin']; // Optional fields. $standardized['image'] = $extension_details['image'] ?? ''; $standardized['icon'] = $extension_details['icon'] ?? ''; $standardized['links'] = $extension_details['links'] ?? array(); $standardized['tags'] = $extension_details['tags'] ?? array(); $standardized['_incentive'] = $extension_details['_incentive'] ?? null; return $standardized; } }