busonero Posted August 12, 2005 Share Posted August 12, 2005 Hi, I got this contribnution installed and seems to works. The only problem I'm having is that I can't delete discout coupons once i create them. Simply deleting the coupons from the DB doesn't work, as after deleting the, the shop doesn't work anymore. I think it's because the coupon table is chanined with the orders table. Anyone know how to get rid of the severals test coupons i created ? thank you for any help sincerely roberto Quote Link to comment Share on other sites More sharing options...
marcoren Posted August 14, 2005 Share Posted August 14, 2005 Does the contrib allow for a voucher and a coupon? I have the contrib working succesfully. I tried using both a voucher and a coupon and it only took one. Does anyone know if it can be configured to support this? Quote Link to comment Share on other sites More sharing options...
deeman001 Posted August 14, 2005 Share Posted August 14, 2005 I've been tracking this issue all the way from 2003, but can't find a solution. Does anyone know of a solution to this problem? There are two payment options, a Credit Card (Authorize.net) and a gift voucher balance. The gift voucher balance is greater than the total, so I check the box that says "Tick to use Gift Voucher account balance" and I then click continue. A Credit Card error is returned that says "The first four digits of the number entered are: If that number is correct, we do not accept that type of credit card. If it is wrong, please try again." I get the Credit Card error because I didn't enter a CC number, but I am paying the total with my Voucher balance and not the Credit Card. Any Help would be appreciated. Quote Link to comment Share on other sites More sharing options...
Guest Posted August 14, 2005 Share Posted August 14, 2005 arg... I have been messing with the Gift Voucher Paypal-IPN fix for the last few hours and it just won't work! I triple checked my code copying and pasting and it all looks exactly as it should. I do not get any errors, it just does not transfer the total properly. I tried creating brand new coupons after the install and going over to a new computer to test everything. But still it pulls the wrong info into Paypal. I have alot of customers and a promotion going on right now that no one can take advantage of. I have searched the forums extensively but all I found were the references to the CCVG 5.14 + Paypal_IPN fix. The directions and steps were very clear so I have NO idea what I am doing wrong. here is my entire paypal_ipn code right now. (in /catalog/includes/modules/payment) PLEASE HELP! =( <?php/* $Id: paypal_ipn.php,v 1.1.2.11 2004/12/05 19:14:35 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2004 osCommerce Released under the GNU General Public License*/ class paypal_ipn { var $code, $title, $description, $enabled, $identifier; // class constructor function paypal_ipn() { global $order; $this->code = 'paypal_ipn'; $this->title = MODULE_PAYMENT_PAYPAL_IPN_TEXT_TITLE; $this->description = MODULE_PAYMENT_PAYPAL_IPN_TEXT_DESCRIPTION; $this->sort_order = MODULE_PAYMENT_PAYPAL_IPN_SORT_ORDER; $this->enabled = ((MODULE_PAYMENT_PAYPAL_IPN_STATUS == 'True') ? true : false); $this->identifier = 'osCommerce PayPal IPN v1.0'; if ((int)MODULE_PAYMENT_PAYPAL_IPN_PREPARE_ORDER_STATUS_ID > 0) { $this->order_status = MODULE_PAYMENT_PAYPAL_IPN_PREPARE_ORDER_STATUS_ID; } if (is_object($order)) $this->update_status(); if (MODULE_PAYMENT_PAYPAL_IPN_GATEWAY_SERVER == 'Live') { $this->form_action_url = 'https://www.paypal.com/cgi-bin/webscr'; } else { $this->form_action_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr'; } } // class methods function update_status() { global $order; if ( ($this->enabled == true) && ((int)MODULE_PAYMENT_PAYPAL_IPN_ZONE > 0) ) { $check_flag = false; $check_query = tep_db_query("select zone_id from " . TABLE_ZONES_TO_GEO_ZONES . " where geo_zone_id = '" . MODULE_PAYMENT_PAYPAL_IPN_ZONE . "' and zone_country_id = '" . $order->billing['country']['id'] . "' order by zone_id"); while ($check = tep_db_fetch_array($check_query)) { if ($check['zone_id'] < 1) { $check_flag = true; break; } elseif ($check['zone_id'] == $order->billing['zone_id']) { $check_flag = true; break; } } if ($check_flag == false) { $this->enabled = false; } } } function javascript_validation() { return false; } function selection() { return array('id' => $this->code, 'module' => $this->title); } function pre_confirmation_check() { return false; } function confirmation() { global $cartID, $cart_PayPal_IPN_ID, $customer_id, $languages_id, $order, $order_total_modules; if (tep_session_is_registered('cartID')) { $insert_order = false; if (tep_session_is_registered('cart_PayPal_IPN_ID')) { $order_id = substr($cart_PayPal_IPN_ID, strpos($cart_PayPal_IPN_ID, '-')+1); $curr_check = tep_db_query("select currency from " . TABLE_ORDERS . " where orders_id = '" . (int)$order_id . "'"); $curr = tep_db_fetch_array($curr_check); if ( ($curr['currency'] != $order->info['currency']) || ($cartID != substr($cart_PayPal_IPN_ID, 0, strlen($cartID))) ) { $check_query = tep_db_query('select orders_id from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '" limit 1'); if (tep_db_num_rows($check_query) < 1) { tep_db_query('delete from ' . TABLE_ORDERS . ' where orders_id = "' . (int)$order_id . '"'); tep_db_query('delete from ' . TABLE_ORDERS_TOTAL . ' where orders_id = "' . (int)$order_id . '"'); tep_db_query('delete from ' . TABLE_ORDERS_STATUS_HISTORY . ' where orders_id = "' . (int)$order_id . '"'); tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS . ' where orders_id = "' . (int)$order_id . '"'); tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_ATTRIBUTES . ' where orders_id = "' . (int)$order_id . '"'); tep_db_query('delete from ' . TABLE_ORDERS_PRODUCTS_DOWNLOAD . ' where orders_id = "' . (int)$order_id . '"'); } $insert_order = true; } } else { $insert_order = true; } if ($insert_order == true) { $order_totals = array(); if (is_array($order_total_modules->modules)) { reset($order_total_modules->modules); while (list(, $value) = each($order_total_modules->modules)) { $class = substr($value, 0, strrpos($value, '.')); if ($GLOBALS[$class]->enabled) { for ($i=0, $n=sizeof($GLOBALS[$class]->output); $i<$n; $i++) { if (tep_not_null($GLOBALS[$class]->output[$i]['title']) && tep_not_null($GLOBALS[$class]->output[$i]['text'])) { $order_totals[] = array('code' => $GLOBALS[$class]->code, 'title' => $GLOBALS[$class]->output[$i]['title'], 'text' => $GLOBALS[$class]->output[$i]['text'], 'value' => $GLOBALS[$class]->output[$i]['value'], 'sort_order' => $GLOBALS[$class]->sort_order); } } } } } $sql_data_array = array('customers_id' => $customer_id, 'customers_name' => $order->customer['firstname'] . ' ' . $order->customer['lastname'], 'customers_company' => $order->customer['company'], 'customers_street_address' => $order->customer['street_address'], 'customers_suburb' => $order->customer['suburb'], 'customers_city' => $order->customer['city'], 'customers_postcode' => $order->customer['postcode'], 'customers_state' => $order->customer['state'], 'customers_country' => $order->customer['country']['title'], 'customers_telephone' => $order->customer['telephone'], 'customers_email_address' => $order->customer['email_address'], 'customers_address_format_id' => $order->customer['format_id'], 'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'], 'delivery_company' => $order->delivery['company'], 'delivery_street_address' => $order->delivery['street_address'], 'delivery_suburb' => $order->delivery['suburb'], 'delivery_city' => $order->delivery['city'], 'delivery_postcode' => $order->delivery['postcode'], 'delivery_state' => $order->delivery['state'], 'delivery_country' => $order->delivery['country']['title'], 'delivery_address_format_id' => $order->delivery['format_id'], 'billing_name' => $order->billing['firstname'] . ' ' . $order->billing['lastname'], 'billing_company' => $order->billing['company'], 'billing_street_address' => $order->billing['street_address'], 'billing_suburb' => $order->billing['suburb'], 'billing_city' => $order->billing['city'], 'billing_postcode' => $order->billing['postcode'], 'billing_state' => $order->billing['state'], 'billing_country' => $order->billing['country']['title'], 'billing_address_format_id' => $order->billing['format_id'], 'payment_method' => $order->info['payment_method'], 'cc_type' => $order->info['cc_type'], 'cc_owner' => $order->info['cc_owner'], 'cc_number' => $order->info['cc_number'], 'cc_expires' => $order->info['cc_expires'], 'date_purchased' => 'now()', 'orders_status' => $order->info['order_status'], 'currency' => $order->info['currency'], 'currency_value' => $order->info['currency_value']); tep_db_perform(TABLE_ORDERS, $sql_data_array); $insert_id = tep_db_insert_id(); for ($i=0, $n=sizeof($order_totals); $i<$n; $i++) { $sql_data_array = array('orders_id' => $insert_id, 'title' => $order_totals[$i]['title'], 'text' => $order_totals[$i]['text'], 'value' => $order_totals[$i]['value'], 'class' => $order_totals[$i]['code'], 'sort_order' => $order_totals[$i]['sort_order']); tep_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array); } for ($i=0, $n=sizeof($order->products); $i<$n; $i++) { $sql_data_array = array('orders_id' => $insert_id, 'products_id' => tep_get_prid($order->products[$i]['id']), 'products_model' => $order->products[$i]['model'], 'products_name' => $order->products[$i]['name'], 'products_price' => $order->products[$i]['price'], 'final_price' => $order->products[$i]['final_price'], 'products_tax' => $order->products[$i]['tax'], 'products_quantity' => $order->products[$i]['qty']); tep_db_perform(TABLE_ORDERS_PRODUCTS, $sql_data_array); $order_products_id = tep_db_insert_id(); $order_total_modules->update_credit_account($i); $attributes_exist = '0'; if (isset($order->products[$i]['attributes'])) { $attributes_exist = '1'; for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) { if (DOWNLOAD_ENABLED == 'true') { $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad on pa.products_attributes_id=pad.products_attributes_id where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"; $attributes = tep_db_query($attributes_query); } else { $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"); } $attributes_values = tep_db_fetch_array($attributes); $sql_data_array = array('orders_id' => $insert_id, 'orders_products_id' => $order_products_id, 'products_options' => $attributes_values['products_options_name'], 'products_options_values' => $attributes_values['products_options_values_name'], 'options_values_price' => $attributes_values['options_values_price'], 'price_prefix' => $attributes_values['price_prefix']); tep_db_perform(TABLE_ORDERS_PRODUCTS_ATTRIBUTES, $sql_data_array); if ((DOWNLOAD_ENABLED == 'true') && isset($attributes_values['products_attributes_filename']) && tep_not_null($attributes_values['products_attributes_filename'])) { $sql_data_array = array('orders_id' => $insert_id, 'orders_products_id' => $order_products_id, 'orders_products_filename' => $attributes_values['products_attributes_filename'], 'download_maxdays' => $attributes_values['products_attributes_maxdays'], 'download_count' => $attributes_values['products_attributes_maxcount']); tep_db_perform(TABLE_ORDERS_PRODUCTS_DOWNLOAD, $sql_data_array); } } } } tep_session_register('cart_PayPal_IPN_ID'); $cart_PayPal_IPN_ID = $cartID . '-' . $insert_id; } } return false; } function process_button() { global $customer_id, $order, $languages_id, $currencies, $currency, $cart_PayPal_IPN_ID, $shipping; if (MODULE_PAYMENT_PAYPAL_IPN_CURRENCY == 'Selected Currency') { $my_currency = $currency; } else { $my_currency = substr(MODULE_PAYMENT_PAYPAL_IPN_CURRENCY, 5); } if (!in_array($my_currency, array('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) { $my_currency = 'USD'; } $parameters = array(); if ( (MODULE_PAYMENT_PAYPAL_IPN_TRANSACTION_TYPE == 'Per Item') && (MODULE_PAYMENT_PAYPAL_IPN_EWP_STATUS == 'False') ) { $parameters['cmd'] = '_cart'; $parameters['upload'] = '1'; for ($i=0, $n=sizeof($order->products); $i<$n; $i++) { $item = $i+1; $tax_value = ($order->products[$i]['tax'] / 100) * $order->products[$i]['final_price']; $parameters['item_name_' . $item] = $order->products[$i]['name']; $parameters['amount_' . $item] = number_format($order->products[$i]['final_price'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency)); $parameters['tax_' . $item] = number_format($tax_value * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency)); $parameters['quantity_' . $item] = $order->products[$i]['qty']; if ($i == 0) { if (DISPLAY_PRICE_WITH_TAX == 'true') { $shipping_cost = $order->info['shipping_cost']; } else { $module = substr($shipping['id'], 0, strpos($shipping['id'], '_')); $shipping_tax = tep_get_tax_rate($GLOBALS[$module]->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']); $shipping_cost = $order->info['shipping_cost'] + tep_calculate_tax($order->info['shipping_cost'], $shipping_tax); } $parameters['shipping_' . $item] = number_format($shipping_cost * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency)); } if (isset($order->products[$i]['attributes'])) { for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) { if (DOWNLOAD_ENABLED == 'true') { $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad on pa.products_attributes_id=pad.products_attributes_id where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"; $attributes = tep_db_query($attributes_query); } else { $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"); } $attributes_values = tep_db_fetch_array($attributes); // Unfortunately PayPal only accepts two attributes per product, so the// third attribute onwards will not be shown at PayPal $parameters['on' . $j . '_' . $item] = $attributes_values['products_options_name']; $parameters['os' . $j . '_' . $item] = $attributes_values['products_options_values_name']; } } } $parameters['num_cart_items'] = $item; } else { $parameters['cmd'] = '_xclick'; $parameters['item_name'] = STORE_NAME; $parameters['shipping'] = number_format($order->info['shipping_cost'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency)); if(MOVE_TAX_TO_TOTAL_AMOUNT == 'True') { // PandA.nl move tax to total amount $parameters['tax'] = 0; } else { // default $parameters['tax'] = number_format($order->info['tax'] * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency)); } } $parameters['business'] = MODULE_PAYMENT_PAYPAL_IPN_ID; if(MOVE_TAX_TO_TOTAL_AMOUNT == 'True') { // PandA.nl move tax to total amount $parameters['amount'] = number_format(($order->info['total'] - $order->info['shipping_cost']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency)); } else { // default $parameters['amount'] = number_format(($order->info['total'] - $order->info['shipping_cost'] - $order->info['tax']) * $currencies->get_value($my_currency), $currencies->get_decimal_places($my_currency)); } $parameters['currency_code'] = $my_currency; $parameters['invoice'] = substr($cart_PayPal_IPN_ID, strpos($cart_PayPal_IPN_ID, '-')+1); $parameters['custom'] = $customer_id; $parameters['no_shipping'] = '0'; $parameters['no_note'] = '1'; $parameters['notify_url'] = tep_href_link('ext/modules/payment/paypal_ipn/ipn.php', '', 'SSL', false, false); $parameters['return'] = tep_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL'); $parameters['cancel_return'] = tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'); $parameters['bn'] = $this->identifier; $parameters['first_name'] = $order->customer['name']; $parameters['address1'] = $order->customer['street_address']; $parameters['address2'] = $order->customer['suburb']; $parameters['city'] = $order->customer['city']; if ($order->customer['country']['iso_code_2']=='US') { $order->customer['state'] = tep_get_zone_code($order->customer['country_id'], $order->customer['zone_id'], $order->customer['state']); } $parameters['state'] = $order->customer['state']; $parameters['zip'] = $order->customer['postcode']; $parameters['country'] = $order->customer['country']['iso_code_2']; $parameters['email'] = $order->customer['email_address']; $parameters['cbt'] = 'Click to Complete Order!'; if (tep_not_null(MODULE_PAYMENT_PAYPAL_IPN_PAGE_STYLE)) { $parameters['page_style'] = MODULE_PAYMENT_PAYPAL_IPN_PAGE_STYLE; } if (MODULE_PAYMENT_PAYPAL_IPN_EWP_STATUS == 'True') { $parameters['cert_id'] = MODULE_PAYMENT_PAYPAL_IPN_EWP_CERT_ID; $random_string = rand(100000, 999999) . '-' . $customer_id . '-'; $data = ''; while (list($key, $value) = each($parameters)) { $data .= $key . '=' . $value . "\n"; } $fp = fopen(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt', 'w'); fwrite($fp, $data); fclose($fp); unset($data); if (function_exists('openssl_pkcs7_sign') && function_exists('openssl_pkcs7_encrypt')) { openssl_pkcs7_sign(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt', MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt', file_get_contents(MODULE_PAYMENT_PAYPAL_IPN_EWP_PUBLIC_KEY), file_get_contents(MODULE_PAYMENT_PAYPAL_IPN_EWP_PRIVATE_KEY), array('From' => MODULE_PAYMENT_PAYPAL_IPN_ID), PKCS7_BINARY); unlink(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt'); // remove headers from the signature $signed = file_get_contents(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt'); $signed = explode("\n\n", $signed); $signed = base64_decode($signed[1]); $fp = fopen(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt', 'w'); fwrite($fp, $signed); fclose($fp); unset($signed); openssl_pkcs7_encrypt(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt', MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt', file_get_contents(MODULE_PAYMENT_PAYPAL_IPN_EWP_PAYPAL_KEY), array('From' => MODULE_PAYMENT_PAYPAL_IPN_ID), PKCS7_BINARY); unlink(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt'); // remove headers from the encrypted result $data = file_get_contents(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt'); $data = explode("\n\n", $data); $data = '-----BEGIN PKCS7-----' . "\n" . $data[1] . "\n" . '-----END PKCS7-----'; unlink(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt'); } else { exec(MODULE_PAYMENT_PAYPAL_IPN_EWP_OPENSSL . ' smime -sign -in ' . MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt -signer ' . MODULE_PAYMENT_PAYPAL_IPN_EWP_PUBLIC_KEY . ' -inkey ' . MODULE_PAYMENT_PAYPAL_IPN_EWP_PRIVATE_KEY . ' -outform der -nodetach -binary > ' . MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt'); unlink(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'data.txt'); exec(MODULE_PAYMENT_PAYPAL_IPN_EWP_OPENSSL . ' smime -encrypt -des3 -binary -outform pem ' . MODULE_PAYMENT_PAYPAL_IPN_EWP_PAYPAL_KEY . ' < ' . MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt > ' . MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt'); unlink(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'signed.txt'); $fh = fopen(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt', 'rb'); $data = fread($fh, filesize(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt')); fclose($fh); unlink(MODULE_PAYMENT_PAYPAL_IPN_EWP_WORKING_DIRECTORY . '/' . $random_string . 'encrypted.txt'); } $process_button_string = tep_draw_hidden_field('cmd', '_s-xclick') . tep_draw_hidden_field('encrypted', $data); unset($data); } else { while (list($key, $value) = each($parameters)) { echo tep_draw_hidden_field($key, $value); } } return $process_button_string; } function before_process() { global $customer_id, $order, $sendto, $billto, $payment, $currencies, $cart, $cart_PayPal_IPN_ID; global $$payment; include(DIR_WS_CLASSES . 'order_total.php'); $order_total_modules = new order_total; $order_totals = $order_total_modules->process(); $order_id = substr($cart_PayPal_IPN_ID, strpos($cart_PayPal_IPN_ID, '-')+1); $sql_data_array = array('orders_id' => $order_id, 'orders_status_id' => $order->info['order_status'], 'date_added' => 'now()', 'customer_notified' => (SEND_EMAILS == 'true') ? '1' : '0', 'comments' => $order->info['comments']); tep_db_perform(TABLE_ORDERS_STATUS_HISTORY, $sql_data_array); // initialized for the email confirmation $products_ordered = ''; $subtotal = 0; $total_tax = 0; for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {// Stock Update - Joao Correia if (STOCK_LIMITED == 'true') { if (DOWNLOAD_ENABLED == 'true') { $stock_query_raw = "SELECT products_quantity, pad.products_attributes_filename FROM " . TABLE_PRODUCTS . " p LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES . " pa ON p.products_id=pa.products_id LEFT JOIN " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad ON pa.products_attributes_id=pad.products_attributes_id WHERE p.products_id = '" . tep_get_prid($order->products[$i]['id']) . "'";// Will work with only one option for downloadable products// otherwise, we have to build the query dynamically with a loop $products_attributes = $order->products[$i]['attributes']; if (is_array($products_attributes)) { $stock_query_raw .= " AND pa.options_id = '" . $products_attributes[0]['option_id'] . "' AND pa.options_values_id = '" . $products_attributes[0]['value_id'] . "'"; } $stock_query = tep_db_query($stock_query_raw); } else { $stock_query = tep_db_query("select products_quantity from " . TABLE_PRODUCTS . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); } if (tep_db_num_rows($stock_query) > 0) { $stock_values = tep_db_fetch_array($stock_query);// do not decrement quantities if products_attributes_filename exists if ((DOWNLOAD_ENABLED != 'true') || (!$stock_values['products_attributes_filename'])) { $stock_left = $stock_values['products_quantity'] - $order->products[$i]['qty']; } else { $stock_left = $stock_values['products_quantity']; } tep_db_query("update " . TABLE_PRODUCTS . " set products_quantity = '" . $stock_left . "' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); if ( ($stock_left < 1) && (STOCK_ALLOW_CHECKOUT == 'false') ) { tep_db_query("update " . TABLE_PRODUCTS . " set products_status = '0' where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); } } } // Update products_ordered (for bestsellers list) tep_db_query("update " . TABLE_PRODUCTS . " set products_ordered = products_ordered + " . sprintf('%d', $order->products[$i]['qty']) . " where products_id = '" . tep_get_prid($order->products[$i]['id']) . "'"); //------insert customer choosen option to order-------- $attributes_exist = '0'; $products_ordered_attributes = ''; if (isset($order->products[$i]['attributes'])) { $attributes_exist = '1'; for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) { if (DOWNLOAD_ENABLED == 'true') { $attributes_query = "select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix, pad.products_attributes_maxdays, pad.products_attributes_maxcount , pad.products_attributes_filename from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa left join " . TABLE_PRODUCTS_ATTRIBUTES_DOWNLOAD . " pad on pa.products_attributes_id=pad.products_attributes_id where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"; $attributes = tep_db_query($attributes_query); } else { $attributes = tep_db_query("select popt.products_options_name, poval.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_OPTIONS_VALUES . " poval, " . TABLE_PRODUCTS_ATTRIBUTES . " pa where pa.products_id = '" . $order->products[$i]['id'] . "' and pa.options_id = '" . $order->products[$i]['attributes'][$j]['option_id'] . "' and pa.options_id = popt.products_options_id and pa.options_values_id = '" . $order->products[$i]['attributes'][$j]['value_id'] . "' and pa.options_values_id = poval.products_options_values_id and popt.language_id = '" . $languages_id . "' and poval.language_id = '" . $languages_id . "'"); } $attributes_values = tep_db_fetch_array($attributes); $products_ordered_attributes .= "\n\t" . $attributes_values['products_options_name'] . ' ' . $attributes_values['products_options_values_name']; } }//------insert customer choosen option eof ---- $total_weight += ($order->products[$i]['qty'] * $ord Quote Link to comment Share on other sites More sharing options...
axioma Posted August 14, 2005 Share Posted August 14, 2005 when I try to test A PAYMENT with -oscommerce paypal-- I have been getting this error on the paypal payment page ""Error Detected -------------------------------------------------------------------------------- Please enter an amount greater than zero. "" note I tried " FIX FOR CCGV TO WORK CORRECTLY WITH PAYPAL_IPN BASED ON CCGV 5.14 AND PAYPAL_IPN v1.1 BY AARON DWYER" but... any help will be wellcome Quote Link to comment Share on other sites More sharing options...
MzBeanz Posted August 14, 2005 Share Posted August 14, 2005 I use paypal and I have never installed IPN just make sure you go to your paypal account and go into your profile>selling preferences>Website Payment Preferences and enable Auto Return for Website Payments and you have a page that tells your customers they have completed their payment to you. Maddie Quote Link to comment Share on other sites More sharing options...
Guest Posted August 14, 2005 Share Posted August 14, 2005 Well, mine works now. I just reinstalled it for the 100th time and it did what it was supposed to. yay! Quote Link to comment Share on other sites More sharing options...
chooch Posted August 15, 2005 Share Posted August 15, 2005 hi that looks really nice, please forward details of how to do it many thanks in advance <{POST_SNAPBACK}> is there anyone who has this info installed for their account info page? i am trying to get someone who has it installed to give me the code or to point me in the right direction please please look at quote number 611 for what i mean - thanks! Quote Upon receiving fixes and advice, too many people don't bother to post updates informing the forum of how it went. Until of course they need help again on other issues and they come running back! Why receive the information you require in good faith for free, only to then have the attitude to ignore the people who gave it to you? There's no harm in saying, 'Thanks, it worked'. On the contrary, it creates a better atmosphere. CHOOCH Link to comment Share on other sites More sharing options...
stiksandstones Posted August 15, 2005 Share Posted August 15, 2005 In the VALID PRODUCT LIST section of this contrib, is it possible to exclude 2 products, I have a really HOT item coming in tomm. and dont want people to use a code on these 2 products coming in. So I want the code that many customers have "SUPERVALUE20%CODE" to still work, just not for these 2 new items? I dont want to add product ID's of all my 400 products, minus these 2 guys I dont wanna give deals on??? Thanks Quote Link to comment Share on other sites More sharing options...
chooch Posted August 16, 2005 Share Posted August 16, 2005 I use paypal and I have never installed IPN just make sure you go to your paypal account and go into your profile>selling preferences>Website Payment Preferences and enable Auto Return for Website Payments and you have a page that tells your customers they have completed their payment to you. Maddie <{POST_SNAPBACK}> well that seems to be the easy way to it and it works fine :-) however for instances where IPN may be required it is better to sort these issues out now, or get a headache later.. i guess a headache is on the cards either way. infact, the prblem i found is that i cant even get a test certificate.. or what to do with it if i get it? anywayz, using the sandbox test thing it looks to work fine. i haven't installed tax rates so can't speak for that but the Voucher works fine - barring one thing. i placed a test order for ?2500 and was told that payment would have to be confirmed. i guess the merchat actually signs in at some point to accept. but the Voucher balance still stays the same unless the transaction is confirmed at the point of sale. it would be interesting to see how the Voucher balance can be deducted once the merchant gives it the all clear at paypal. Quote Upon receiving fixes and advice, too many people don't bother to post updates informing the forum of how it went. Until of course they need help again on other issues and they come running back! Why receive the information you require in good faith for free, only to then have the attitude to ignore the people who gave it to you? There's no harm in saying, 'Thanks, it worked'. On the contrary, it creates a better atmosphere. CHOOCH Link to comment Share on other sites More sharing options...
Guest Posted August 16, 2005 Share Posted August 16, 2005 Hi, I broke my Paypal_IPN and CCGV again.... I did not even change any code that should have bothered it. Now everything works on the site except that when people try to use a coupon the correct total does not get passed to paypal. I won't paste my code here until someone asks me too. Please feel free to PM too. I am DESPERATE for help. Last time all I did to fix it was re-upload the same files I uploaded a 100 times before. I appreciate any help, thank you Quote Link to comment Share on other sites More sharing options...
hnorfleet Posted August 18, 2005 Share Posted August 18, 2005 hnorfleet - i've just installed the v5.13 and so far I havn't found any bugs (although it's only just been installed and I may find some later on). As for how easy it is to install, then if you use something like beyond compare it's not too hard. I've got osc2.2 with quite a few mods and extra modules, with the beyond compare I just went through the files and added the lines of code where required. Took me about 1 1/2 hours <{POST_SNAPBACK}> Thanks for the assist. Installed 5.13 with a couple fixes and it works great. The only problem I've found is when you are creating a new coupon and click the admin link to validcategories.php or validproducts.php I get page not found, even though I can see the pages are right there. I've chmodded the files to 777 with no luck. Has anyone else had this problem? Quote Link to comment Share on other sites More sharing options...
chooch Posted August 18, 2005 Share Posted August 18, 2005 (edited) Thanks for the assist.? Installed 5.13 with a couple fixes and it works great.? The only problem I've found is when you are creating a new coupon and click the admin link to validcategories.php or validproducts.php I get page not found, even though I can see the pages are right there.? I've chmodded the files to 777 with no luck.? Has anyone else had this problem? <{POST_SNAPBACK}> catalog/admin/includes/filenames.php does your page have the following code? if not, add the missing lines and see if the link works define('FILENAME_VALIDCATEGORIES', 'validcategories.php'); define('FILENAME_VALIDPRODUCTS', 'validproducts.php'); good luck Edited August 18, 2005 by chooch Quote Upon receiving fixes and advice, too many people don't bother to post updates informing the forum of how it went. Until of course they need help again on other issues and they come running back! Why receive the information you require in good faith for free, only to then have the attitude to ignore the people who gave it to you? There's no harm in saying, 'Thanks, it worked'. On the contrary, it creates a better atmosphere. CHOOCH Link to comment Share on other sites More sharing options...
tuppergirl Posted August 19, 2005 Share Posted August 19, 2005 I've downloaded this contrib and got it installed. No errors, no problems BUT something is missing. I looked through this long posts and realised there are many things which I can't find in my contribution. Some functions are missing in my installation but there isn't any errors running it. There isn't any option to create Gift Voucher nor set Gift Voucher's values and product limits.. etc. Does anyone has any screenshot on this contrib? Thakns Quote Link to comment Share on other sites More sharing options...
excession Posted August 19, 2005 Share Posted August 19, 2005 i can do a screen shot but i've no idea how i'd post it lol. The option to create vouchers etc should be the last item on the left hand menu below Tools. Quote Link to comment Share on other sites More sharing options...
tuppergirl Posted August 19, 2005 Share Posted August 19, 2005 thanks but no, I didn't find that option under admin>tools I downloaded the 5.14 version and is this version incomplete? I tried it out and it doesn't really make sense. I set an option for to offer gv for new customers but there is not way to redeem the gift voucher, the gv code that sent via email is always invalid and the amount is not deducted at all. The discount coupon works fine but not the gv. I followed the instructions to create the gv as a product. But no, it doesn't work this way I think. Admin>catalog>categories/products> entered GIFT_12 for product model. This appear under new products. When purchased, is not recognised as a GV. No GV code is sent. Signed in again to send GV. Received the code via email and follows the link to a redeem page that says click continue to redeem the gv. Clicked continue and add items to cart, however, when entered the code via check out, the code is invalid. I tried to redeem it via Admin but no, it doesn't work either. The procedures seem odd and I'm wondering if I missed out any files? anyone can kindly help? Quote Link to comment Share on other sites More sharing options...
Jumping Rabbit Posted August 19, 2005 Share Posted August 19, 2005 thanks but no, I didn't find that option under admin>tools I downloaded the 5.14 version and is this version incomplete? I tried it out and it doesn't really make sense. I set an option for to offer gv for new customers but there is not way to redeem the gift voucher, the gv code that sent via email is always invalid and the amount is not deducted at all. The discount coupon works fine but not the gv. I followed the instructions to create the gv as a product. But no, it doesn't work this way I think. Admin>catalog>categories/products> entered GIFT_12 for product model. This appear under new products. When purchased, is not recognised as a GV. No GV code is sent. Signed in again to send GV. Received the code via email and follows the link to a redeem page that says click continue to redeem the gv. Clicked continue and add items to cart, however, when entered the code via check out, the code is invalid. I tried to redeem it via Admin but no, it doesn't work either. The procedures seem odd and I'm wondering if I missed out any files? anyone can kindly help? <{POST_SNAPBACK}> Well, if 5.14 do not work..use 5.13 it works... Quote Faster Checkout - osCommerce Knowledge Base - Anyone meet offline?, Has anyone of you cyberkids meet offline? For newbees do atleast read this 4 points: Basic info - Search tips and help - Posting tips and help - Basics for Design Link to comment Share on other sites More sharing options...
tuppergirl Posted August 19, 2005 Share Posted August 19, 2005 anyone has installed the 5.14 version and it is working perfectly fine? Please do let me know as I've installed this 5.14 but something seems missing. I spent two days trying to install, uninstall, read the files, figure out the procedures... etc.. but no, it doesnot seem to work properly even though there isn't any error messages. I'm not sure if is my problem or 5.14 has some files or functions missing. Please do let me know if you have this version installed and working perfectly with no problems. If you can do a screen shot, I'll be very grateful. thank you Quote Link to comment Share on other sites More sharing options...
hnorfleet Posted August 19, 2005 Share Posted August 19, 2005 catalog/admin/includes/filenames.php does your page have the following code? if not, add the missing lines and see if the link works define('FILENAME_VALIDCATEGORIES', 'validcategories.php'); define('FILENAME_VALIDPRODUCTS', 'validproducts.php'); good luck <{POST_SNAPBACK}> Thanks chooch, unfortunately that did not solve the problem. The links are defined correctly, display in the status bar on mouseover. Just won't load when clicked. I'm wondering if the pages are looking for some condition to be met that they are not seeing? Quote Link to comment Share on other sites More sharing options...
chooch Posted August 19, 2005 Share Posted August 19, 2005 Thanks chooch, unfortunately that did not solve the problem. The links are defined correctly, display in the status bar on mouseover. Just won't load when clicked. I'm wondering if the pages are looking for some condition to be met that they are not seeing? <{POST_SNAPBACK}> this is a wierd problem.... hmmm, did you FTP the files in the right location? catalog/admin/validproducts.php and catalog/admin/validcategories.php Quote Upon receiving fixes and advice, too many people don't bother to post updates informing the forum of how it went. Until of course they need help again on other issues and they come running back! Why receive the information you require in good faith for free, only to then have the attitude to ignore the people who gave it to you? There's no harm in saying, 'Thanks, it worked'. On the contrary, it creates a better atmosphere. CHOOCH Link to comment Share on other sites More sharing options...
dlpuma Posted August 21, 2005 Share Posted August 21, 2005 I've been digging through the 135 pages of this thread, but did not find this is a preious post. I have CCGV 5.13 installed and working, but I'm also using LinkPoint which needs the subtotal, shipping and tax to add up to the total for the order to be processed. I've found a few hacks and got the sort order changed for the subtotal to be recalculated. The problem comes in where the discount is a percentage and the rounding not coming out the same Example: Subtotal before disounts etc: $33.25 Discount Coupons:XWP-11002: -$3.33 Sub-Total: $29.93 United States Postal Service (1 x 4.4lbs) (Priority (2 - 3 Days)): $8.85 California Sales Tax: $2.32 Total: $41.09 Because the 10% discount is rounded up to $3.33, when the new subtotal is calculated, it is off by .01 ($33.25-$3.33 is $29.92), so when you add $29.93 + $8.85 + $2.32=$41.10 I'm not a PHP programer, but can dig my way around. I'm not sure where these calculations are done, and why the totals are coming up different. If anyone has any ideas, please let me know. --- Thanks, Dorothy Quote Link to comment Share on other sites More sharing options...
Fredrik.r Posted August 22, 2005 Share Posted August 22, 2005 Please, need some help; When trying to access my store I get this error: Fatal error: Cannot redeclare create_coupon_code() (previously declared in /home/lounge24/public_html/devstore/includes/functions/general.php:17) in /home/lounge24/public_html/devstore/includes/add_ccgvdc_application_top.php on line 36 Line 36 sais: function create_coupon_code($salt="secret", $length = SECURITY_CODE_LENGTH) { Quote Link to comment Share on other sites More sharing options...
Fredrik.r Posted August 22, 2005 Share Posted August 22, 2005 Regadring my question above I see that the code for creating coupon code exists in both general.php and add_ccgvdc_application_top.php. Should I remove it from general.php? Quote Link to comment Share on other sites More sharing options...
mr_absinthe Posted August 22, 2005 Share Posted August 22, 2005 Hello, I wonder if anybody experienced similar problem or if you could help me please, I don't really know what to do or try now... I'm unable to purchase gift vouchers with Credit Card or PayPal. I've tried 5 different settings and none of them work for Credit Cards but ALL work for Cheque / Money order! As soon as I purchase a voucher with money order, I can see it in a queue. However if I try to purchase it with PP or CC, I'm being charged, however nothing appears in the queue. The settings I've been trying so far are: Sub-total - Sort order = 1 Shipping - Sort order = 2 Tax - Sort order = 3 Gift Voucher - Sort order = 9 Discount Coupons - Sort Order =740 Total - Sort Order = 900 Sub-total - Sort order = 1 Shipping - Sort order = 2 Gift Voucher - Sort order = 740 Discount Coupons - Sort Order =760 Tax - Sort order = 800 Total - Sort Order = 900 Sub-total - Sort order = 1 Shipping - Sort order = 2 Gift Voucher - Sort order = 9 Discount Coupons - Sort Order =740 Tax - Sort order = 800 Total - Sort Order = 900 Sub-total - Sort order = 1 Shipping - Sort order = 2 Gift Voucher - Sort order = 760 Discount Coupons - Sort Order =740 Tax - Sort order = 800 Total - Sort Order = 900 Sub-total - Sort order = 1 Shipping - Sort order = 2 Gift Voucher - Sort order = 760 Discount Coupons - Sort Order =740 Tax - Sort order = 3 Total - Sort Order = 900 Weight is 0, download enabled, model GIFT-025. If there is someone who could help me, or at least try to tell me what to check for, I appreciate it. Alex Quote Absinthe Original Liquor Store Link to comment Share on other sites More sharing options...
tfittsy Posted August 22, 2005 Share Posted August 22, 2005 I just installed this contribution using the easy install for version 5.14, but when I go to the admin under tools there aren't any new options. Has anyone else installed using this version and the easy installer? Does it work for you if so? If it didn't and you got it working, what did you have to do? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.