Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

[Contribution]Paypal IPN - Devosc


devosc

Recommended Posts

Something isn't working with this contrib. It's going to be something wrong with the way I installed it I know, but I don't know what.

 

In Admin -> Paypal IPN I have not got any data althought I have had 10 or so paypal buyers since install.

 

In Admin -> Orders -> (Customer's Order details) I have the bog paypal box, but it shows no data eg:

 

 

Transaction Activity

Date Status Details Action Gross Fee Net Amount

No PayPal Transaction Information Available (53ff8a3afcd7d6e5064f0d525bf68976)

 

 

Can anyone offer any guidance?

 

Thanks

Jemma

Link to comment
Share on other sites

  • Replies 2.1k
  • Created
  • Last Reply

Top Posters In This Topic

In order to help find a solution I have taken several screenshots of my OSC setup, the process of checking out and what I get when I am returned to my site from paypal.

 

Here is a link to a zip file containing the photos:

http://s53.yousendit.com/d.aspx?id=1ZN8ES7...LD393JOVOJH6NIK

 

Please note, this was done on a live web server with SSL and a live paypal account.

I hope this helps anyone out there to find a solution to this problem?.

 

Hi

 

Just download the zip file and it is empty. It took a split second to download and arrived as a 0k file.

 

many thanks.

Link to comment
Share on other sites

In order to help find a solution I have taken several screenshots of my OSC setup, the process of checking out and what I get when I am returned to my site from paypal.

 

Here is a link to a zip file containing the photos:

http://s53.yousendit.com/d.aspx?id=1ZN8ES7...LD393JOVOJH6NIK

 

Please note, this was done on a live web server with SSL and a live paypal account.

I hope this helps anyone out there to find a solution to this problem?.

 

Hi

 

Forget my earlier post, your zip file came down on the 5th try.

 

I'm just off to study it now.

 

many thanks.

Link to comment
Share on other sites

Hi

 

Forget my earlier post, your zip file came down on the 5th try.

 

I'm just off to study it now.

 

many thanks.

Are you guys posting this in the correct support thread?

Link to comment
Share on other sites

Are you guys posting this in the correct support thread?

 

Erm, yes and no!

 

Yes because it started with "I installed this contribution but when the customer uses it to pay, the digital download doesn't work"

 

And

 

No because the digital download doesn't seem to work with any paypal contribution.

 

I do take your point, and agree that it may be better in another thread. However, if I am going to get help I would prefer it to come from people who are also using this contribution.

Link to comment
Share on other sites

Erm, yes and no!

 

Yes because it started with "I installed this contribution but when the customer uses it to pay, the digital download doesn't work"

 

And

 

No because the digital download doesn't seem to work with any paypal contribution.

 

I do take your point, and agree that it may be better in another thread. However, if I am going to get help I would prefer it to come from people who are also using this contribution.

Fair enough. I suppose that the customer returns to your shop after paying by paypal and cannot down load the digital download. If they could, would this be risky? I don't know, but maybe you could try changing the order status to processing and see what happens.

Link to comment
Share on other sites

Fair enough. I suppose that the customer returns to your shop after paying by paypal and cannot down load the digital download. If they could, would this be risky? I don't know, but maybe you could try changing the order status to processing and see what happens.

 

The customer does return to the checkout_success page. At the bottom of this page is a line that says "Download Link:" with no link after it.

 

Below that is three boxes, the first contains the file name, the second contains the download expiry date and the thrird contains the number of download left. All three boxes always contain the correct information, but a link never appears.

 

I have tried setting the order status to everything possible, but the link never appears.

Link to comment
Share on other sites

The customer does return to the checkout_success page. At the bottom of this page is a line that says "Download Link:" with no link after it.

 

Below that is three boxes, the first contains the file name, the second contains the download expiry date and the thrird contains the number of download left. All three boxes always contain the correct information, but a link never appears.

 

I have tried setting the order status to everything possible, but the link never appears.

Hard to see what is causing the problem. Could you post the source code for checkout_success.php?

Link to comment
Share on other sites

Hard to see what is causing the problem. Could you post the source code for checkout_success.php?

 

Yes, gladly

 

I have made one change to this file. The line below originally pointed to downloads.php but no file of that name exists, so I changed it to download.php, which does exist.

 

<?php if (DOWNLOAD_ENABLED == 'true') include(DIR_WS_MODULES . 'download.php'); ?>

 

 

checkout_succes.php

 

<?php

/*

$Id: checkout_success.php,v 1.49 2003/06/09 23:03:53 hpdl Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright © 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 shopping cart page

if (!tep_session_is_registered('customer_id')) {

tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));

}

 

if (isset($HTTP_GET_VARS['action']) && ($HTTP_GET_VARS['action'] == 'update')) {

$notify_string = 'action=notify&';

$notify = $HTTP_POST_VARS['notify'];

if (!is_array($notify)) $notify = array($notify);

for ($i=0, $n=sizeof($notify); $i<$n; $i++) {

$notify_string .= 'notify[]=' . $notify[$i] . '&';

}

if (strlen($notify_string) > 0) $notify_string = substr($notify_string, 0, -1);

 

tep_redirect(tep_href_link(FILENAME_DEFAULT, $notify_string));

}

 

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_SUCCESS);

 

$breadcrumb->add(NAVBAR_TITLE_1);

$breadcrumb->add(NAVBAR_TITLE_2);

 

$global_query = tep_db_query("select global_product_notifications from " . TABLE_CUSTOMERS_INFO . " where customers_info_id = '" . (int)$customer_id . "'");

$global = tep_db_fetch_array($global_query);

 

if ($global['global_product_notifications'] != '1') {

$orders_query = tep_db_query("select orders_id from " . TABLE_ORDERS . " where customers_id = '" . (int)$customer_id . "' order by date_purchased desc limit 1");

$orders = tep_db_fetch_array($orders_query);

 

$products_array = array();

$products_query = tep_db_query("select products_id, products_name from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$orders['orders_id'] . "' order by products_name");

while ($products = tep_db_fetch_array($products_query)) {

$products_array[] = array('id' => $products['products_id'],

'text' => $products['products_name']);

}

}

?>

<!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">

</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('order', tep_href_link(FILENAME_CHECKOUT_SUCCESS, 'action=update', 'SSL')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td><table border="0" width="100%" cellspacing="4" cellpadding="2">

<tr>

<td valign="top"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_man_on_board.gif', HEADING_TITLE); ?></td>

<td valign="top" class="main"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?><div align="center" class="pageHeading"><?php echo HEADING_TITLE; ?></div><br><?php echo TEXT_SUCCESS; ?><br><br>

<?php

if ($global['global_product_notifications'] != '1') {

echo TEXT_NOTIFY_PRODUCTS . '<br><p class="productsNotifications">';

 

$products_displayed = array();

for ($i=0, $n=sizeof($products_array); $i<$n; $i++) {

if (!in_array($products_array[$i]['id'], $products_displayed)) {

echo tep_draw_checkbox_field('notify[]', $products_array[$i]['id']) . ' ' . $products_array[$i]['text'] . '<br>';

$products_displayed[] = $products_array[$i]['id'];

}

}

 

echo '</p>';

} else {

echo TEXT_SEE_ORDERS . '<br><br>' . TEXT_CONTACT_STORE_OWNER;

}

?>

<h3><?php echo TEXT_THANKS_FOR_SHOPPING; ?></h3></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td align="right" class="main"><?php echo tep_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></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%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></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_image(DIR_WS_IMAGES . 'checkout_bullet.gif'); ?></td>

</tr>

</table></td>

</tr>

<tr>

<td align="center" width="25%" class="checkoutBarFrom"><?php echo CHECKOUT_BAR_DELIVERY; ?></td>

<td align="center" width="25%" class="checkoutBarFrom"><?php echo CHECKOUT_BAR_PAYMENT; ?></td>

<td align="center" width="25%" class="checkoutBarFrom"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td>

<td align="center" width="25%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_FINISHED; ?></td>

</tr>

</table></td>

</tr>

<?php if (DOWNLOAD_ENABLED == 'true') include(DIR_WS_MODULES . 'download.php'); ?>

</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'); ?>

Link to comment
Share on other sites

Yes, gladly

 

I have made one change to this file. The line below originally pointed to downloads.php but no file of that name exists, so I changed it to download.php, which does exist.

 

<?php if (DOWNLOAD_ENABLED == 'true') include(DIR_WS_MODULES . 'download.php'); ?>

checkout_succes.php

 

<?php

/*

$Id: checkout_success.php,v 1.49 2003/06/09 23:03:53 hpdl Exp $

 

osCommerce, Open Source E-Commerce Solutions

http://www.oscommerce.com

 

Copyright ? 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 shopping cart page

if (!tep_session_is_registered('customer_id')) {

tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));

}

 

if (isset($HTTP_GET_VARS['action']) && ($HTTP_GET_VARS['action'] == 'update')) {

$notify_string = 'action=notify&';

$notify = $HTTP_POST_VARS['notify'];

if (!is_array($notify)) $notify = array($notify);

for ($i=0, $n=sizeof($notify); $i<$n; $i++) {

$notify_string .= 'notify[]=' . $notify[$i] . '&';

}

if (strlen($notify_string) > 0) $notify_string = substr($notify_string, 0, -1);

 

tep_redirect(tep_href_link(FILENAME_DEFAULT, $notify_string));

}

 

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_SUCCESS);

 

$breadcrumb->add(NAVBAR_TITLE_1);

$breadcrumb->add(NAVBAR_TITLE_2);

 

$global_query = tep_db_query("select global_product_notifications from " . TABLE_CUSTOMERS_INFO . " where customers_info_id = '" . (int)$customer_id . "'");

$global = tep_db_fetch_array($global_query);

 

if ($global['global_product_notifications'] != '1') {

$orders_query = tep_db_query("select orders_id from " . TABLE_ORDERS . " where customers_id = '" . (int)$customer_id . "' order by date_purchased desc limit 1");

$orders = tep_db_fetch_array($orders_query);

 

$products_array = array();

$products_query = tep_db_query("select products_id, products_name from " . TABLE_ORDERS_PRODUCTS . " where orders_id = '" . (int)$orders['orders_id'] . "' order by products_name");

while ($products = tep_db_fetch_array($products_query)) {

$products_array[] = array('id' => $products['products_id'],

'text' => $products['products_name']);

}

}

?>

<!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">

</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('order', tep_href_link(FILENAME_CHECKOUT_SUCCESS, 'action=update', 'SSL')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td><table border="0" width="100%" cellspacing="4" cellpadding="2">

<tr>

<td valign="top"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_man_on_board.gif', HEADING_TITLE); ?></td>

<td valign="top" class="main"><?php echo tep_draw_separator('pixel_trans.gif', '1', '10'); ?><div align="center" class="pageHeading"><?php echo HEADING_TITLE; ?></div><br><?php echo TEXT_SUCCESS; ?><br><br>

<?php

if ($global['global_product_notifications'] != '1') {

echo TEXT_NOTIFY_PRODUCTS . '<br><p class="productsNotifications">';

 

$products_displayed = array();

for ($i=0, $n=sizeof($products_array); $i<$n; $i++) {

if (!in_array($products_array[$i]['id'], $products_displayed)) {

echo tep_draw_checkbox_field('notify[]', $products_array[$i]['id']) . ' ' . $products_array[$i]['text'] . '<br>';

$products_displayed[] = $products_array[$i]['id'];

}

}

 

echo '</p>';

} else {

echo TEXT_SEE_ORDERS . '<br><br>' . TEXT_CONTACT_STORE_OWNER;

}

?>

<h3><?php echo TEXT_THANKS_FOR_SHOPPING; ?></h3></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td align="right" class="main"><?php echo tep_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></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%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></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_image(DIR_WS_IMAGES . 'checkout_bullet.gif'); ?></td>

</tr>

</table></td>

</tr>

<tr>

<td align="center" width="25%" class="checkoutBarFrom"><?php echo CHECKOUT_BAR_DELIVERY; ?></td>

<td align="center" width="25%" class="checkoutBarFrom"><?php echo CHECKOUT_BAR_PAYMENT; ?></td>

<td align="center" width="25%" class="checkoutBarFrom"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td>

<td align="center" width="25%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_FINISHED; ?></td>

</tr>

</table></td>

</tr>

<?php if (DOWNLOAD_ENABLED == 'true') include(DIR_WS_MODULES . 'download.php'); ?>

</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'); ?>

Did you do the edit to this file for the PayPal contrib?

Find:

<td><?php echo '<a href="' . tep_href_link(FILENAME_ACCOUNT_HISTORY, tep_get_all_get_params(array('order_id')), 'SSL') . '">' . tep_image_button('button_back.gif', IMAGE_BUTTON_BACK) . '</a>'; ?></td>

 

Replace with:

<?php /* begin PayPal_Shopping_Cart_IPN */ ?>

<td>

<div style="float:left;"><?php echo '<a href="' . tep_href_link(FILENAME_ACCOUNT_HISTORY, tep_get_all_get_params(array('order_id')), 'SSL') . '">' . tep_image_button('button_back.gif', IMAGE_BUTTON_BACK) . '</a>'; ?></div>

<?php require(DIR_WS_MODULES . 'payment/paypal/catalog/order_send_money.inc.php'); ?>

</td>

<?php /* end PayPal_Shopping_Cart_IPN */ ?>

Link to comment
Share on other sites

Are you guys posting this in the correct support thread?

 

I think the problem that I and Joed have are casued by the same thing: after the cutomer is returned to the shop after paying on paypals site, the shop is not updated correctly, the shopping cart is not emptied, and IF the customer bought a download file then the link does not appear.

 

the downloads problem is a symptopn of a greater problem which appears to be caused by this contribution.

 

look at the link to the screenshots I posted, all will be clear.

Link to comment
Share on other sites

I think the problem that I and Joed have are casued by the same thing: after the cutomer is returned to the shop after paying on paypals site, the shop is not updated correctly, the shopping cart is not emptied, and IF the customer bought a download file then the link does not appear.

 

the downloads problem is a symptopn of a greater problem which appears to be caused by this contribution.

 

look at the link to the screenshots I posted, all will be clear.

I do not think that Joed's problem and yours are the same.

 

First

Turn cart test to off in admin.

Turn off debug email notification in admin.

 

Do the downloads work with other payment modules?

 

Have you enabled downloads in Admin?

 

Did you change downloads.php to download.php checkout_success.php as Joed said in a previous post (I did, thanks Joed for the tip).

 

Let us know how you went?

Link to comment
Share on other sites

 

I got it working! I don't believe it!!!!!!!!!!!! I have got downloads working!

 

Unfortunately I have tried so many things in the last week that i don't know what i did to get it working.

 

First of all, I have had the contribution below installed for 5 days. it didn't work until half an hour ago, then suddenly it all came together.

 

download controller v5.3

 

If you instal the contribution then there are some things you should know.

 

For me it doesn't work with catalog items that were there before it was installed. it only works with items added after it was installed. Even if you add them when the contrib isn't working.

 

Your items should have one attribute. I called mine download and gave it the value "yes" as recommended in the contrib instructions. Also have your shipping and weight set at 0.00

 

The order status that comes back from Paypal has got to be item 4 in your order status. IMPORTANT it is not enough to make it item 4 in your admin order status list, you have to go into the MySQL database and make sure it has the Item_Id 4.

 

If you are using United kingdom accounts in the Paypal Sandbox, forget it. I spent 3 hours today trawling the sandbox forums, and the one thing I found out was UK accounts don't work. They haven't worked for months. So go create United States accounts.

 

In your sandbox accounts make sure you have IPN turned on.

 

Really Important

 

Check your download.php filenames. I think there is three or four. Also check that they are the same, I had three different ones, and one was empty.

 

Next do a global search of all your files in the catalog folder for downloads.php as one of the problems I had was the files were called download.php but some of the files contained the line

 

if (DOWNLOAD_ENABLED == 'true') include(DIR_WS_MODULES . 'downloads.php');

 

Checkout_success.php and order_history_info.php were two of the files that contained that line, but I'm sure there was more.

 

In your Admin - Configuration - Download check you have enabled downloads. you can experiment with the Download by redirect option too. I've had mine set to true all week, but I've just checked and it is now set to false.

 

One more thing. After you install the downloader contrib you should get three new boxes at the bottom of your checkout_success.php page. These contain the filename, expiry date and number of downloads left.

 

Above the boxes there should be the words Your digital product here

 

At first glance it looks as if your download link should follow that text, but it doesn't. The download link is the filename in the box, but it doesn't look like a link until you hover your cursor over it.

 

All week I have clicked on that filename, wondering if it should be the link, but nothing ever happened. Then tonight I clicked it and hey presto a download.

 

Remember, if you install the download controller, create a new product and only test it with that product.

 

BUGGER! After all that work, and all this typing I just discovered a REALLY FATAL flaw :-(

 

This is so bad that I'm not even going to mention it in public.

 

Can we do private messages in this forum? (I've only been here 2 days and haven't learned everything yet)

Link to comment
Share on other sites

Panick over, I have thought of a way around the fatal flaw.

 

How do you stop users accessing their account? Taking away the My Account link would do it, but how do I do that?

 

The alternative is to take away the order history in their account, but this would involve removing the previous Orders, Show All Orders and My Orders boxes. Much more difficult.

 

I'm sure it would be easier just to take away the link to My Orders, if i could find it.

Link to comment
Share on other sites

Panick over, I have thought of a way around the fatal flaw.

 

How do you stop users accessing their account? Taking away the My Account link would do it, but how do I do that?

 

The alternative is to take away the order history in their account, but this would involve removing the previous Orders, Show All Orders and My Orders boxes. Much more difficult.

 

I'm sure it would be easier just to take away the link to My Orders, if i could find it.

 

Hi All

 

After spending 16-17 hours a day for the last 8 days I finally got the downloads working. You'll know that if you've read the above.

 

I don't mind telling you, when I clicked that file name and the download box appeared I had a digital orgasm!

 

My next action was to get as much as I could remember into a message, for others.

 

After that I decided to check something that had been in the back of my mind all week.

 

What happens if the customer cancels the order? So I tried it and found the "fatal flaw"

 

If the customer hits the cancel button in their paypal account they go back to the checkout page they were at before they hit the "confirm order" button. That is the store page they were at before the went to Paypal, not the Checkout_success.php page.

 

However, if they then hit the "My Account" link the order is there in their account, and so is the download link!

 

In short, the customer can cancel the payment and still download the product. When I realised this I went into panick mode, but I've calmed down now.

 

The quickest and easiest solution I can see, is to remove the "My Account" links from the store. If they can't get into My Account they can't get the download link.

 

The only problem I can see with this is the customer will have to download the the file as soon as they pay for it, it will not be available in My Account for 7 days.

 

I don't see this as much of a problem as I think most people will download the file as soon as they see the link. They won't pay for a download then wait 3 days to download it, will they?

 

A better solution would be to remove the order history from My Account, but there are three places where the order appears. Off the top of my head they are Over view (show all oders), Previous orders and My Orders. It has got to be easier to keep them out of My Account than to remove those three boxes.

 

Another idea is to have a Buy without an Account option, if they don't have an account they can't have a My Account, right?

 

I think, that for a digital download people would use this option rather than enter their address etc.

 

I did look into this about a week ago, but I remember that the one I looked at said it can't (or there are no instructions) be installed on a store with other contributions installed. i.e. it can only be intalled on a "clean" store. My store has three contributions installed, so this contribution is going to take some thinking about, and research before I attempt to install it

Link to comment
Share on other sites

for ($i=0, $n=sizeof($notify); $i<$n; $i++) {

$notify_string .= 'notify[]=' . $notify[$i] . '&';

}

if (strlen($notify_string) > 0) $notify_string = substr($notify_string, 0, -1);

 

tep_redirect(tep_href_link(FILENAME_DEFAULT, $notify_string));

}

 

require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_SUCCESS);

 

From the above, either the edit for this contrib (PayPal_Shopping_Cart_IPN) has been skipped, or reference is being made to another IPN contribution.

 

There is a subtle difference between PayPal_Shopping_Cart_IPN and the other recent IPN module, the former only creates the order once the customer has clicked the order confirmation button, as opposed to the latter which creates the order when loading the checkout_confirmation page.

 

PayPal_Shopping_Cart_IPN, will only populate the orders download database table once an IPN has been received notifying that the Payment is Completed, so downloads will not be immediately available until then. However in order to use this contribution in conjunction with the Downloads Controller contribution, the DC contrib needs to be updated because of its use of order status #s, a search in this forum channel for Download Controller would show:

 

http://www.oscommerce.com/forums/index.php?act...ndpost&p=504989

 

However that post-page wont seem to load at the moment, but its contents can be found in the search. It should work, but I only quickly looked into it back then.

 

----

Leslie, thank you.

"Any fool can know. The point is to understand." -- Albert Einstein

Link to comment
Share on other sites

Having a problem right from the get go...

 

When installing paypal.sql I get the following error:

 

 

MySQL said:

 

#1067 - Invalid default value for 'quantity'

 

 

Which I am guessing is causing the problems I am having later. When I click orders in the admin, i get

 

1146 - Table db.paypal' doesn't exist

 

select p.payment_status from paypal p left join orders o on p.paypal_id = o.payment_id where o.orders_id ='2'

 

[TEP STOP]

 

 

Have no idea what to do at this point. any help would be great.

 

Thanks

Link to comment
Share on other sites

Having a problem right from the get go...

 

When installing paypal.sql I get the following error:

MySQL said:

 

#1067 - Invalid default value for 'quantity'

Which I am guessing is causing the problems I am having later. When I click orders in the admin, i get

 

1146 - Table db.paypal' doesn't exist

 

select p.payment_status from paypal p left join orders o on p.paypal_id = o.payment_id where o.orders_id ='2'

 

[TEP STOP]

Have no idea what to do at this point. any help would be great.

 

Thanks

Is this your sql file?

 

# osCommerce, Open Source E-Commerce Solutions

# http://www.oscommerce.com

#

# DevosC, Developing open source Code

# http://www.devosc.com

#

# Copyright © 2003 osCommerce

# Copyright © 2004 DevosC.com

#

# Released under the GNU General Public License

 

ALTER TABLE orders ADD payment_id INT( 11 ) DEFAULT '0' NOT NULL;

 

ALTER TABLE orders_products_attributes ADD products_options_id INT( 11 ) DEFAULT '0' NOT NULL;

 

ALTER TABLE orders_products_attributes ADD products_options_values_id INT( 11 ) DEFAULT '0' NOT NULL;

 

 

#

# Table structure for table `orders_session_info`

#

 

DROP TABLE IF EXISTS orders_session_info;

CREATE TABLE orders_session_info (

txn_signature varchar(32) NOT NULL default '',

orders_id int(11) NOT NULL default '0',

payment varchar(32) NOT NULL default '',

payment_title varchar(32) NOT NULL default '',

payment_amount decimal(7,2) NOT NULL default '0.00',

payment_currency char(3) NOT NULL default '',

payment_currency_val float(13,8) default NULL,

sendto int(11) NOT NULL default '1',

billto int(11) NOT NULL default '1',

language varchar(32) NOT NULL default '',

language_id int(11) NOT NULL default '1',

currency char(3) NOT NULL default '',

currency_value float(13,8) default NULL,

firstname varchar(32) NOT NULL default '',

lastname varchar(32) NOT NULL default '',

content_type varchar(32) NOT NULL default '',

affiliate_id int(11) NOT NULL default '0',

affiliate_date datetime NOT NULL default '0000-00-00 00:00:00',

affiliate_browser varchar(100) NOT NULL default '',

affiliate_ipaddress varchar(20) NOT NULL default '',

affiliate_clickthroughs_id int(11) NOT NULL default '0',

PRIMARY KEY (txn_signature,orders_id),

KEY idx_orders_session_info_txn_signature (txn_signature)

);

 

#

# Table structure for table `paypal`

#

 

DROP TABLE IF EXISTS paypal;

CREATE TABLE paypal (

paypal_id int(11) unsigned NOT NULL auto_increment,

txn_type varchar(10) NOT NULL default '',

reason_code varchar(15) default NULL,

payment_type varchar(7) NOT NULL default '',

payment_status varchar(17) NOT NULL default '',

pending_reason varchar(14) default NULL,

invoice varchar(64) default NULL,

mc_currency char(3) NOT NULL default '',

first_name varchar(32) NOT NULL default '',

last_name varchar(32) NOT NULL default '',

payer_business_name varchar(64) default NULL,

address_name varchar(32) default NULL,

address_street varchar(64) default NULL,

address_city varchar(32) default NULL,

address_state varchar(32) default NULL,

address_zip varchar(10) default NULL,

address_country varchar(64) default NULL,

address_status varchar(11) default NULL,

payer_email varchar(96) NOT NULL default '',

payer_id varchar(32) NOT NULL default '',

payer_status varchar(10) NOT NULL default '',

payment_date datetime default NULL,

payment_time_zone char(4) NOT NULL default '',

business varchar(96) NOT NULL default '',

receiver_email varchar(96) NOT NULL default '',

receiver_id varchar(32) NOT NULL default '',

txn_id varchar(17) NOT NULL default '',

parent_txn_id varchar(17) default NULL,

num_cart_items tinyint(4) unsigned NOT NULL default '1',

mc_gross decimal(7,2) NOT NULL default '0.00',

mc_fee decimal(7,2) NOT NULL default '0.00',

payment_gross decimal(7,2) default NULL,

payment_fee decimal(7,2) default NULL,

settle_amount decimal(7,2) default NULL,

settle_currency char(3) default NULL,

exchange_rate decimal(4,2) default NULL,

for_auction varchar(5) NOT NULL default 'false',

auction_buyer_id varchar(64) NOT NULL default '',

auction_closing_date datetime NOT NULL default '0000-00-00 00:00:00',

auction_multi_item tinyint(4) NOT NULL default '0',

quantity int(11) NOT NULL default '',

tax decimal(7,2) default NULL,

notify_version decimal(2,1) NOT NULL default '0.0',

verify_sign varchar(128) NOT NULL default '',

last_modified datetime default NULL,

date_added datetime default NULL,

memo text,

PRIMARY KEY (paypal_id,txn_id),

KEY idx_paypal_paypal_id (paypal_id)

);

 

# Table structure for table paypal_payment_status_history

#

 

DROP TABLE IF EXISTS paypal_payment_status_history;

CREATE TABLE IF NOT EXISTS paypal_payment_status_history (

payment_status_history_id int(11) NOT NULL auto_increment,

paypal_id int(11) NOT NULL default '0',

payment_status varchar(17) NOT NULL default '',

pending_reason varchar(14) default NULL,

reason_code varchar(15) default NULL,

date_added datetime NOT NULL default '0000-00-00 00:00:00',

PRIMARY KEY (payment_status_history_id)

);

 

#

# Table structure for table paypal_auction

#

 

#CREATE TABLE IF NOT EXISTS paypal_auction (

# paypal_id int(11) NOT NULL default '0',

# item_number varchar(96) NOT NULL default '',

# auction_buyer_id varchar(96) NOT NULL default '',

# auction_multi_item tinyint(4) NOT NULL default '0',

# auction_closing_date datetime NOT NULL default '0000-00-00 00:00:00',

# is_old int(1) NOT NULL default '0',

# PRIMARY KEY (paypal_id,item_number)

#);

 

 

#

# Only uncomment the below if you're attempting to migrate from paypalipn_v0.981

#

 

#

#AUCTION TABLE RELATED

#

#ALTER TABLE paypalipn_auction RENAME paypal_auction;

#ALTER TABLE paypal_auction CHANGE paypalipn_txn_id paypal_id INT( 11 ) DEFAULT '0' NOT NULL;

 

#

#MAIN PAYPAL TABLE

#

#ALTER TABLE paypalipn_txn RENAME paypal;

#ALTER TABLE paypal CHANGE paypalipn_txn_id paypal_id INT( 11 ) NOT NULL AUTO_INCREMENT;

#ALTER TABLE paypal CHANGE receiver_email receiver_email VARCHAR( 96 ) NOT NULL;

#ALTER TABLE paypal CHANGE business business VARCHAR( 96 ) NOT NULL;

#ALTER TABLE paypal CHANGE invoice invoice VARCHAR( 64 );

#ALTER TABLE paypal CHANGE num_cart_items num_cart_items TINYINT( 4 ) UNSIGNED DEFAULT '1' NOT NULL;

#ALTER TABLE paypal CHANGE pending_reason pending_reason VARCHAR( 14 );

#ALTER TABLE paypal CHANGE payment_date payment_date DATETIME NOT NULL;

#ALTER TABLE paypal CHANGE settle_amount settle_amount DECIMAL( 7, 2 );

#ALTER TABLE paypal CHANGE settle_currency settle_currency CHAR( 3 );

#ALTER TABLE paypal CHANGE exchange_rate exchange_rate DECIMAL( 4, 2 );

#ALTER TABLE paypal CHANGE payment_gross payment_gross DECIMAL( 7, 2 );

#ALTER TABLE paypal CHANGE payment_fee payment_fee DECIMAL( 7, 2 );

#ALTER TABLE paypal CHANGE mc_gross mc_gross DECIMAL( 7, 2 ) DEFAULT '0.00' NOT NULL;

#ALTER TABLE paypal CHANGE mc_fee mc_fee DECIMAL( 7, 2 ) DEFAULT '0.00' NOT NULL;

#ALTER TABLE paypal CHANGE mc_currency mc_currency CHAR( 3 ) NOT NULL;

#ALTER TABLE paypal CHANGE tax tax DECIMAL( 7, 2 );

#ALTER TABLE paypal CHANGE for_auction for_auction VARCHAR( 5 ) DEFAULT 'false' NOT NULL;

#ALTER TABLE paypal CHANGE memo memo TEXT;

#ALTER TABLE paypal CHANGE address_street address_street VARCHAR( 64 );

#ALTER TABLE paypal CHANGE address_city address_city VARCHAR( 32 );

#ALTER TABLE paypal CHANGE address_state address_state VARCHAR( 32 );

#ALTER TABLE paypal CHANGE address_zip address_zip VARCHAR( 10 );

#ALTER TABLE paypal CHANGE address_country address_country VARCHAR( 64 );

#ALTER TABLE paypal CHANGE address_status address_status VARCHAR( 11 );

#ALTER TABLE paypal CHANGE payer_id payer_id VARCHAR( 32 ) DEFAULT '' NOT NULL;

#ALTER TABLE paypal CHANGE payer_status payer_status VARCHAR( 10 ) NOT NULL;

#ALTER TABLE paypal CHANGE notify_version notify_version DECIMAL( 2, 1 ) DEFAULT '0.0' NOT NULL;

 

#

#NEW FIELDS TO ADD

#

#ALTER TABLE paypal ADD parent_txn_id VARCHAR( 14 ) AFTER txn_id;

#ALTER TABLE paypal ADD reason_code VARCHAR( 15 ) AFTER for_auction;

#ALTER TABLE paypal ADD payer_business_name VARCHAR( 64 ) AFTER reason_code;

#ALTER TABLE paypal ADD address_name VARCHAR( 32 ) AFTER payer_business_name;

#ALTER TABLE paypal ADD payment_time_zone CHAR( 4 ) NOT NULL AFTER address_name;

#ALTER TABLE paypal ADD receiver_id VARCHAR( 32 ) AFTER payment_time_zone;

#ALTER TABLE paypal ADD auction_buyer_id VARCHAR( 64 ) NOT NULL AFTER receiver_id;

#ALTER TABLE paypal ADD auction_closing_date DATETIME NOT NULL AFTER auction_buyer_id;

#ALTER TABLE paypal ADD auction_multi_item TINYINT( 4 ) NOT NULL AFTER auction_closing_date;

#ALTER TABLE paypal ADD last_modified DATETIME NOT NULL AFTER auction_multi_item;

#ALTER TABLE paypal ADD date_added DATETIME NOT NULL AFTER last_modified;

 

#

#OPTIONAL DROP FIELDS

#

#ALTER TABLE paypal DROP ipn_result;

#ALTER TABLE paypal DROP item_name;

#ALTER TABLE paypal DROP item_number;

#ALTER TABLE paypal DROP custom;

#ALTER TABLE paypal DROP option_name1;

#ALTER TABLE paypal DROP option_selection1;

#ALTER TABLE paypal DROP option_name2;

#ALTER TABLE paypal DROP option_selection2;

Link to comment
Share on other sites

Is this your sql file?

 

yep, just to double check.. I restored my old db, saved that and ran it.. same error

 

 

 

MySQL said:

#1067 - Invalid default value for 'quantity'

 

Which I thin is screwing up adding in all of CREATE TABLE paypal(

 

Which is causing my error on the orders page.

 

Any ideas? I couldnt find anyone else having this problem. Not sure what is wrong.

Link to comment
Share on other sites

yep, just to double check.. I restored my old db, saved that and ran it.. same error

MySQL said:

#1067 - Invalid default value for 'quantity'

 

Which I thin is screwing up adding in all of CREATE TABLE paypal(

 

Which is causing my error on the orders page.

 

Any ideas? I couldnt find anyone else having this problem. Not sure what is wrong.

No, I have no idea what is wrong. I cannot see quantity being defined in the sql file.

 

If it was me, I would look at the MySQL database and see if quantity was being defined anywhere. If you get no joy, ask your web host what the problem may be.

 

What other contrib have you installed?

Link to comment
Share on other sites

No, I have no idea what is wrong. I cannot see quantity being defined in the sql file.

 

If it was me, I would look at the MySQL database and see if quantity was being defined anywhere. If you get no joy, ask your web host what the problem may be.

 

What other contrib have you installed?

 

The other contribs I have installed are:

 

LoginBox

Extra field

More category boxes

USPSMethods

 

Believe that is all, had no problems with anything so far.

 

I did a search for it in the sql, this is the only result... Not sure if this means anything..

 

 

SQL query:

SELECT *

FROM `sitename`.`configuration`

WHERE `configuration_id` LIKE '%quantity%'

OR `configuration_title` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `configuration_key` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `configuration_value` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `configuration_description` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `configuration_group_id` LIKE '%quantity%'

OR `sort_order` LIKE '%quantity%'

OR `last_modified` LIKE '%quantity%'

OR `date_added` LIKE '%quantity%'

OR `use_function` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `set_function` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

LIMIT 0 , 30

Link to comment
Share on other sites

The other contribs I have installed are:

 

LoginBox

Extra field

More category boxes

USPSMethods

 

Believe that is all, had no problems with anything so far.

 

I did a search for it in the sql, this is the only result... Not sure if this means anything..

SQL query:

SELECT *

FROM `sitename`.`configuration`

WHERE `configuration_id` LIKE '%quantity%'

OR `configuration_title` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `configuration_key` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `configuration_value` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `configuration_description` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `configuration_group_id` LIKE '%quantity%'

OR `sort_order` LIKE '%quantity%'

OR `last_modified` LIKE '%quantity%'

OR `date_added` LIKE '%quantity%'

OR `use_function` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

OR `set_function` LIKE CONVERT( _utf8 '%quantity%'

USING latin1 )

COLLATE latin1_swedish_ci

LIMIT 0 , 30

Yeah, although I do not have those contribs installed, so its hard to see where they would cause the problem. Maybe check Extra field and More category boxes to see if they had sql files to install.

 

My search query on quantity revealed

SELECT *

FROM `coopco_coopco`.`configuration`

WHERE `configuration_id` LIKE '%quantity%'

OR `configuration_title` LIKE '%quantity%'

OR `configuration_key` LIKE '%quantity%'

OR `configuration_value` LIKE '%quantity%'

OR `configuration_description` LIKE '%quantity%'

OR `configuration_group_id` LIKE '%quantity%'

OR `sort_order` LIKE '%quantity%'

OR `last_modified` LIKE '%quantity%'

OR `date_added` LIKE '%quantity%'

OR `use_function` LIKE '%quantity%'

OR `set_function` LIKE '%quantity%'

LIMIT 0 , 30

 

It looks similar, with language differences. But, sorry, that sort of stuff is beyond me at this stage of lifes journey.

 

A question to your web host "may" be the way to go.

Link to comment
Share on other sites

Something isn't working with this contrib. It's going to be something wrong with the way I installed it I know, but I don't know what.

 

In Admin -> Paypal IPN I have not got any data althought I have had 10 or so paypal buyers since install.

 

In Admin -> Orders -> (Customer's Order details) I have the bog paypal box, but it shows no data eg:

 

 

Transaction Activity

Date Status Details Action Gross Fee Net Amount

No PayPal Transaction Information Available (53ff8a3afcd7d6e5064f0d525bf68976)

 

 

Can anyone offer any guidance?

 

Thanks

Jemma

Link to comment
Share on other sites

Something isn't working with this contrib. It's going to be something wrong with the way I installed it I know, but I don't know what.

 

In Admin -> Paypal IPN I have not got any data althought I have had 10 or so paypal buyers since install.

 

In Admin -> Orders -> (Customer's Order details) I have the bog paypal box, but it shows no data eg:

Can anyone offer any guidance?

 

Thanks

Jemma

If it is installed correctly, then check that it is set up as per the install instructions, and that your paypal account at paypal is set up correctly.

 

Goodness, 10 qo or so paypal buyers, I wish that i had that many.

Link to comment
Share on other sites

Yeah, although I do not have those contribs installed, so its hard to see where they would cause the problem. Maybe check Extra field and More category boxes to see if they had sql files to install.

 

My search query on quantity revealed

SELECT *

FROM `coopco_coopco`.`configuration`

WHERE `configuration_id` LIKE '%quantity%'

OR `configuration_title` LIKE '%quantity%'

OR `configuration_key` LIKE '%quantity%'

OR `configuration_value` LIKE '%quantity%'

OR `configuration_description` LIKE '%quantity%'

OR `configuration_group_id` LIKE '%quantity%'

OR `sort_order` LIKE '%quantity%'

OR `last_modified` LIKE '%quantity%'

OR `date_added` LIKE '%quantity%'

OR `use_function` LIKE '%quantity%'

OR `set_function` LIKE '%quantity%'

LIMIT 0 , 30

 

It looks similar, with language differences. But, sorry, that sort of stuff is beyond me at this stage of lifes journey.

 

A question to your web host "may" be the way to go.

 

I checked all the sql files that I have installed.. extra field and more category boxes seem to be the only ones that had them and "quantity" was not in either file even one time...

 

I asked the host, they had no idea and pretty much blew it off as a 3rd party issue.

 

Anyone else have any ideas? I guess my only other option is to restore and try another IPN contrib, this one seemed to have the most features though..

 

Thanks guys.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...