Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Steph Mu Bai

Archived
  • Posts

    20
  • Joined

  • Last visited

Profile Information

  • Real Name
    ringuet

Steph Mu Bai's Achievements

  1. What i haved noticed in mine is : When you got enough points to cover the amount of your order and you have several method of payment possible (be it cash on delivery, paypal or whatever), then there's no box "preticked" and you have the possibility of ticking only the redeemed box, then , you're fine, you don't go to another method of payment and you're redirected to checkout_success... BUT, when you have usually one mean of payment (for instance, me, when it's only downloads, then i have only paypal as a payment method), then NO MATTER if your points cover up the total amount or not, you are redirected to Paypal, no matter... I'm not too sure how to make the points module a "proper" method of payment and maybe give it a prime status (like before paypal ?), not sure it'd be the solution though... i must say i can't quite code in php, i'm trying already to understand the codes when reading them, but can't really write them (apart from the obvious ;)) Steph
  2. Well, no matter what i'm doing at the mo', as the payment method available from the site is only paypal, it is prechecked and have no choice, even when ticking the max points and then setting the order to pay at zero, i'm still redirected to Paypal (where an order of zero can't exist, so you're forced to put something different of zero in the box)... Anyway, upgrading to V2, do i have to further modify the paypal_ipn.php file or the mods are still the same that they were in the V1.6 package ? Steph
  3. Further to my probleme of order total = 0 and being rederected towards of payment system (even if order covered COMPLETELY by redeemed points Here is the payment page ine the CLASS directory , should go with the bit in CHECKOUT_CONFIRMATION : // load the selected payment module require(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment($payment); require(DIR_WS_CLASSES . 'order.php'); $order = new order; $payment_modules->update_status(); PAYMENT.PHP in DIR CLASSES : // class methods /* The following method is needed in the checkout_confirmation.php page due to a chicken and egg problem with the payment class and order class. The payment modules needs the order destination data for the dynamic status feature, and the order class needs the payment module title. The following method is a work-around to implementing the method in all payment modules available which would break the modules in the contributions section. This should be looked into again post 2.2. */ function update_status() { if (is_array($this->modules)) { if (is_object($GLOBALS[$this->selected_module])) { if (function_exists('method_exists')) { if (method_exists($GLOBALS[$this->selected_module], 'update_status')) { $GLOBALS[$this->selected_module]->update_status(); } } else { // PHP3 compatibility @call_user_method('update_status', $GLOBALS[$this->selected_module]); } } } } function javascript_validation() { $js = ''; if (is_array($this->modules)) { $js = '<script language="javascript"><!-- ' . "\n" . 'function check_form() {' . "\n" . ' var error = 0;' . "\n" . ' var error_message = "' . JS_ERROR . '";' . "\n" . ' var payment_value = null;' . "\n" . ' if (document.checkout_payment.payment.length) {' . "\n" . ' for (var i=0; i<document.checkout_payment.payment.length; i++) {' . "\n" . ' if (document.checkout_payment.payment[i].checked) {' . "\n" . ' payment_value = document.checkout_payment.payment[i].value;' . "\n" . ' }' . "\n" . ' }' . "\n" . ' } else if (document.checkout_payment.payment.checked) {' . "\n" . ' payment_value = document.checkout_payment.payment.value;' . "\n" . ' } else if (document.checkout_payment.payment.value) {' . "\n" . ' payment_value = document.checkout_payment.payment.value;' . "\n" . ' }' . "\n\n"; reset($this->modules); while (list(, $value) = each($this->modules)) { $class = substr($value, 0, strrpos($value, '.')); if ($GLOBALS[$class]->enabled) { $js .= $GLOBALS[$class]->javascript_validation(); } } $js .= "\n" . ' if (payment_value == null) {' . "\n" . ' error_message = error_message + "' . JS_ERROR_NO_PAYMENT_MODULE_SELECTED . '";' . "\n" . ' error = 1;' . "\n" . ' }' . "\n\n" . // Points/Rewards Module V1.60 BOF //' if (error == 1) {' . "\n" . ' if (error == 1 && submitter != 1) {' . "\n" . // Points/Rewards Module V1.60 EOF ' alert(error_message);' . "\n" . ' return false;' . "\n" . ' } else {' . "\n" . ' return true;' . "\n" . ' }' . "\n" . '}' . "\n" . '//--></script>' . "\n"; } return $js; } Sorry again, just thought it might be usefull to have a look at the code :) Steph
  4. Sorry to be thick, but in the config page in the admin, i don't see anything related to the number of decimal... 5 from top is "set auto credit point" but i've read them all... Did i miss something ? (i haven't installed yet the v2, i'm still on V1.6) The thing is for order at zero, in the payment info page i'm still obliged to tick a mean of payment, and rewarding points are not "considered" as a mean apparently (as of course i can tick 2 boxes, paypal and redeemmed), but can't Untick one of the payment system... Where should i look ? i thought since it's redeemed max are caculated against the order, when it states the max point = (make order =0), i haven't set any limit) , well i should be able to use redeemed as the ONLY mean of payment ? My checkout_out payment page : <?php /* $Id: checkout_payment.php,v 1.113 2003/06/29 23:03:27 hpdl Exp $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ require('includes/application_top.php'); // if the customer is not logged on, redirect them to the login page if (!tep_session_is_registered('customer_id')) { $navigation->set_snapshot(); tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL')); } // if there is nothing in the customers cart, redirect them to the shopping cart page if ($cart->count_contents() < 1) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); } // if no shipping method has been selected, redirect the customer to the shipping method selection page if (!tep_session_is_registered('shipping')) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } // avoid hack attempts during the checkout procedure by checking the internal cartID if (isset($cart->cartID) && tep_session_is_registered('cartID')) { if ($cart->cartID != $cartID) { tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); } } // Stock Check if ( (STOCK_CHECK == 'true') && (STOCK_ALLOW_CHECKOUT != 'true') ) { $products = $cart->get_products(); for ($i=0, $n=sizeof($products); $i<$n; $i++) { if (tep_check_stock($products[$i]['id'], $products[$i]['quantity'])) { tep_redirect(tep_href_link(FILENAME_SHOPPING_CART)); break; } } } // if no billing destination address was selected, use the customers own address as default if (!tep_session_is_registered('billto')) { tep_session_register('billto'); $billto = $customer_default_address_id; } else { // verify the selected billing address $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$billto . "'"); $check_address = tep_db_fetch_array($check_address_query); if ($check_address['total'] != '1') { $billto = $customer_default_address_id; if (tep_session_is_registered('payment')) tep_session_unregister('payment'); } } require(DIR_WS_CLASSES . 'order.php'); $order = new order; if (!tep_session_is_registered('comments')) tep_session_register('comments'); $total_weight = $cart->show_weight(); $total_count = $cart->count_contents(); // load all enabled payment modules require(DIR_WS_CLASSES . 'payment.php'); $payment_modules = new payment; require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_PAYMENT); $breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); $breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); ?> <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html <?php echo HTML_PARAMS; ?>> <head> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"> <title><?php echo TITLE; ?></title> <base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>"> <link rel="stylesheet" type="text/css" href="stylesheet.css"> <script language="javascript"><!-- /* Points/Rewards Module V1.60 bof*/ function clearText(thefield){ if (thefield.defaultValue==thefield.value) thefield.value = "" } function validate(field) { var valid = "0123456789.," var ok = "yes"; var temp; for (var i=0; i<field.value.length; i++) { temp = "" + field.value.substring(i, i+1); if (valid.indexOf(temp) == "-1") ok = "no"; } if (ok == "no") { alert("<?php echo REDEEM_SYSTEM_JS_ERROR; ?>"); field.focus(); field.select(); } } var submitter = null; function submitFunction() { submitter = 1; } /* Points/Rewards Module V1.60 eof*/ var selected; function selectRowEffect(object, buttonSelect) { if (!selected) { if (document.getElementById) { selected = document.getElementById('defaultSelected'); } else { selected = document.all['defaultSelected']; } } if (selected) selected.className = 'moduleRow'; object.className = 'moduleRowSelected'; selected = object; // one button is not an array if (document.checkout_payment.payment[0]) { document.checkout_payment.payment[buttonSelect].checked=true; } else { document.checkout_payment.payment.checked=true; } } function rowOverEffect(object) { if (object.className == 'moduleRow') object.className = 'moduleRowOver'; } function rowOutEffect(object) { if (object.className == 'moduleRowOver') object.className = 'moduleRow'; } //--></script> <?php echo $payment_modules->javascript_validation(); ?> </head> <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0"> <!-- header //--> <?php require(DIR_WS_INCLUDES . 'header.php'); ?> <!-- header_eof //--> <!-- body //--> <table border="0" width="100%" cellspacing="3" cellpadding="3"> <tr> <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2"> <!-- left_navigation //--> <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?> <!-- left_navigation_eof //--> </table></td> <!-- body_text //--> <td width="100%" valign="top"><?php echo tep_draw_form('checkout_payment', tep_href_link(FILENAME_CHECKOUT_CONFIRMATION, '', 'SSL'), 'post', 'onsubmit="return check_form();"'); ?><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="pageHeading"><?php echo HEADING_TITLE; ?></td> <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_payment.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <?php if (isset($HTTP_GET_VARS['payment_error']) && is_object(${$HTTP_GET_VARS['payment_error']}) && ($error = ${$HTTP_GET_VARS['payment_error']}->get_error())) { ?> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td class="main"><b><?php echo tep_output_string_protected($error['title']); ?></b></td> </tr> </table></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBoxNotice"> <tr class="infoBoxNoticeContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main" width="100%" valign="top"><?php echo tep_output_string_protected($error['error']); ?></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <?php } ?> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td class="main"><b><?php echo TABLE_HEADING_BILLING_ADDRESS; ?></b></td> </tr> </table></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main" width="50%" valign="top"><?php echo TEXT_SELECTED_BILLING_DESTINATION; ?><br><br><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_PAYMENT_ADDRESS, '', 'SSL') . '">' . tep_image_button('button_change_address.gif', IMAGE_BUTTON_CHANGE_ADDRESS) . '</a>'; ?></td> <td align="right" width="50%" valign="top"><table border="0" cellspacing="0" cellpadding="2"> <tr> <td class="main" align="center" valign="top"><b><?php echo TITLE_BILLING_ADDRESS; ?></b><br><?php echo tep_image(DIR_WS_IMAGES . 'arrow_south_east.gif'); ?></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main" valign="top"><?php echo tep_address_label($customer_id, $billto, true, ' ', '<br>'); ?></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> </table></td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td class="main"><b><?php echo TABLE_HEADING_PAYMENT_METHOD; ?></b></td> </tr> </table></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <?php $selection = $payment_modules->selection(); if (sizeof($selection) > 1) { ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main" width="50%" valign="top"><?php echo TEXT_SELECT_PAYMENT_METHOD; ?></td> <td class="main" width="50%" valign="top" align="right"><b><?php echo TITLE_PLEASE_SELECT; ?></b><br><?php echo tep_image(DIR_WS_IMAGES . 'arrow_east_south.gif'); ?></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php } else { ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main" width="100%" colspan="2"><?php echo TEXT_ENTER_PAYMENT_INFORMATION; ?></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php } $radio_buttons = 0; for ($i=0, $n=sizeof($selection); $i<$n; $i++) { ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td colspan="2"><table border="0" width="100%" cellspacing="0" cellpadding="2"> <?php if ( ($selection[$i]['id'] == $payment) || ($n == 1) ) { echo ' <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n"; } else { echo ' <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n"; } ?> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main" colspan="3"><b><?php echo $selection[$i]['module']; ?></b></td> <td class="main" align="right"> <?php if (sizeof($selection) > 1) { echo tep_draw_radio_field('payment', $selection[$i]['id']); } else { echo tep_draw_hidden_field('payment', $selection[$i]['id']); } ?> </td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php if (isset($selection[$i]['error'])) { ?> <tr> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main" colspan="4"><?php echo $selection[$i]['error']; ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php } elseif (isset($selection[$i]['fields']) && is_array($selection[$i]['fields'])) { ?> <tr> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td colspan="4"><table border="0" cellspacing="0" cellpadding="2"> <?php for ($j=0, $n2=sizeof($selection[$i]['fields']); $j<$n2; $j++) { ?> <tr> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main"><?php echo $selection[$i]['fields'][$j]['title']; ?></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main"><?php echo $selection[$i]['fields'][$j]['field']; ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php } ?> </table></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php } ?> </table></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php $radio_buttons++; } ?> </table></td> </tr> </table></td> </tr> <!-- Points/Rewards Module V1.60 Redeemption box bof --> <?php if ((USE_REDEEM_SYSTEM == 'true') && ($customer_shopping_points = tep_get_shopping_points()) && $customer_shopping_points > 0){ if ((get_redemption_rules($order) == true) && (get_points_rules_discounted($order) == true)){ if ($customer_shopping_points >= POINTS_LIMIT_VALUE){ if ((POINTS_MIN_AMOUNT == '') || ($cart->show_total() >= POINTS_MIN_AMOUNT) ){ ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td class="main"><b><?php echo TABLE_HEADING_REDEEM_SYSTEM; ?></b></td> </tr> </table></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main" width="100%" colspan="3"><?php echo TEXT_REDEEM_SYSTEM_START . number_format($customer_shopping_points,2) . TEXT_REDEEM_SYSTEM_MIDDLE . $currencies->format(tep_calc_shopping_pvalue($customer_shopping_points)) . ','; ?></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <?php $max_points = 0; $max_points = ($order->info['total']/REDEEM_POINT_VALUE > POINTS_MAX_VALUE ? POINTS_MAX_VALUE : $order->info['total']/REDEEM_POINT_VALUE); $max_points = ($customer_shopping_points > $max_points ? $max_points : $customer_shopping_points); if (POINTS_LIMIT_EXACT == 'false'){ ?> <td class="main" width="100%" colspan="3"><?php printf(TEXT_REDEEM_SYSTEM_TOTAL, $currencies->format($order->info['total'])); ?></td> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php } ?> <?php if (POINTS_LIMIT_EXACT == 'true' && $customer_shopping_points >= POINTS_EXACT_VALUE){ if(tep_session_is_registered('customer_shopping_points_spending')) tep_session_unregister('customer_shopping_points_spending'); ?> <tr class="moduleRow" onMouseOver="rowOverEffect(this)" onMouseOut="rowOutEffect(this)" onClick="submitFunction()"> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main"><?php echo TEXT_REDEEM_SYSTEM_SPENDING_EXACT; ?></td> <td class="main" align="right"><?php echo tep_draw_checkbox_field('customer_shopping_points_spending', $customer_shopping_points_spending); ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> <?php } else { ?> <tr onClick="submitFunction()"> <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <td class="main" ><?php printf(TEXT_REDEEM_SYSTEM_SPENDING_ALL, number_format($max_points,2)); ?></td> <td class="main" align="right"><br><?php echo tep_draw_checkbox_field('customer_shopping_points_spending', $max_points); ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> </table></td> </tr> <?php } ?> </table></td> </tr> </table></td> </tr> <?php } } } } ?> <!-- Points/Rewards Module V1.60 Redeemption box eof --> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td class="main"><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td> </tr> </table></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td><?php echo tep_draw_textarea_field('comments', 'soft', '60', '5'); ?></td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main"><b><?php echo TITLE_CONTINUE_CHECKOUT_PROCEDURE . '</b><br>' . TEXT_CONTINUE_CHECKOUT_PROCEDURE; ?></td> <td class="main" align="right"><?php echo tep_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="50%" align="right"><?php echo tep_draw_separator('pixel_silver.gif', '1', '5'); ?></td> <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td> </tr> </table></td> <td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td> <td><?php echo tep_image(DIR_WS_IMAGES . 'checkout_bullet.gif'); ?></td> <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td> </tr> </table></td> <td width="25%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td> <td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td> <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '1', '5'); ?></td> </tr> </table></td> </tr> <tr> <td align="center" width="25%" class="checkoutBarFrom"><?php echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '" class="checkoutBarFrom">' . CHECKOUT_BAR_DELIVERY . '</a>'; ?></td> <td align="center" width="25%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_PAYMENT; ?></td> <td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td> <td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_FINISHED; ?></td> </tr> </table></td> </tr> </table></form></td> <!-- body_text_eof //--> <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2"> <!-- right_navigation //--> <?php require(DIR_WS_INCLUDES . 'column_right.php'); ?> <!-- right_navigation_eof //--> </table></td> </tr> </table> <!-- body_eof //--> <!-- footer //--> <?php require(DIR_WS_INCLUDES . 'footer.php'); ?> <!-- footer_eof //--> <br> </body> </html> <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> Sorry for the bandwidth, and thanks for this great module all round too, hope you could help :) Steph
  5. Hello hello First of all, thanks a lot for this contrib, this is absolutly fab and your step by step install instructions are just great !!! I have 2 basic questions, as i can't find where it is at the mo' (i know i knew, but can't find it anymore ;)) I want the point to be just "plain", ie 546 points, not 546.00 points how do i get rid of this (either for "real" or just not showing :)) Secondly when after remdeemed points the total order equals ZERO, then i click confirm and i am still redirected to PAYPAL... I would like to be redirected then to either checkout_process or checkout_success (i do not know what is best, i guess success otherwise it'd check if payment has been received ?) I thought it did it automaticaly but if fact no... (or maybe it's because i've tried to install Paypal IPN and and uninstalled it afterwards ?) thanks in advance for your precious help, Steph
  6. Hello there, This IS EXACTLY what i need as well, please would you be so marvellously kind to indeed post it ? :-D Thanks a lot, Steph
  7. Auto quote is a bit silly i reckon and it is still not the place BUT i think i do have the solution for this 'as simple as it is' i spent my all day tryin' combining items and stuf, and noooooo, as far as i can see now, it was simple. Give multiple attributes to your product, which attributes will all be downloads of different files... Your order history DOES show your product with all its attributes, thus providing as many links as attributes :-D Now, here's hoping the download controller do allow multiple links in an order per say, per item (i can't see why it wouldn't, but who knows... ) Steph
  8. Yeah, i think that's quite right... i just would like to investigate a little little more on what happen if i turn off IPN paypal to go back to another method, because if the "pre verified" order is no more created, then all right, i'm completely safe with my "new" secured method (would be with bank and no loosing of data), and no stealing possible anymore, BUT if it did alter the code and even if "IPN deasable", the "preorder un verified" is created in the db, then, here we go again, stealing issues, have to configure download controller to work this bit, but this time with a new way of payment and nobody to help me changing the order status the right way ;-)) Anyway, time will tell :-p As for my other big concern (and i know it's not really the place, but just don't know where to look for a solution), bloody too big files to download... when selling double live albums (and i'll do only that, it's an "concerts site") , i'm ending up with maybe 200 Mo files / show... How do i do to at least split that in two files and the dowload Osc option still working... D'ya know where i could ask for help ? thanks , and bonsoir (sorry for English mistakes :)) Steph
  9. Hello hello, From my understanding of things so far : >>> if you have "standard" paypal (NOT IPN installed), customers who haven't paid can't actually see any download links because they wouldn't see any order at all before the payment has been completed, so there's no big risk of being "stolen" i guess... HOWEVER for them to actually see their download product they MUST return to the store (yourstore.com/catalog/checkout_process.php otherwise their data is LOST and they wouldn't automatically see any d/l links even if the payment has been successfull... this because in the standard paypal the transfer of data is by PDT and REQUIRES a return to your store... You'd say there's pretty slight chances tbh that the guy who just bought a download wouldn't return the store to actually get access to the product (unlike when you buy tshirts and can't care less of return or not to the store, you're just wating for the delivery man ;-)) though BUT there can always be an error occuring or he can be not focused enough and not cliking the "continue" button Paypal proposes after payment (if you're not registered you can click either continue or register to paypal... if you don't click continue, you're order is gone...) There's also the case when for some reason Payment via Paypal is "pending" and not instant then you (the client) won't go to completion, then you wont return the right url of your site, then if after pending for some reason payment is accepted, you (the merchant) have a payment notificated, but no order to go with it... All those "not returning loss" are i supposed quite minimal for downloads as i said since ppl DO CARE to return ;) And there's no stealing since there's no "concrete" order in the dbb before payment... >>> NOW for avoiding all the problems occuring with loosing data with the PDT solution, there's another way to send the data from paypal to merchant , this is IPN, this "thing" sends the data to you (merchant) whether or not the customer has returned to your site or whether or not the payment is completed, or pending... this is by an "hidden" way that goes to an ipn file onto your (merchant) server... What does Paypal IPN contrib does is then "decode" the ipn file...and mainly create the order in the database BEFORE payment is completed... This way whether the customer returns to your site, has a pending payment or whatever, you still have a trace of the order and you just have to "wait" for the IPN to tell you what you want to do (IPN manages pending orders, by sending an updated status as soon as they're not pending anymore but completed)... Which seems then all great... OUR problem here is then, your "order" exists, you can view it if you escape from paypal screen and relog, then you have access to your file even if you haven't paid i guess... THE solution here is to enable D/L controller which would set another status of order under which NO link would be displayed in whatever order history you could view (paid or awaiting payment).... you enable d/l only with order satus above the IPN VERIFIED order status, from what i have gathered.... SO combining both you have (almost i guess) NO RISK of loosing data OR being stolen... Now again, depends on what you look for, with the "basic" paypal module PDT only, there are little chances of loosing orders, but there are chances of losing them... with IPN , you don't loose orders but you might have to be protected against "stealing" i guess... Or then i just could be wrong LOL ;) Sorry for the bandwith... hope i've understood things the right way ;) Steph
  10. Hello hello (bonjour :-)) Thanks for your reply, actually my question was yep, but *how* do i do this "simply" querry in order history (same as in cart, but in order history) (ie what is the code ?) and where do i place it then ? and how do i "ad" it to the querry in cart content so it gives me the result for the whole cart content + history... I won't have the problem of products which no longer exists since i will let all products in the database once created (i don't have many many), it's a download music store only so i'll just desable the link when it's not availaible anymore and the site will be designed anyway to show only "featured products" (so the customer won't see the d/l not available, but they still exist :-)) The only concern is then for the non yet signed in (because obviously if he's not a registered at all he won't qualify with the order history anyway, what's in cart is what qualifies him for the discount...) Would it make sense then to make a twisted discount category like this : discount category in shopping cart (just scan the content as it is), ad a relevant discount (exactly the same as you wrote per category) extra discount when check out confirmation (you're obliged to be registered by this stage) : a twisted discount category, would pick up categories of items (again in check out confirmation), make an extra discount as : (in euro let's say) : x of "live albums category" in order history = x euros "extra discount" ad this extra discount as the number coming from cart > new total, go to payment then the extra script is only : -show category discount in shopping_cart - show and ad to total from cart (with category discount) a "# of category items in history = # extra discount" in check out confirmation and go to payment.. Is this complicated code ? the second option being : force ppl to sign in before adding anything to cart and then having the script for discount category twisted like this : discount category = (nbr of items of said category in cart) + (number of items of said category in order hsitory) -1 for exemple show discount in shopping_cart I don't know which one is better or easier... i'd say it's prob better if you see your discount right in the shopping cart, it's more encouraging otherwise you doubt you got your discount... but then for this i should have forced to sign in before shopping_cart which i guess isn't quite difficult to make ? Well i actually don't know "where" i could beg for the piece of code i need, as, as said, i'm pretty completely newbie to php and can't figure out how to "write" that search in history and then apply the relevant discount... would you be sooooooo kind if you get time to help me out ? thanks, steph
  11. Hello hello, Your contrib seems to do "almost" exactly what i need but.... one thing I want someone to get a discount by category bought, (me download music), exemple if you bought already 2 live albums, then get a xxx euros discount on the third one... more precisely discount would be like this (nbr of album bought -1) = discount buy 3, get 2 euros discount , buy 4 get 3 euros... It's exactly from what 'im reading what your contrib does... but i would want this thing to look into order history, not only cart ... ie (your order history("from all time") + your cart) shows 4 albums of live category, so you get 3 euros discount on the item of the said live category... I just don't know if it's easy to ad that in the function ? and if yes, which code exactly where (i'm dumb at php, so i can't quite figure out even what is the name of the variable(s) to set the number of item of the said category in the custumer history... Hope you could help, i was thinking of trying to mix it with le loyalty scheme, but can't figure out how to use that aas well... thanks if you can help really :) Steph x 2MS2 (051113)
  12. Yeah i guess it is really recommanded, what my thoughts were (after my first question ;) : maybe the "appearing page" without completing the payment was due to the IPN Paypal contrib, since orders are "pre installed" in the database before checkout _ succes (and not after like with other payment modules?), then maybe if you install IPN and you won't pay, then your order already "exists" and you can see it relogging, even if he has not the "right" status ??? I've tried to d/l a product indeed and didn't see the page before paying, but i haven't installed paypal IPN yet, it was just paypal i guess (well the one that goes with the initial 051113 release... Anyway, following your instructions i'm gonna try and install the whole thing tonite, more (questions ;)) later thanks a lot steph
  13. Or is this thing is due to installation of Paypal IPN which as far as i have understood place the orders into the data base with a "on hold" status before actual "checkout_succes" has been reached out and thus for preventing lost of data of "non returning custumers" from paypal site ??
  14. Hello hello, I'm quite a newbie to OSc (well 6 days since forst install and on 22h/24 h ;)) and completely unware (so far but getting it by bits) of php... anyway just to set up the scheme I'm gonna set up an music online store and of course understood i need this d/l controller contrib :) My questions are as followed (sorry they're quite basic first but haven't seen mentionning) : >>> Can i use this contrib with another way of payment easily (i don't know much about code), as i wanted first to instal a secured payment solutions from ma Bank (Atos system i think) ? >>> Is it possible for one product to spilt files to be downlaoded (ex : i will sell a double live concert, and rather than having a MP3 file (zipped) of 300 Mo , i would like to give the custumer the possibility of d/l 2 ou 3 files instead (all with the same number of times of d/l permitted of course) >>> Last dumb question, i don't understand quite well the issue with the status of order that would allow custumer to have access to his file before the payment is succesfull, i've tried to buy on the my file then being registered, made up til the paypal payment page then stop (not entering credit card), opened another window and tried to logg in again... there is nothing yet in my account order history... so what was the trick again for stealing the d/l ? (not that i want to use it, just i want to avoid it !! :-)) Well, hope you could help, thanks steph
×
×
  • Create New...