function get_local_currency_code()
 {
     if (empty($this->local_currency_code)) {
         $this->local_currency_code = WPSC_Countries::get_currency_code(get_option('currency_type'));
     }
     return $this->local_currency_code;
 }
Пример #2
0
 function getQuote()
 {
     global $wpdb, $wpec_ash, $wpsc_cart, $wpec_ash_tools;
     // Arguments array for various functions to use
     $args = array();
     $args['dest_ccode'] = wpsc_get_customer_meta('shippingcountry');
     // Get the ups settings from the ups account info page (Shipping tab)
     $wpsc_ups_settings = get_option('wpsc_ups_settings', array());
     //Disable International Shipping. Default: Enabled, as it currently is.
     $args['intl_rate'] = isset($wpsc_ups_settings['intl_rate']) && !empty($wpsc_ups_settings['intl_rate']) ? FALSE : TRUE;
     if (!$args['intl_rate'] && $args['dest_ccode'] != get_option('base_country')) {
         return array();
     }
     // Destination zip code
     $args['dest_pcode'] = (string) wpsc_get_customer_meta('shippingpostcode');
     if (!is_object($wpec_ash_tools)) {
         $wpec_ash_tools = new ASHTools();
     }
     if (empty($args['dest_pcode']) && $wpec_ash_tools->needs_post_code($args['dest_ccode'])) {
         // We cannot get a quote without a zip code so might as well return!
         return array();
     }
     // Get the total weight from the shopping cart
     $args['weight'] = wpsc_cart_weight_total();
     if (empty($args['weight'])) {
         return array();
     }
     $args['dest_state'] = '';
     $wpsc_country = new WPSC_Country(wpsc_get_customer_meta('shippingcountry'));
     if ($wpsc_country->has_regions()) {
         $wpsc_region = $wpsc_country->get_region(wpsc_get_customer_meta('shippingregion'));
         if (is_a($wpsc_region, 'WPSC_Region')) {
             $args['dest_state'] = $wpsc_region->get_code();
         }
     }
     if (empty($args['dest_state'])) {
         $args['dest_state'] = wpsc_get_customer_meta('shippingstate');
     }
     if (!is_object($wpec_ash)) {
         $wpec_ash = new ASH();
     }
     $shipping_cache_check['state'] = $args['dest_state'];
     //The destination is needed for cached shipment check.
     $shipping_cache_check['country'] = $args['dest_ccode'];
     $shipping_cache_check['zipcode'] = $args['dest_pcode'];
     $this->shipment = $wpec_ash->get_shipment();
     $this->shipment->set_destination($this->internal_name, $shipping_cache_check);
     //Set this shipment's destination.
     $this->shipment->rates_expire = date('Y-m-d');
     $args['shipper'] = $this->internal_name;
     $args['singular_shipping'] = array_key_exists('singular_shipping', $wpsc_ups_settings) ? $wpsc_ups_settings['singular_shipping'] : '0';
     if ($args['weight'] > 150 && !(bool) $args['singular_shipping']) {
         // This is where shipping breaks out of UPS if weight is higher than 150 LBS
         $over_weight_txt = apply_filters('wpsc_shipment_over_weight', __('Your order exceeds the standard shipping weight limit. Please contact us to quote other shipping alternatives.', 'wpsc'), $args);
         $shipping_quotes[$over_weight_txt] = 0;
         // yes, a constant.
         $wpec_ash->cache_results($this->internal_name, array($shipping_quotes), $this->shipment);
         //Update shipment cache.
         return array($shipping_quotes);
     }
     $cache = $wpec_ash->check_cache($this->internal_name, $this->shipment);
     //And now, we're ready to check cache.
     // We do not want to spam UPS (and slow down our process) if we already
     // have a shipping quote!
     if (count($cache['rate_table']) >= 1) {
         return $cache['rate_table'];
     }
     // Final rate table
     $rate_table = array();
     // API Auth settings //
     $args['username'] = array_key_exists('upsaccount', $wpsc_ups_settings) ? $wpsc_ups_settings['upsusername'] : '';
     $args['password'] = array_key_exists('upspassword', $wpsc_ups_settings) ? $wpsc_ups_settings['upspassword'] : '';
     $args['api_id'] = array_key_exists('upsid', $wpsc_ups_settings) ? $wpsc_ups_settings['upsid'] : '';
     $args['account_number'] = array_key_exists('upsaccount', $wpsc_ups_settings) ? $wpsc_ups_settings['upsaccount'] : '';
     $args['negotiated_rates'] = array_key_exists('ups_negotiated_rates', $wpsc_ups_settings) ? $wpsc_ups_settings['ups_negotiated_rates'] : '';
     $args['residential'] = $wpsc_ups_settings['49_residential'];
     $args['insured_shipment'] = array_key_exists('insured_shipment', $wpsc_ups_settings) ? $wpsc_ups_settings['insured_shipment'] : '0';
     // What kind of pickup service do you use ?
     $args['DropoffType'] = $wpsc_ups_settings['DropoffType'];
     $args['packaging'] = $wpsc_ups_settings['48_container'];
     // Preferred Currency to display
     $currency_data = WPSC_Countries::get_currency_code(get_option('currency_type'));
     if (!empty($currency_data)) {
         $args['currency'] = $currency_data;
     } else {
         $args['currency'] = 'USD';
     }
     // Shipping billing / account address
     $region = new WPSC_Region(get_option('base_country'), get_option('base_region'));
     $args['shipr_state'] = $region->get_code();
     $args['shipr_city'] = get_option('base_city');
     $args['shipr_ccode'] = get_option('base_country');
     $args['shipr_pcode'] = get_option('base_zipcode');
     // Physical Shipping address being shipped from
     $args['shipf_state'] = $args['shipr_state'];
     $args['shipf_city'] = $args['shipr_city'];
     $args['shipf_ccode'] = $args['shipr_ccode'];
     $args['shipf_pcode'] = $args['shipr_pcode'];
     $args['units'] = 'LBS';
     $args['cart_total'] = $wpsc_cart->calculate_subtotal(true);
     $args = apply_filters('wpsc_shipment_data', $args, $this->shipment);
     if (isset($args['stop'])) {
         //Do not get rates.
         return array();
     }
     // Build the XML request
     $request = $this->_buildRateRequest($args);
     // Now that we have the message to send ... Send it!
     $raw_quote = $this->_makeRateRequest($request);
     // Now we have the UPS response .. unfortunately its not ready
     // to be viewed by normal humans ...
     $quotes = $this->_parseQuote($raw_quote);
     // If we actually have rates back from UPS we can use em!
     if ($quotes != false) {
         $rate_table = apply_filters('wpsc_rates_table', $this->_formatTable($quotes, $args['currency']), $args, $this->shipment);
     } else {
         if (isset($wpsc_ups_settings['upsenvironment'])) {
             echo '<strong>:: GetQuote ::DEBUG OUTPUT::</strong><br />';
             echo 'Arguments sent to UPS';
             print_r($args);
             echo '<hr />';
             print $request;
             echo '<hr />';
             echo 'Response from UPS';
             echo $raw_quote;
             echo '</strong>:: GetQuote ::End DEBUG OUTPUT::';
         }
     }
     $wpec_ash->cache_results($this->internal_name, $rate_table, $this->shipment);
     // return the final formatted array !
     return $rate_table;
 }
Пример #3
0
function gateway_chronopay($separator, $sessionid)
{
    global $wpdb;
    $purchase_log_sql = $wpdb->prepare("SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid`= %s LIMIT 1", $sessionid);
    $purchase_log = $wpdb->get_results($purchase_log_sql, ARRAY_A);
    $cart_sql = "SELECT * FROM `" . WPSC_TABLE_CART_CONTENTS . "` WHERE `purchaseid`='" . $purchase_log[0]['id'] . "'";
    $cart = $wpdb->get_results($cart_sql, ARRAY_A);
    // ChronoPay post variables
    $chronopay_url = get_option('chronopay_url');
    $data['product_id'] = get_option('chronopay_product_id');
    $data['product_name'] = get_option('chronopay_product_name');
    $data['product_price_currency'] = get_option('chronopay_curcode');
    $data['language'] = get_option('chronopay_language');
    $data['cb_url'] = add_query_arg('chronopay_callback', 'true', home_url('/'));
    $data['cb_type'] = 'P';
    $data['decline_url'] = home_url('/?chronopay_callback=true');
    $data['cs1'] = $sessionid;
    $data['cs2'] = 'chronopay';
    $salt = get_option('chronopay_salt');
    $data['cs3'] = md5($salt . md5($sessionid . $salt));
    // placed in here for security so that the return call can be validated as 'real'
    // User details
    if ($_POST['collected_data'][get_option('chronopay_form_first_name')] != '') {
        $data['f_name'] = $_POST['collected_data'][get_option('chronopay_form_first_name')];
    }
    if ($_POST['collected_data'][get_option('chronopay_form_last_name')] != "") {
        $data['s_name'] = $_POST['collected_data'][get_option('chronopay_form_last_name')];
    }
    if ($_POST['collected_data'][get_option('chronopay_form_address')] != '') {
        $data['street'] = str_replace("\n", ', ', $_POST['collected_data'][get_option('chronopay_form_address')]);
    }
    if ($_POST['collected_data'][get_option('chronopay_form_city')] != '') {
        $data['city'] = $_POST['collected_data'][get_option('chronopay_form_city')];
    }
    $data['country'] = (string) wpsc_get_customer_meta('billingcountry');
    // Change suggested by waxfeet@gmail.com, if email to be sent is not there, dont send an email address
    $email_data = $wpdb->get_results("SELECT `id`,`type` FROM `" . WPSC_TABLE_CHECKOUT_FORMS . "` WHERE `type` IN ('email') AND `active` = '1'", ARRAY_A);
    foreach ((array) $email_data as $email) {
        $data['email'] = $_POST['collected_data'][$email['id']];
    }
    if ($_POST['collected_data'][get_option('email_form_field')] != null && $data['email'] == null) {
        $data['email'] = $_POST['collected_data'][get_option('email_form_field')];
    }
    // Get Currency details abd price
    $currency_code = WPSC_Countries::get_currency_code(get_option('currency_type'));
    $local_currency_code = $currency_code[0]['code'];
    $chronopay_currency_code = get_option('chronopay_curcode');
    // ChronoPay only processes in the set currency.  This is USD or EUR dependent on what the Chornopay account is set up with.
    // This must match the ChronoPay settings set up in wordpress.  Convert to the chronopay currency and calculate total.
    $curr = new CURRENCYCONVERTER();
    $decimal_places = 2;
    $total_price = 0;
    $i = 1;
    $all_donations = true;
    $all_no_shipping = true;
    foreach ($cart as $item) {
        $product_data = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . $wpdb->posts . "` WHERE `id`= %d LIMIT 1", $item['prodid']), ARRAY_A);
        $product_data = $product_data[0];
        $variation_count = count($product_variations);
        //Does this even still work in 3.8? We're not using this table.
        $variation_sql = $wpdb->prepare("SELECT * FROM `" . WPSC_TABLE_CART_ITEM_VARIATIONS . "` WHERE `cart_id` = %d", $item['id']);
        $variation_data = $wpdb->get_results($variation_sql, ARRAY_A);
        $variation_count = count($variation_data);
        if ($variation_count >= 1) {
            $variation_list = " (";
            $j = 0;
            foreach ($variation_data as $variation) {
                if ($j > 0) {
                    $variation_list .= ", ";
                }
                $value_id = $variation['venue_id'];
                $value_data = $wpdb->get_results($wpdb->prepare("SELECT * FROM `" . WPSC_TABLE_VARIATION_VALUES . "` WHERE `id`= %d LIMIT 1", $value_id), ARRAY_A);
                $variation_list .= $value_data[0]['name'];
                $j++;
            }
            $variation_list .= ")";
        } else {
            $variation_list = '';
        }
        $local_currency_productprice = $item['price'];
        $local_currency_shipping = $item['pnp'];
        $chronopay_currency_productprice = $local_currency_productprice;
        $chronopay_currency_shipping = $local_currency_shipping;
        $data['item_name_' . $i] = $product_data['name'] . $variation_list;
        $data['amount_' . $i] = number_format(sprintf("%01.2f", $chronopay_currency_productprice), $decimal_places, '.', '');
        $data['quantity_' . $i] = $item['quantity'];
        $data['item_number_' . $i] = $product_data['id'];
        if ($item['donation'] != 1) {
            $all_donations = false;
            $data['shipping_' . $i] = number_format($chronopay_currency_shipping, $decimal_places, '.', '');
            $data['shipping2_' . $i] = number_format($chronopay_currency_shipping, $decimal_places, '.', '');
        } else {
            $data['shipping_' . $i] = number_format(0, $decimal_places, '.', '');
            $data['shipping2_' . $i] = number_format(0, $decimal_places, '.', '');
        }
        if ($product_data['no_shipping'] != 1) {
            $all_no_shipping = false;
        }
        $total_price = $total_price + $data['amount_' . $i] * $data['quantity_' . $i];
        if ($all_no_shipping != false) {
            $total_price = $total_price + $data['shipping_' . $i] + $data['shipping2_' . $i];
        }
        $i++;
    }
    $base_shipping = $purchase_log[0]['base_shipping'];
    if ($base_shipping > 0 && $all_donations == false && $all_no_shipping == false) {
        $data['handling_cart'] = number_format($base_shipping, $decimal_places, '.', '');
        $total_price += number_format($base_shipping, $decimal_places, '.', '');
    }
    $data['product_price'] = $total_price;
    // Create Form to post to ChronoPay
    $output = "\n\t\t<form id=\"chronopay_form\" name=\"chronopay_form\" method=\"post\" action=\"{$chronopay_url}\">\n";
    foreach ($data as $n => $v) {
        $output .= "\t\t\t<input type=\"hidden\" name=\"{$n}\" value=\"{$v}\" />\n";
    }
    $output .= "\t\t\t<input type=\"submit\" value=\"Continue to ChronoPay\" />\n\t\t</form>\n\t";
    // Output the form.
    echo $output;
    echo "<script language=\"javascript\" type=\"text/javascript\">document.getElementById('chronopay_form').submit();</script>";
    exit;
}
Пример #4
0
 /**
  * collate_data method, collate purchase data, like addresses, like country
  * @access public
  */
 function collate_data()
 {
     global $wpdb;
     // Get purchase data, regardless of being fed the ID or the sessionid
     if ($this->purchase_id > 0) {
         $purchase_id =& $this->purchase_id;
         $purchase_logs = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `id` = %d LIMIT 1", $purchase_id), ARRAY_A);
     } else {
         if ($this->session_id != null) {
             $purchase_logs = $wpdb->get_row($wpdb->prepare("SELECT * FROM `" . WPSC_TABLE_PURCHASE_LOGS . "` WHERE `sessionid` = %s LIMIT 1", $this->session_id), ARRAY_A);
             $this->purchase_id = $purchase_logs['id'];
             $purchase_id =& $this->purchase_id;
         }
     }
     $email_address = $wpdb->get_var("SELECT `value` FROM `" . WPSC_TABLE_CHECKOUT_FORMS . "` AS `form_field` INNER JOIN `" . WPSC_TABLE_SUBMITTED_FORM_DATA . "` AS `collected_data` ON `form_field`.`id` = `collected_data`.`form_id` WHERE `form_field`.`type` IN ( 'email' ) AND `collected_data`.`log_id` IN ( '{$purchase_id}' )");
     $currency_code = WPSC_Countries::get_currency_code(get_option('currency_type'));
     $collected_form_data = $wpdb->get_results("SELECT `data_names`.`id`, `data_names`.`unique_name`, `collected_data`.`value` FROM `" . WPSC_TABLE_SUBMITTED_FORM_DATA . "` AS `collected_data` JOIN `" . WPSC_TABLE_CHECKOUT_FORMS . "` AS `data_names` ON `collected_data`.`form_id` = `data_names`.`id` WHERE `log_id` = '" . $purchase_id . "'", ARRAY_A);
     $address_data = array('billing' => array(), 'shipping' => array());
     foreach ($collected_form_data as $collected_form_row) {
         $address_data_set = 'billing';
         $address_key = array_search($collected_form_row['unique_name'], $this->address_keys['billing']);
         if ($address_key == null) {
             $address_data_set = 'shipping';
             $address_key = array_search($collected_form_row['unique_name'], $this->address_keys['shipping']);
         }
         if ($address_key == null) {
             continue;
         }
         switch ($collected_form_row['unique_name']) {
             case 'billingcountry':
             case 'shippingcountry':
                 $country = maybe_unserialize($collected_form_row['value']);
                 if (is_array($country)) {
                     $address_data[$address_data_set]['state'] = wpsc_get_state_by_id($country[1], 'code');
                     $country = $country[0];
                 }
                 $address_data[$address_data_set][$address_key] = $country;
                 break;
             case 'billingstate':
             case 'shippingstate':
                 if (empty($address_data[$address_data_set]['state'])) {
                     $address_data[$address_data_set]['state'] = is_numeric($collected_form_row['value']) ? wpsc_get_state_by_id($collected_form_row['value'], 'code') : $collected_form_row['value'];
                 }
                 break;
             default:
                 $address_data[$address_data_set][$address_key] = $collected_form_row['value'];
                 break;
         }
     }
     if (count($address_data['shipping']) < 1) {
         $address_data['shipping'] = $address_data['billing'];
     }
     if (!empty($purchase_logs['discount_value']) && $purchase_logs['discount_value'] > 0) {
         $has_discount = true;
     } else {
         $has_discount = false;
     }
     $this->cart_data = array('software_name' => 'WP eCommerce/' . WPSC_PRESENTABLE_VERSION . '', 'store_location' => get_option('base_country'), 'store_currency' => $currency_code, 'is_subscription' => false, 'has_discounts' => $has_discount, 'cart_discount_value' => $purchase_logs['discount_value'], 'cart_discount_coupon' => $purchase_logs['discount_data'], 'cart_tax' => $purchase_logs['wpec_taxes_total'], 'notification_url' => add_query_arg('wpsc_action', 'gateway_notification', home_url('/')), 'transaction_results_url' => get_option('transact_url'), 'shopping_cart_url' => get_option('shopping_cart_url'), 'products_page_url' => get_option('product_list_url'), 'base_shipping' => $purchase_logs['base_shipping'], 'total_price' => $purchase_logs['totalprice'], 'session_id' => $purchase_logs['sessionid'], 'transaction_id' => $purchase_logs['transactid'], 'email_address' => $email_address, 'billing_address' => $address_data['billing'], 'shipping_address' => $address_data['shipping']);
 }
/**
 *	wpsc_get_currency_code
 *
 *	@param does not receive anything
 *  @return returns the currency code used for the shop
*/
function wpsc_get_currency_code()
{
    return WPSC_Countries::get_currency_code(get_option('currency_type'));
}
 /**
  * 3.4
  */
 public static function cryptocoin_payment($arr)
 {
     global $gourl, $wpdb;
     static $flag = false;
     if ($flag) {
         return false;
     }
     $flag = true;
     // Initialize
     // ------------------------
     if (class_exists('gourlclass') && defined('GOURL') && is_object($gourl)) {
         $payments = $gourl->payments();
         // Activated Payments
         $coin_names = $gourl->coin_names();
         // All Coins
         $languages = $gourl->languages();
         // All Languages
     } else {
         $payments = array();
         $coin_names = array();
         $languages = array();
     }
     $statuses = array(2 => 'Order Received', 3 => 'Accepted Payment', 4 => 'Job Dispatched', 5 => 'Closed Order');
     $mainplugin_url = admin_url("plugin-install.php?tab=search&type=term&s=GoUrl+Bitcoin+Payment+Gateway+Downloads");
     $defcoin = get_option(GOURLWPSC . 'defcoin');
     if (!in_array($defcoin, array_keys($payments))) {
         $defcoin = current(array_keys($payments));
     }
     $deflang = get_option(GOURLWPSC . 'deflang');
     if (!in_array($deflang, array_keys($languages))) {
         $deflang = current(array_keys($languages));
     }
     $emultiplier = str_replace("%", "", get_option(GOURLWPSC . 'emultiplier'));
     if (!$emultiplier || !is_numeric($emultiplier) || $emultiplier <= 0) {
         $emultiplier = "1.00";
     }
     $ostatus = get_option(GOURLWPSC . 'ostatus');
     if (!in_array($ostatus, array_keys($statuses))) {
         $ostatus = 3;
     }
     // Accepted Payment
     $ostatus2 = get_option(GOURLWPSC . 'ostatus2');
     if (!in_array($ostatus2, array_keys($statuses))) {
         $ostatus2 = 3;
     }
     // Accepted Payment
     $iconwidth = str_replace("px", "", get_option(GOURLWPSC . 'iconwidth'));
     if (!$iconwidth || !is_numeric($iconwidth) || $iconwidth < 30 || $iconwidth > 250) {
         $iconwidth = 60;
     }
     $iconwidth = $iconwidth . "px";
     // Current Order
     // -----------------
     $order_id = $arr["purchase_id"];
     $order_total = $arr["purchase_log"]["totalprice"];
     $order_currency = version_compare(WPSC_VERSION, '3.8.14', '<') ? current($wpdb->get_results("SELECT code FROM `" . WPSC_TABLE_CURRENCY_LIST . "` WHERE id = " . intval(get_option('currency_type')) . " LIMIT 1", ARRAY_A))["code"] : WPSC_Countries::get_currency_code(get_option('currency_type'));
     $order_user_id = $arr["purchase_log"]["user_ID"];
     if ($order_currency == "DOG") {
         $order_currency = "DOGE";
     }
     // WP eCommerce allow max 3 symbols for coin symbol
     if ($order_currency == "DAS") {
         $order_currency = "DASH";
     }
     // WP eCommerce allow max 3 symbols for coin symbol
     // Security
     // -------------
     if (!$order_id) {
         throw new Exception('The GoUrl payment plugin was called to process a payment but could not retrieve the order details for order_id. Cannot continue!');
     }
     if ($arr["purchase_log"]["gateway"] != "wpsc_gourl_gateway" || $order_user_id && $order_user_id != get_current_user_id()) {
         return false;
     }
     if (!class_exists('gourlclass') || !defined('GOURL') || !is_object($gourl)) {
         echo '<h2>' . __('Information', GOURLWPSC) . '</h2>' . PHP_EOL;
         echo "<div style='border:1px solid #eee;margin:20px 10px;padding:10px'>" . __("Please try a different payment method. Admin need to install and activate wordpress plugin 'GoUrl Bitcoin Gateway' (https://gourl.io/bitcoin-wordpress-plugin.html) to accept Bitcoin/Altcoin Payments online", GOURLWPSC) . "</div>";
     } elseif (!$payments || !$defcoin || true === version_compare(WPSC_VERSION, '3.8.10', '<') || true === version_compare(GOURL_VERSION, '1.3', '<') || array_key_exists($order_currency, $coin_names) && !array_key_exists($order_currency, $payments)) {
         echo '<h2>' . __('Information', GOURLWPSC) . '</h2>' . PHP_EOL;
         echo "<div style='border:1px solid #eee;margin:20px 10px;padding:10px'>" . sprintf(__('Sorry, but there was an error processing your order. Please try a different payment method or contact us if you need assistance. (GoUrl Bitcoin Plugin not configured - %s not activated)', GOURLWPSC), !$payments || !$defcoin ? "Cryptocurrency" : $coin_names[$order_currency]) . "</div>";
     } else {
         $plugin = "gourlwpecommerce";
         $amount = $order_total;
         $currency = $order_currency;
         $orderID = "order" . $order_id;
         $userID = $order_user_id;
         $period = "NOEXPIRY";
         $language = $deflang;
         $coin = $coin_names[$defcoin];
         $affiliate_key = "gourl";
         $crypto = array_key_exists($currency, $coin_names);
         if (!$userID) {
             $userID = "guest";
         }
         // allow guests to make checkout (payments)
         if (!$userID) {
             echo '<h2>' . __('Information', GOURLWPSC) . '</h2>' . PHP_EOL;
             echo "<div align='center'><a href='" . wp_login_url(get_permalink()) . "'>\n\t\t\t\t\t<img style='border:none;box-shadow:none;' title='" . __('You need first to login or register on the website to make Bitcoin/Altcoin Payments', GOURLWPSC) . "' vspace='10'\n\t\t\t\t\tsrc='" . $gourl->box_image() . "' border='0'></a></div>";
         } elseif ($amount <= 0) {
             echo '<h2>' . __('Information', GOURLWPSC) . '</h2>' . PHP_EOL;
             echo "<div style='border:1px solid #eee;margin:20px 10px;padding:10px'>" . sprintf(__('This order&rsquo;s amount is &ldquo;%s&rdquo; &mdash; it cannot be paid for. Please contact us if you need assistance.', GOURLWPSC), $amount . " " . $currency) . "</div>";
         } else {
             // Exchange (optional)
             // --------------------
             if ($currency != "USD" && !$crypto) {
                 $amount = gourl_convert_currency($currency, "USD", $amount);
                 if ($amount <= 0) {
                     echo '<h2>' . __('Information', GOURLWPSC) . '</h2>' . PHP_EOL;
                     echo "<div style='border:1px solid #eee;margin:20px 10px;padding:10px'>" . sprintf(__('Sorry, but there was an error processing your order. Please try later or use a different payment method. Cannot receive exchange rates for %s/USD from Google Finance', GOURLWPSC), $currency) . "</div>";
                 } else {
                     $currency = "USD";
                 }
             }
             if (!$crypto) {
                 $amount = $amount * $emultiplier;
             }
             // Payment Box
             // ------------------
             if ($amount > 0) {
                 // crypto payment gateway
                 $result = $gourl->cryptopayments($plugin, $amount, $currency, $orderID, $period, $language, $coin, $affiliate_key, $userID, $iconwidth);
                 if (!$result["is_paid"]) {
                     echo '<h2>' . __('Pay Now', GOURLWPSC) . '</h2>' . PHP_EOL;
                 }
                 if ($result["error"]) {
                     echo "<div style='border:1px solid #eee;margin:20px 10px;padding:10px'>" . __("Sorry, but there was an error processing your order. Please try a different payment method.", GOURLWPSC) . "<br/>" . $result["error"] . "</div>";
                 } else {
                     // display payment box or successful payment result
                     echo $result["html_payment_box"];
                     // payment received
                     if ($result["is_paid"]) {
                         echo "<div align='center'>" . sprintf(__('%s payment ID: #%s, order ID: #%s', GOURLWPSC), ucfirst($result["coinname"]), $result["paymentID"], $order_id) . "</div><br>";
                     }
                 }
             }
         }
     }
     echo "<br><br>";
     return true;
 }