checkout; try { $redirect_url = $checkout->start_checkout_from_cart(); wp_safe_redirect( $redirect_url ); exit; } catch( PayPal_API_Exception $e ) { wc_add_notice( $e->getMessage(), 'error' ); $redirect_url = wc_get_cart_url(); $settings = wc_gateway_ppec()->settings; $client = wc_gateway_ppec()->client; if ( $settings->is_enabled() && $client->get_payer_id() ) { ob_end_clean(); ?> settings->is_logging_enabled() ) { return false; } if ( ! isset( $wc_ppec_logger ) ) { $wc_ppec_logger = new WC_Logger(); } $wc_ppec_logger->add( 'wc_gateway_ppec', $message ); if ( defined( 'WP_DEBUG' ) && WP_DEBUG ) { error_log( $message ); } } /** * Whether PayPal credit is supported. * * @since 1.5.0 * * @return bool Returns true if PayPal credit is supported */ function wc_gateway_ppec_is_credit_supported() { $base = wc_get_base_location(); return 'US' === $base['country'] && 'USD' === get_woocommerce_currency(); } /** * Checks whether buyer is checking out with PayPal Credit. * * @since 1.2.0 * * @return bool Returns true if buyer is checking out with PayPal Credit */ function wc_gateway_ppec_is_using_credit() { return ! empty( $_GET['use-ppc'] ) && 'true' === $_GET['use-ppc']; } const PPEC_FEE_META_NAME_OLD = 'PayPal Transaction Fee'; const PPEC_FEE_META_NAME_NEW = '_paypal_transaction_fee'; /** * Sets the PayPal Fee in the order metadata * * @since 1.6.6 * * @param object $order Order to modify * @param string $fee Fee to save */ function wc_gateway_ppec_set_transaction_fee( $order, $fee ) { if ( empty( $fee ) ) { return; } $fee = wc_clean( $fee ); if ( version_compare( WC_VERSION, '3.0', '<' ) ) { update_post_meta( $order->id, PPEC_FEE_META_NAME_NEW, $fee ); } else { $order->update_meta_data( PPEC_FEE_META_NAME_NEW, $fee ); $order->save_meta_data(); } } /** * Gets the PayPal Fee from the order metadata, migrates if the fee was saved under a legacy key * * @since 1.6.6 * * @param object $order Order to read * @return string Returns the fee or an empty string if the fee has not been set on the order */ function wc_gateway_ppec_get_transaction_fee( $order ) { $old_wc = version_compare( WC_VERSION, '3.0', '<' ); //retrieve the fee using the new key if ( $old_wc ) { $fee = get_post_meta( $order->id, PPEC_FEE_META_NAME_NEW, true ); } else { $fee = $order->get_meta( PPEC_FEE_META_NAME_NEW, true ); } //if the fee was found, return if ( is_numeric( $fee ) ) { return $fee; } //attempt to retrieve the old meta, delete its old key, and migrate it to the new one if ( $old_wc ) { $fee = get_post_meta( $order->id, PPEC_FEE_META_NAME_OLD, true ); delete_post_meta( $order->id, PPEC_FEE_META_NAME_OLD ); } else { $fee = $order->get_meta( PPEC_FEE_META_NAME_OLD, true ); $order->delete_meta_data( PPEC_FEE_META_NAME_OLD ); $order->save_meta_data(); } if ( is_numeric( $fee ) ) { wc_gateway_ppec_set_transaction_fee( $order, $fee ); } return $fee; }