/**
  * Function to process the [stripe] shortcode
  * 
  * @since 2.0.0
  */
 function stripe_shortcode($attr, $content = null)
 {
     global $sc_options, $sc_script_options, $script_vars;
     //static $sc_id = 0;
     // Increment static uid counter
     self::$sc_id++;
     $attr = shortcode_atts(array('name' => !(null === $sc_options->get_setting_value('name')) ? $sc_options->get_setting_value('name') : get_bloginfo('title'), 'description' => '', 'amount' => 0, 'image_url' => '', 'currency' => !(null === $sc_options->get_setting_value('currency')) ? $sc_options->get_setting_value('currency') : 'USD', 'checkout_button_label' => '', 'billing' => !(null === $sc_options->get_setting_value('billing')) ? 'true' : 'false', 'shipping' => !(null === $sc_options->get_setting_value('shipping')) ? 'true' : 'false', 'payment_button_label' => !(null === $sc_options->get_setting_value('payment_button_label')) ? $sc_options->get_setting_value('payment_button_label') : __('Pay with Card', 'stripe'), 'enable_remember' => !(null === $sc_options->get_setting_value('enable_remember')) ? 'true' : 'false', 'bitcoin' => !(null === $sc_options->get_setting_value('use_bitcoin')) ? 'true' : 'false', 'success_redirect_url' => !(null === $sc_options->get_setting_value('success_redirect_url')) ? $sc_options->get_setting_value('success_redirect_url') : get_permalink(), 'failure_redirect_url' => !(null === $sc_options->get_setting_value('failure_redirect_url')) ? $sc_options->get_setting_value('failure_redirect_url') : get_permalink(), 'prefill_email' => 'false', 'verify_zip' => !(null === $sc_options->get_setting_value('verify_zip')) ? 'true' : 'false', 'payment_button_style' => null === $sc_options->get_setting_value('payment_button_style') || $sc_options->get_setting_value('payment_button_style') == 'none' ? 'none' : '', 'test_mode' => 'false', 'id' => null, 'alipay' => !(null === $sc_options->get_setting_value('alipay')) ? $sc_options->get_setting_value('alipay') : 'false', 'alipay_reusable' => !(null === $sc_options->get_setting_value('alipay_reusable')) ? 'true' : 'false', 'locale' => !(null === $sc_options->get_setting_value('locale')) ? $sc_options->get_setting_value('locale') : 'en', 'payment_details_placement' => 'above', 'test_secret_key' => '', 'test_publishable_key' => '', 'live_secret_key' => '', 'live_publishable_key' => ''), $attr, 'stripe');
     $name = $attr['name'];
     $description = $attr['description'];
     $amount = $attr['amount'];
     $image_url = $attr['image_url'];
     $currency = $attr['currency'];
     $checkout_button_label = $attr['checkout_button_label'];
     $billing = $attr['billing'];
     $shipping = $attr['shipping'];
     $payment_button_label = $attr['payment_button_label'];
     $enable_remember = $attr['enable_remember'];
     $bitcoin = $attr['bitcoin'];
     $success_redirect_url = $attr['success_redirect_url'];
     $failure_redirect_url = $attr['failure_redirect_url'];
     $prefill_email = $attr['prefill_email'];
     $verify_zip = $attr['verify_zip'];
     $payment_button_style = $attr['payment_button_style'];
     $test_mode = $attr['test_mode'];
     $id = $attr['id'];
     $alipay = $attr['alipay'];
     $alipay_reusable = $attr['alipay_reusable'];
     $locale = $attr['locale'];
     $payment_details_placement = $attr['payment_details_placement'];
     $test_secret_key = $attr['test_secret_key'];
     $test_publishable_key = $attr['test_publishable_key'];
     $live_secret_key = $attr['live_secret_key'];
     $live_publishable_key = $attr['live_publishable_key'];
     // Remove these first to avoid issues if there were keys set in the past but now there are not.
     $sc_options->delete_setting('live_secret_key_temp');
     $sc_options->delete_setting('test_secret_key_temp');
     if (!empty($test_secret_key)) {
         $sc_options->add_setting('test_secret_key_temp', $test_secret_key);
     }
     if (!empty($test_publishable_key)) {
         $sc_options->add_setting('test_publishable_key_temp', $test_publishable_key);
     }
     if (!empty($live_secret_key)) {
         $sc_options->add_setting('live_secret_key_temp', $live_secret_key);
     }
     if (!empty($live_publishable_key)) {
         $sc_options->add_setting('live_publishable_key_temp', $live_publishable_key);
     }
     // Generate custom form id attribute if one not specified.
     // Rename var for clarity.
     $form_id = $id;
     if ($form_id === null || empty($form_id)) {
         $form_id = 'sc_checkout_form_' . self::$sc_id;
     }
     Shortcode_Tracker::set_as_base('stripe', $attr);
     $test_mode = isset($_GET['test_mode']) ? 'true' : $test_mode;
     // Check if in test mode or live mode
     if (0 == $sc_options->get_setting_value('enable_live_key') || 'true' == $test_mode) {
         // Test mode
         if (!(null === $sc_options->get_setting_value('test_publishable_key_temp'))) {
             $data_key = $sc_options->get_setting_value('test_publishable_key_temp');
             $sc_options->delete_setting('test_publishable_key_temp');
         } else {
             $data_key = null !== $sc_options->get_setting_value('test_publish_key') ? $sc_options->get_setting_value('test_publish_key') : '';
         }
         if (null === $sc_options->get_setting_value('test_secret_key') && null === $sc_options->get_setting_value('test_publishable_key_temp')) {
             $data_key = '';
         }
     } else {
         // Live mode
         if (!(null === $sc_options->get_setting_value('live_publishable_key_temp'))) {
             $data_key = $sc_options->get_setting_value('live_publishable_key_temp');
             $sc_options->delete_setting('live_publishable_key_temp');
         } else {
             $data_key = null !== $sc_options->get_setting_value('live_publish_key') ? $sc_options->get_setting_value('live_publish_key') : '';
         }
         if (null === $sc_options->get_setting_value('live_secret_key') && null === $sc_options->get_setting_value('live_publishable_key_temp')) {
             $data_key = '';
         }
     }
     if (empty($data_key)) {
         if (current_user_can('manage_options')) {
             return '<h6>' . __('Admin note: Checkout button will not appear until Stripe API keys are saved in settings.', 'stripe') . '</h6>';
         } else {
             return '';
         }
     }
     if (!empty($prefill_email) && $prefill_email !== 'false') {
         // Get current logged in user email
         if (is_user_logged_in()) {
             $prefill_email = get_userdata(get_current_user_id())->user_email;
         } else {
             $prefill_email = 'false';
         }
     }
     // Add Parsley JS form validation attribute here.
     $html = '<form method="POST" action="" class="' . $this->get_form_classes() . '" ' . 'id="' . esc_attr($form_id) . '" ' . 'data-sc-id="' . self::$sc_id . '" ' . 'data-parsley-validate>';
     // Save all of our options to an array so others can run them through a filter if they need to
     $sc_script_options = array('script' => array('key' => $data_key, 'name' => html_entity_decode($name), 'description' => html_entity_decode($description), 'amount' => $amount, 'image' => $image_url, 'currency' => strtoupper($currency), 'panel-label' => html_entity_decode($checkout_button_label), 'billing-address' => $billing, 'shipping-address' => $shipping, 'label' => html_entity_decode($payment_button_label), 'allow-remember-me' => $enable_remember, 'bitcoin' => $bitcoin, 'email' => $prefill_email, 'verify_zip' => $verify_zip, 'alipay' => $alipay, 'alipay_reusable' => $alipay_reusable, 'locale' => $locale, 'test_mode' => $test_mode), 'other' => array('success-redirect-url' => $success_redirect_url, 'failure-redirect-url' => $failure_redirect_url));
     $html .= do_shortcode($content);
     // Apply filter after shortcode processed.
     $sc_script_options = apply_filters('sc_modify_script_options', $sc_script_options);
     // Set our global array based on the uid so we can make sure each button/form is unique
     $script_vars[self::$sc_id] = array('key' => !empty($sc_script_options['script']['key']) ? $sc_script_options['script']['key'] : (!(null === $sc_options->get_setting_value('key')) ? $sc_options->get_setting_value('key') : -1), 'name' => !empty($sc_script_options['script']['name']) ? $sc_script_options['script']['name'] : (!(null === $sc_options->get_setting_value('name')) ? $sc_options->get_setting_value('name') : -1), 'description' => !empty($sc_script_options['script']['description']) ? $sc_script_options['script']['description'] : (!(null === $sc_options->get_setting_value('description')) ? $sc_options->get_setting_value('description') : -1), 'amount' => !empty($sc_script_options['script']['amount']) ? $sc_script_options['script']['amount'] : 0, 'image' => !empty($sc_script_options['script']['image']) ? $sc_script_options['script']['image'] : (!(null === $sc_options->get_setting_value('image_url')) ? $sc_options->get_setting_value('image_url') : -1), 'currency' => !empty($sc_script_options['script']['currency']) ? $sc_script_options['script']['currency'] : (!(null === $sc_options->get_setting_value('currency')) ? $sc_options->get_setting_value('currency') : -1), 'panelLabel' => !empty($sc_script_options['script']['panel-label']) ? $sc_script_options['script']['panel-label'] : (!(null === $sc_options->get_setting_value('checkout_button_label')) ? $sc_options->get_setting_value('checkout_button_label') : -1), 'billingAddress' => !empty($sc_script_options['script']['billing-address']) ? $sc_script_options['script']['billing-address'] : (!(null === $sc_options->get_setting_value('billing')) ? $sc_options->get_setting_value('billing') : -1), 'shippingAddress' => !empty($sc_script_options['script']['shipping-address']) ? $sc_script_options['script']['shipping-address'] : (!(null === $sc_options->get_setting_value('shipping')) ? $sc_options->get_setting_value('shipping') : -1), 'allowRememberMe' => !empty($sc_script_options['script']['allow-remember-me']) ? $sc_script_options['script']['allow-remember-me'] : (!(null === $sc_options->get_setting_value('enable_remember')) ? $sc_options->get_setting_value('enable_remember') : -1), 'bitcoin' => !empty($sc_script_options['script']['bitcoin']) ? $sc_script_options['script']['bitcoin'] : (!(null === $sc_options->get_setting_value('use_bitcoin')) ? $sc_options->get_setting_value('use_bitcoin') : -1), 'email' => !empty($sc_script_options['script']['email']) && !($sc_script_options['script']['email'] === 'false') ? $sc_script_options['script']['email'] : -1, 'zipCode' => !empty($sc_script_options['script']['verify_zip']) && !($sc_script_options['script']['verify_zip'] === 'false') ? $sc_script_options['script']['verify_zip'] : -1, 'alipay' => !empty($sc_script_options['script']['alipay']) && !($sc_script_options['script']['alipay'] === 'false') ? $sc_script_options['script']['alipay'] : -1, 'alipayReusable' => !empty($sc_script_options['script']['alipay_reusable']) && !($sc_script_options['script']['alipay_reusable'] === 'false') ? $sc_script_options['script']['alipay_reusable'] : -1, 'locale' => !empty($sc_script_options['script']['locale']) ? $sc_script_options['script']['locale'] : 'auto', 'testMode' => !empty($sc_script_options['script']['test_mode']) && !($sc_script_options['script']['test_mode'] === 'false') ? $sc_script_options['script']['test_mode'] : -1, 'invalid_html_string' => __('This button has been disable because the form is not well-formed HTML. Please check your shortcode source code to make sure nothing is conflicting.', 'stripe'), 'setupFee' => !empty($sc_script_options['script']['setupFee']) ? $sc_script_options['script']['setupFee'] : 0);
     // Check if the current user is an admin and add a script variable we can use to check this
     if (current_user_can('manage_options')) {
         $script_vars[self::$sc_id]['is_admin'] = true;
     }
     $name = $sc_script_options['script']['name'];
     $description = $sc_script_options['script']['description'];
     $amount = $sc_script_options['script']['amount'];
     $success_redirect_url = $sc_script_options['other']['success-redirect-url'];
     $failure_redirect_url = $sc_script_options['other']['failure-redirect-url'];
     $currency = $sc_script_options['script']['currency'];
     $html .= '<input type="hidden" name="sc-name" value="' . esc_attr($name) . '" />';
     $html .= '<input type="hidden" name="sc-description" value="' . esc_attr($description) . '" />';
     $html .= '<input type="hidden" name="sc-amount" class="sc_amount" value="" />';
     $html .= '<input type="hidden" name="sc-redirect" value="' . esc_attr(!empty($success_redirect_url) ? $success_redirect_url : get_permalink()) . '" />';
     $html .= '<input type="hidden" name="sc-redirect-fail" value="' . esc_attr(!empty($failure_redirect_url) ? $failure_redirect_url : get_permalink()) . '" />';
     $html .= '<input type="hidden" name="sc-currency" value="' . esc_attr($currency) . '" />';
     $html .= '<input type="hidden" name="stripeToken" value="" class="sc_stripeToken" />';
     $html .= '<input type="hidden" name="stripeEmail" value="" class="sc_stripeEmail" />';
     $html .= '<input type="hidden" name="wp-simple-pay" value="1" />';
     $html .= '<input type="hidden" name="sc-details-placement" value="' . esc_attr($payment_details_placement) . '" />';
     $html .= wp_nonce_field('charge_card', 'wp-simple-pay-pro-nonce', '', false);
     if ($test_mode == 'true') {
         $html .= '<input type="hidden" name="sc_test_mode" value="true" />';
     }
     // Add shipping information fields if it is enabled
     if ($shipping === 'true') {
         $html .= '<input type="hidden" name="sc-shipping-name" class="sc-shipping-name" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-country" class="sc-shipping-country" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-zip" class="sc-shipping-zip" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-state" class="sc-shipping-state" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-address" class="sc-shipping-address" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-city" class="sc-shipping-city" value="" />';
     }
     // Add filter for adding html before payment button.
     $html .= apply_filters('sc_before_payment_button', '');
     // Add filter for adding icon html inside <button> element preceding button text.
     $payment_button_icon_html = apply_filters('simpay_payment_button_icon_html', '');
     // Default output: <button class="sc-payment-btn stripe-button-el"><span>Buy Now</span></button>;
     $payment_button_html = '<button class="' . $this->get_payment_button_classes($payment_button_style) . '">' . $payment_button_icon_html . '<span>' . $payment_button_label . '</span></button>';
     $html .= $payment_button_html;
     $html .= '</form>';
     $error_count = Shortcode_Tracker::get_error_count();
     Shortcode_Tracker::reset_error_count();
     if ($error_count > 0 && !isset($_GET['charge'])) {
         if (current_user_can('manage_options')) {
             return Shortcode_Tracker::print_errors();
         } else {
             return '';
         }
     }
     // Reset the static counter now in case there are multiple forms on a page
     $this->total_fields(true);
     $referer = wp_get_referer();
     // Also check 'sub_id' here for trials subscriptions that don't pass 'charge'
     if (!isset($_GET['charge']) && !isset($_GET['error_code']) && !isset($_GET['sub_id']) || (!(null === $sc_options->get_setting_value('success_redirect_url')) || !(null === $sc_options->get_setting_value('failure_redirect_url'))) && ($referer !== false && $success_redirect_url != $referer && ($referer !== false && $failure_redirect_url != $referer)) && !isset($_GET['test_mode'])) {
         return $html;
     }
     return '';
 }
 /**
  * Function to process the [stripe] shortcode
  * 
  * @since 2.0.0
  */
 function stripe_shortcode($attr, $content = null)
 {
     global $sc_options, $sc_script_options, $script_vars;
     //static $sc_id = 0;
     // Increment static uid counter
     self::$sc_id++;
     $attr = shortcode_atts(array('name' => !(null === $sc_options->get_setting_value('name')) ? $sc_options->get_setting_value('name') : get_bloginfo('title'), 'description' => '', 'amount' => 0, 'image_url' => '', 'currency' => !(null === $sc_options->get_setting_value('currency')) ? $sc_options->get_setting_value('currency') : 'USD', 'checkout_button_label' => '', 'billing' => '', 'shipping' => '', 'payment_button_label' => !(null === $sc_options->get_setting_value('payment_button_label')) ? $sc_options->get_setting_value('payment_button_label') : __('Pay with Card', 'sc'), 'enable_remember' => !(null === $sc_options->get_setting_value('enable_remember')) ? 'true' : 'false', 'bitcoin' => !(null === $sc_options->get_setting_value('use_bitcoin')) ? 'true' : 'false', 'success_redirect_url' => !(null === $sc_options->get_setting_value('success_redirect_url')) ? $sc_options->get_setting_value('success_redirect_url') : get_permalink(), 'failure_redirect_url' => !(null === $sc_options->get_setting_value('failure_redirect_url')) ? $sc_options->get_setting_value('failure_redirect_url') : get_permalink(), 'prefill_email' => 'false', 'verify_zip' => !(null === $sc_options->get_setting_value('verify_zip')) ? 'true' : 'false', 'payment_button_style' => null === $sc_options->get_setting_value('payment_button_style') || $sc_options->get_setting_value('payment_button_style') == 'none' ? 'none' : '', 'test_mode' => 'false', 'id' => null, 'alipay' => !(null === $sc_options->get_setting_value('alipay')) ? $sc_options->get_setting_value('alipay') : 'false', 'alipay_reusable' => !(null === $sc_options->get_setting_value('alipay_reusable')) ? 'true' : 'false', 'locale' => !(null === $sc_options->get_setting_value('locale')) ? $sc_options->get_setting_value('locale') : 'en', 'payment_details_placement' => 'above', 'test_secret_key' => '', 'test_publishable_key' => '', 'live_secret_key' => '', 'live_publishable_key' => ''), $attr, 'stripe');
     $name = $attr['name'];
     $description = $attr['description'];
     $amount = $attr['amount'];
     $image_url = $attr['image_url'];
     $currency = $attr['currency'];
     $checkout_button_label = $attr['checkout_button_label'];
     $billing = $attr['billing'];
     $shipping = $attr['shipping'];
     $payment_button_label = $attr['payment_button_label'];
     $enable_remember = $attr['enable_remember'];
     $bitcoin = $attr['bitcoin'];
     $success_redirect_url = $attr['success_redirect_url'];
     $failure_redirect_url = $attr['failure_redirect_url'];
     $prefill_email = $attr['prefill_email'];
     $verify_zip = $attr['verify_zip'];
     $payment_button_style = $attr['payment_button_style'];
     $test_mode = $attr['test_mode'];
     $id = $attr['id'];
     $alipay = $attr['alipay'];
     $alipay_reusable = $attr['alipay_reusable'];
     $locale = $attr['locale'];
     $payment_details_placement = $attr['payment_details_placement'];
     $test_secret_key = $attr['test_secret_key'];
     $test_publishable_key = $attr['test_publishable_key'];
     $live_secret_key = $attr['live_secret_key'];
     $live_publishable_key = $attr['live_publishable_key'];
     // Remove these first to avoid issues if there were keys set in the past but now there are not.
     $sc_options->delete_setting('live_secret_key_temp');
     $sc_options->delete_setting('test_secret_key_temp');
     if (!empty($test_secret_key)) {
         $sc_options->add_setting('test_secret_key_temp', $test_secret_key);
     }
     if (!empty($test_publishable_key)) {
         $sc_options->add_setting('test_publishable_key_temp', $test_publishable_key);
     }
     if (!empty($live_secret_key)) {
         $sc_options->add_setting('live_secret_key_temp', $live_secret_key);
     }
     if (!empty($live_publishable_key)) {
         $sc_options->add_setting('live_publishable_key_temp', $live_publishable_key);
     }
     // Generate custom form id attribute if one not specified.
     // Rename var for clarity.
     $form_id = $id;
     if ($form_id === null || empty($form_id)) {
         $form_id = 'sc_checkout_form_' . self::$sc_id;
     }
     Shortcode_Tracker::set_as_base('stripe', $attr);
     $test_mode = isset($_GET['test_mode']) ? 'true' : $test_mode;
     // Check if in test mode or live mode
     if (0 == $sc_options->get_setting_value('enable_live_key') || 'true' == $test_mode) {
         // Test mode
         if (!(null === $sc_options->get_setting_value('test_publishable_key_temp'))) {
             $data_key = $sc_options->get_setting_value('test_publishable_key_temp');
             $sc_options->delete_setting('test_publishable_key_temp');
         } else {
             $data_key = null !== $sc_options->get_setting_value('test_publish_key') ? $sc_options->get_setting_value('test_publish_key') : '';
         }
         if (null === $sc_options->get_setting_value('test_secret_key') && null === $sc_options->get_setting_value('test_publishable_key_temp')) {
             $data_key = '';
         }
     } else {
         // Live mode
         if (!(null === $sc_options->get_setting_value('live_publishable_key_temp'))) {
             $data_key = $sc_options->get_setting_value('live_publishable_key_temp');
             $sc_options->delete_setting('live_publishable_key_temp');
         } else {
             $data_key = null !== $sc_options->get_setting_value('live_publish_key') ? $sc_options->get_setting_value('live_publish_key') : '';
         }
         if (null === $sc_options->get_setting_value('live_secret_key') && null === $sc_options->get_setting_value('live_publishable_key_temp')) {
             $data_key = '';
         }
     }
     if (empty($data_key)) {
         if (current_user_can('manage_options')) {
             return '<h6>' . __('You must enter your API keys before the Stripe button will show up here.', 'sc') . '</h6>';
         }
         return '';
     }
     if (!empty($prefill_email) && $prefill_email !== 'false') {
         // Get current logged in user email
         if (is_user_logged_in()) {
             $prefill_email = get_userdata(get_current_user_id())->user_email;
         } else {
             $prefill_email = 'false';
         }
     }
     // Add Parsley JS form validation attribute here.
     $html = '<form method="POST" action="" class="sc-checkout-form" ' . 'id="' . esc_attr($form_id) . '" ' . 'data-sc-id="' . self::$sc_id . '" ' . 'data-parsley-validate>';
     // Save all of our options to an array so others can run them through a filter if they need to
     $sc_script_options = array('script' => array('key' => $data_key, 'name' => html_entity_decode($name), 'description' => html_entity_decode($description), 'amount' => $amount, 'image' => $image_url, 'currency' => strtoupper($currency), 'panel-label' => html_entity_decode($checkout_button_label), 'billing-address' => $billing, 'shipping-address' => $shipping, 'label' => html_entity_decode($payment_button_label), 'allow-remember-me' => $enable_remember, 'bitcoin' => $bitcoin, 'email' => $prefill_email, 'verify_zip' => $verify_zip, 'alipay' => $alipay, 'alipay_reusable' => $alipay_reusable, 'locale' => $locale), 'other' => array('success-redirect-url' => $success_redirect_url, 'failure-redirect-url' => $failure_redirect_url));
     $sc_script_options = apply_filters('sc_modify_script_options', $sc_script_options);
     $html .= do_shortcode($content);
     // Set our global array based on the uid so we can make sure each button/form is unique
     $script_vars[self::$sc_id] = array('key' => !empty($sc_script_options['script']['key']) ? $sc_script_options['script']['key'] : (!(null === $sc_options->get_setting_value('key')) ? $sc_options->get_setting_value('key') : -1), 'name' => !empty($sc_script_options['script']['name']) ? $sc_script_options['script']['name'] : (!(null === $sc_options->get_setting_value('name')) ? $sc_options->get_setting_value('name') : -1), 'description' => !empty($sc_script_options['script']['description']) ? $sc_script_options['script']['description'] : (!(null === $sc_options->get_setting_value('description')) ? $sc_options->get_setting_value('description') : -1), 'amount' => !empty($sc_script_options['script']['amount']) ? $sc_script_options['script']['amount'] : (!(null === $sc_options->get_setting_value('amount')) ? $sc_options->get_setting_value('amount') : -1), 'image' => !empty($sc_script_options['script']['image']) ? $sc_script_options['script']['image'] : (!(null === $sc_options->get_setting_value('image_url')) ? $sc_options->get_setting_value('image_url') : -1), 'currency' => !empty($sc_script_options['script']['currency']) ? $sc_script_options['script']['currency'] : (!(null === $sc_options->get_setting_value('currency')) ? $sc_options->get_setting_value('currency') : -1), 'panelLabel' => !empty($sc_script_options['script']['panel-label']) ? $sc_script_options['script']['panel-label'] : (!(null === $sc_options->get_setting_value('checkout_button_label')) ? $sc_options->get_setting_value('checkout_button_label') : -1), 'billingAddress' => !empty($sc_script_options['script']['billing-address']) ? $sc_script_options['script']['billing-address'] : (!(null === $sc_options->get_setting_value('billing')) ? $sc_options->get_setting_value('billing') : -1), 'shippingAddress' => !empty($sc_script_options['script']['shipping-address']) ? $sc_script_options['script']['shipping-address'] : (!(null === $sc_options->get_setting_value('shipping')) ? $sc_options->get_setting_value('shipping') : -1), 'allowRememberMe' => !empty($sc_script_options['script']['allow-remember-me']) ? $sc_script_options['script']['allow-remember-me'] : (!(null === $sc_options->get_setting_value('enable_remember')) ? $sc_options->get_setting_value('enable_remember') : -1), 'bitcoin' => !empty($sc_script_options['script']['bitcoin']) ? $sc_script_options['script']['bitcoin'] : (!(null === $sc_options->get_setting_value('use_bitcoin')) ? $sc_options->get_setting_value('use_bitcoin') : -1), 'email' => !empty($sc_script_options['script']['email']) && !($sc_script_options['script']['email'] === 'false') ? $sc_script_options['script']['email'] : -1, 'zipCode' => !empty($sc_script_options['script']['verify_zip']) && !($sc_script_options['script']['verify_zip'] === 'false') ? $sc_script_options['script']['verify_zip'] : -1, 'alipay' => !empty($sc_script_options['script']['alipay']) && !($sc_script_options['script']['alipay'] === 'false') ? $sc_script_options['script']['alipay'] : -1, 'alipay_reusable' => !empty($sc_script_options['script']['alipay_reusable']) && !($sc_script_options['script']['alipay_reusable'] === 'false') ? $sc_script_options['script']['alipay_reusable'] : -1, 'locale' => !empty($sc_script_options['script']['locale']) ? $sc_script_options['script']['locale'] : 'auto', 'invalid_html_string' => __('This button has been disable because the form is not well-formed HTML. Please check your shortcode source code to make sure nothing is conflicting.', 'sc'), 'setupFee' => !empty($sc_script_options['script']['setupFee']) ? $sc_script_options['script']['setupFee'] : 0);
     // Run check for subscription (with setup fee) + coupon combo
     $has_setup_fee = false;
     $has_coupon = false;
     $subscription = Shortcode_Tracker::shortcode_exists_current('stripe_subscription');
     $has_coupon = false !== Shortcode_Tracker::shortcode_exists_current('stripe_coupon') ? true : false;
     //echo '<pre>' . print_r( $has_subscription, true ) . '</pre>';
     if (false !== $subscription) {
         if (isset($subscription['attr']['setup_fee']) && $subscription['attr']['setup_fee'] > 0) {
             $has_setup_fee = true;
         } else {
             if (isset($subscription['children'])) {
                 // Loop through the child shortcodes to see if there is a setup fee set on any of them.
                 foreach ($subscription['children'] as $child) {
                     if (isset($child['attr']['setup_fee']) && $child['attr']['setup_fee'] > 0) {
                         $has_setup_fee = true;
                         break;
                     }
                 }
             }
         }
     }
     // Currently not supporting setup fee with a coupon.
     if ($has_coupon && $has_setup_fee) {
         if (current_user_can('manage_options')) {
             return '<h6>' . __('You cannot include a coupon and a subscription with a setup fee at the same time.', 'sc') . '</h6>';
         }
         return;
     }
     // Check if the current user is an admin and add a script variable we can use to check this
     if (current_user_can('manage_options')) {
         $script_vars[self::$sc_id]['is_admin'] = true;
     }
     // Reference for Stripe's zero-decimal currencies in JS.
     $script_vars['zero_decimal_currencies'] = Stripe_Checkout_Misc::zero_decimal_currencies();
     $name = $sc_script_options['script']['name'];
     $description = $sc_script_options['script']['description'];
     $amount = $sc_script_options['script']['amount'];
     $success_redirect_url = $sc_script_options['other']['success-redirect-url'];
     $failure_redirect_url = $sc_script_options['other']['failure-redirect-url'];
     $currency = $sc_script_options['script']['currency'];
     if (false !== Shortcode_Tracker::shortcode_exists_current('stripe_subscription')) {
         if ($bitcoin == 'true') {
             if (current_user_can('manage_options')) {
                 return '<h6>' . __('Bitcoin cannot be used with Stripe subscriptions at this time.', 'sc') . '</h6>';
             }
             return '';
         }
         if ($alipay == 'true') {
             if (current_user_can('manage_options')) {
                 return '<h6>' . __('Alipay cannot be used with Stripe subscriptions at this time.', 'sc') . '</h6>';
             }
             return '';
         }
     }
     $html .= '<input type="hidden" name="sc-name" value="' . esc_attr($name) . '" />';
     $html .= '<input type="hidden" name="sc-description" value="' . esc_attr($description) . '" />';
     $html .= '<input type="hidden" name="sc-amount" class="sc_amount" value="" />';
     $html .= '<input type="hidden" name="sc-redirect" value="' . esc_attr(!empty($success_redirect_url) ? $success_redirect_url : get_permalink()) . '" />';
     $html .= '<input type="hidden" name="sc-redirect-fail" value="' . esc_attr(!empty($failure_redirect_url) ? $failure_redirect_url : get_permalink()) . '" />';
     $html .= '<input type="hidden" name="sc-currency" value="' . esc_attr($currency) . '" />';
     $html .= '<input type="hidden" name="stripeToken" value="" class="sc_stripeToken" />';
     $html .= '<input type="hidden" name="stripeEmail" value="" class="sc_stripeEmail" />';
     $html .= '<input type="hidden" name="wp-simple-pay" value="1" />';
     $html .= '<input type="hidden" name="sc-details-placement" value="' . esc_attr($payment_details_placement) . '" />';
     $html .= wp_nonce_field('charge_card', 'wp-simple-pay-pro-nonce', '', false);
     if ($test_mode == 'true') {
         $html .= '<input type="hidden" name="sc_test_mode" value="true" />';
     }
     // Add shipping information fields if it is enabled
     if ($shipping === 'true') {
         $html .= '<input type="hidden" name="sc-shipping-name" class="sc-shipping-name" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-country" class="sc-shipping-country" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-zip" class="sc-shipping-zip" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-state" class="sc-shipping-state" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-address" class="sc-shipping-address" value="" />';
         $html .= '<input type="hidden" name="sc-shipping-city" class="sc-shipping-city" value="" />';
     }
     // Add an action here to allow developers to hook into the form
     $filter_html = '';
     $html .= apply_filters('sc_before_payment_button', $filter_html);
     // Payment button defaults to built-in Stripe class "stripe-button-el" unless set to "none".
     $html .= '<button class="sc-payment-btn' . ($payment_button_style == 'none' ? '' : ' stripe-button-el') . '"><span>' . $payment_button_label . '</span></button>';
     $html .= '</form>';
     //Stripe minimum amount allowed.
     $stripe_minimum_amount = 50;
     $error_count = Shortcode_Tracker::get_error_count();
     Shortcode_Tracker::reset_error_count();
     if ($error_count > 0 && !isset($_GET['charge'])) {
         if (current_user_can('manage_options')) {
             return Shortcode_Tracker::print_errors();
         }
         return '';
     }
     $has_uea = Shortcode_Tracker::shortcode_exists_current('stripe_amount');
     $has_sub = Shortcode_Tracker::shortcode_exists_current('stripe_subscription');
     if ((empty($amount) || $amount < $stripe_minimum_amount || !isset($amount) && !isset($_GET['charge'])) && false === $has_uea && false == $has_sub) {
         if (current_user_can('manage_options')) {
             $html = '<h6>';
             $html .= __('Stripe checkout requires an amount of ', 'sc') . $stripe_minimum_amount;
             $html .= ' (' . Stripe_Checkout_Misc::to_formatted_amount($stripe_minimum_amount, $currency) . ' ' . $currency . ')';
             $html .= __(' or larger.', 'sc');
             $html .= '</h6>';
             return $html;
         }
         return '';
     }
     // Reset the static counter now in case there are multiple forms on a page
     $this->total_fields(true);
     $referer = wp_get_referer();
     // Also check 'sub_id' here for trials subscriptions that don't pass 'charge'
     if (!isset($_GET['charge']) && !isset($_GET['error_code']) && !isset($_GET['sub_id']) || (!(null === $sc_options->get_setting_value('success_redirect_url')) || !(null === $sc_options->get_setting_value('failure_redirect_url'))) && ($referer !== false && $success_redirect_url != $referer && ($referer !== false && $failure_redirect_url != $referer)) && !isset($_GET['test_mode'])) {
         return $html;
     }
     return '';
 }