magento / magento2

Prior to making any Submission(s), you must sign an Adobe Contributor License Agreement, available here at: https://opensource.adobe.com/cla.html. All Submissions you make to Adobe Inc. and its affiliates, assigns and subsidiaries (collectively “Adobe”) are subject to the terms of the Adobe Contributor License Agreement.
http://www.magento.com
Open Software License 3.0
11.54k stars 9.31k forks source link

No download link in customer account after purchases in 2.3.1. #22354

Closed The-Krang closed 5 years ago

The-Krang commented 5 years ago

Preconditions (*)

Summary of the issue: There is no download link in the customer account after purchases, and the status shows "Pending", instead of "Available".

I have two installations of Magento 2.3.1 CE, both were uploaded from https://magento.com/tech-resources/download, and then installed on a paid web server, a Linux-based web host. One of them is my store, the other one is a staging store. Both were "naked" installs, that is, no updating/upgrading was done from a previous version. The installations went through without any problems.

I have a separate installation of Magento 2.3.0 CE, which I installed on my home Linux computer using a Bitnami download.

The download links in the customer account work in the Magento 2.3.0 CE version, but not in either of the Magento 2.3.1 CE versions. I used the same Admin configurations in the 2.3.1 versions that I did in the 2.3.0 version.

Information on my environment: In the cPanel of my web host account where the Magento 2.3.1 CE versions are installed, the PHP version Manager shows PHP version 7.1., and in the phpMyAdmin software Version, it shows up as version 4.7.3, with PHP version 5.6.30.

Custom themes and custom modules were disabled for all stores.

From the Admin side, I cleaned the cache, emptied cahe storage, and refreshed whatever needed it.

I didn't see any errors in the /var/log files, except for the debug.log, which contained:

[2019-04-15 20:57:53] main.DEBUG: Request validation failed for action "Magento\Config\Controller\Adminhtml\System\Config\Index\Interceptor" [] [][2019-04-15 21:36:42] main.DEBUG: cache_invalidate:

{"method":"POST","url":"~/index/index/key/ea147190a26979906d90e3ae8863a0afca600dc77eaf00acc70150fadb7dbfc8/","invalidateInfo":{"tags":["BACKEND_MAINMENU"],"mode":"matchingAnyTag"}} []

[2019-04-15 21:36:42] main.DEBUG: Request validation failed for action "MSP\TwoFactorAuth \Controller\Adminhtml\Tfa\Index\Interceptor" [] []

I have tested the online stores from a Windows 7 Professional computer, and a Linux Mint 18.3 KDE computer, with Opera and FireFox browsers on both computers.

Steps to reproduce (*)

Steps taken to produce the error:

  1. I created virtual and downloadable products.
  2. I created a widget so that I could add the products to the Homepage.
  3. I added the widget to the Homepage.
  4. I created a test customer account.
  5. From the Homepage, I add a virtual/downloadable item to the cart.
  6. I click the cart icon in the top right of the screen.
  7. click on the "View and Edit Cart" link in the small window that opens.
  8. click the "Proceed to Checkout" button on the right side of the screen.
  9. The account popup form appears, and I put my credentials into it.
  10. I sign into the test customer account.
  11. I click the "Proceed to Checkout" button again.
  12. I click the "Place Order" button to make the purchase, and see the success page.
  13. I go innside of the test account, I click on the "My Downloadable Products" link on the left side.
  14. The next page displays showing what I have purchased a product, but there is no link to download the product, and the status shows "Pending" instead of "Available".

This happens whether the product is free/$0.00 or purchased through PayPal or Braintree on a debit/credit card. Also this happens regardless of whether "Order Item Status to Enable Downloads" is set to either "Pending" or "Invoiced".

Expected result (*)

  1. Using the same procedure further above, after clicking the "My Downloadable Products" link, I should see links that can be clicked to download a product.

Actual result (*)

The "My Downloadable Products" page displays, but there is no download link in the customer account after purchases, and the status shows "Pending", instead of "Available".

About me (*) :-)

I have been using Magento since 2.0.x for some time now, so I am familiar with what needs to be done to set up the store, but I could have missed or overlooked something.

If it helps any, attached below are the images of what I am talking about.

I need to know how and exactly where I can fix this problem? Please be verbose, and with everyday speech.

Thank you very much.

In the Admin, I have:

1

2

3

4

5

6

7

8

m2-assistant[bot] commented 5 years ago

Hi @The-Krang. Thank you for your report. To help us process this issue please make sure that you provided the following information:

Please make sure that the issue is reproducible on the vanilla Magento instance following Steps to reproduce. To deploy vanilla Magento instance on our environment, please, add a comment to the issue:

@magento-engcom-team give me 2.3-develop instance - upcoming 2.3.x release

For more details, please, review the Magento Contributor Assistant documentation.

@The-Krang do you confirm that you was able to reproduce the issue on vanilla Magento instance following steps to reproduce?

The-Krang commented 5 years ago

I don't believe that I know what a "vanilla Magento instance " is, especially the "instance" part.

The-Krang commented 5 years ago

Oops, I closed this by mistake.

m2-assistant[bot] commented 5 years ago

Hi @engcom-backlog-nazar. Thank you for working on this issue. In order to make sure that issue has enough information and ready for development, please read and check the following instruction: :point_down:

ghost commented 5 years ago

Hi @The-Krang thank you for you report, this is expected behavior the link will be available only if your done the invoice process, and paypal not process orders with only one product which costs 0.00.

The-Krang commented 5 years ago

I guess I did not make the situation completely clear.
The $0.00 amounts were done with "Zero Subtotal Checkout", and any amounts above $0.00 were tested in Braintree and PayPal.

I am well aware that Paypal does not process amounts like $0.00. I have been using Magento 2 for years now.

Futhermore, last night I downloaded version 2.3.1 from Bitnami, installed it, set it up like version 2.3.0, but there still are no download links, and the status still says “Pending”.

Something changed from version 2.3.0 to version 2.3.1, or I made a large mistake somewhere, or I have completely lost all comprehension.

Please take another look at what I presented above.

The-Krang commented 5 years ago

Just to be even more clear, the Live purchases (Production, not sandbox) that I made through Braintree and Paypal had the same outcome as the ones using "Zero Subtotal Checkout", and that is with the status showing "Pending" instead of "Available", and no download link.

The screen-shots above show the "Zero Subtotal Checkout" tests that I did, but they also represent the Live purchases because the outcomes were the same.

The-Krang commented 5 years ago

To all who may also have this problem, I will post the fix I found, as soon as possible.

The-Krang commented 5 years ago

I knew that I had not lost my comprehension. I was correct, there was a change somewhere from Magento 2.3.0 to 2.3.1 that affected download links.

This is what I did to fix my problem.

I did some more searching, and what I found was that on my system, the file with the problem was this one:

/public_html/vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php

I renamed this problem file to keep it as a backup just in case I needed to go back to it.

I made a replacement SaveDownloadableOrderItemObserver.php file from the code from the link BELOW.

Credit goes to James/crankycyclops, for his bug report and the fix for the bug.

The code that fixed my issure came from this page:

https://github.com/magento/magento2/blob/5410e077c534127f3492d53f8ab3981691bed2e3/app/code/Magento/Downloadable/Observer/SaveDownloadableOrderItemObserver.php

The previous orders BEFORE the fix stayed the same, and the newest orders work like they should and did in all versions prior to Magento 2.3.1.

I made sure that these settings were in place in my Admin:

Under stores> configuration> catalog> catalog> Downloadable Product Options> I have "Order Item Status to Enable Downloads" set to "Pending".

Under stores> configuration> catalog> Inventory> for both "Stock Options" and "Product Stock Options", I have "Decrease Stock When Order is Placed" and "Manage Stock" respectively set to "No".

Under stores> configuration> sales> payment methods> Zero Subtotal Checkout> I have "New Order Status" set to "Pending".

Under stores> configuration> sales> payment methods> PayPal Express Checkout> Basic Settings - PayPal Express Checkout> I have "Payment Action" set to "Sale". This was a Live test, that is, money was transfered.

That is all.

SR71Mach3 commented 5 years ago

I want to validate the comment by The-Kang on 27 April above based on my own experience trying to adapt Magento 2.3.3 just after it came out. The fresh installation did not download digital files. As my first troubleshooting step, I looked into the code change on the web page at https://github.com/magento/magento2/issues/22545 recommended by saeohioalpha,, Jul 3, and specifically checked the code this person recommended at https://github.com/magento/magento2/pull/22658/files and found that it was already integrated into the file vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php. Next, I made the code change recommended by The-Kang, 27 April, above. I replaced the original Magento 2.3.3 code with the code The-Kang recommended at https://github.com/magento/magento2/blob/5410e077c534127f3492d53f8ab3981691bed2e3/app/code/Magento/Downloadable/Observer/SaveDownloadableOrderItemObserver.php that is credited to James/crankycyclops. The act of eliminating the original Magento 2.3.3 code at /public_html/vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php and pasting in the new code created by James/crankycyclops did not work by itself. However, when I also went into the Magento admin area and made the settings changes recommended by The-Kang, such as "Under stores> configuration> catalog> catalog> Downloadable Product Options> I have Order Item Status to Enable Downloads' set toPending'" now all of a sudden I got a working download button. Unfortunately these additional steps are not covered in any online YouTube tutorials for creating downloads that I have come across to date. The-Kang's comment "The previous orders BEFORE the fix stayed the same, and the newest orders work like they should and did in all versions prior to Magento 2.3.1." turned out to also be true with my Magento 2.3.3, namely the earlier test purchases did not show a download button, but test purchases after making all the changes recommended by The-Kang did produce a download button. All this having been said, it appears that I have one last major bug to overcome with Magento 2.3.3 when it comes to making it ready for commercial use. This involves using Authorize.net for processing payments. Even though I set the Authorize.net payment module to "Authorize and Capture" at Stores > Configuration > Sales > Payment Methods I have to visit the "Unsettled Transactions" area of Authorize.net every time there is a purchase. I must manually designate at Authorize.net that the funds be "captured" and released to a payment processor. Apparently some bug in the system prevents my designation of "Authorize & Capture" in the Magento admin area from being translated automatically to the same status at Authorize.net, which simply shows "Authorized/Pending Capture." I contacted an Authorize.net customer service rep, who said that unfortunately there isn't a way to configure the account to automatically set a transaction type on everything coming in, since that's determined by the application on the other side of our API (Magento in this case). He referred me to the Magento developer community. Perhaps someone within this community has some answers.

The-Krang commented 5 years ago

@SR71Mach3, If you can see this e-mail, I'm glad that my post helped you.

Also, Thank You for letting the rest us know that version 2.3.3 has the same problem in it that version 2.3.1 had.

I'm sorry that I can't help with your Authorize.net problem (I use paypal and braintree), but I hope you get it sorted out soon so that you can launch.


From: SR71Mach3 notifications@github.com Sent: Thursday, October 24, 2019 4:38 PM To: magento/magento2 magento2@noreply.github.com Cc: The-Krang g_krang@hotmail.com; Mention mention@noreply.github.com Subject: Re: [magento/magento2] No download link in customer account after purchases in 2.3.1. (#22354)

I want to validate the comment by The-Kang on 27 April above based on my own experience trying to adapt Magento 2.3.3 just after it came out. The fresh installation did not download digital files. As my first troubleshooting step, I looked into the code change on the web page at #22545https://github.com/magento/magento2/issues/22545 recommended by saeohioalpha,, Jul 3, and specifically checked the code this person recommended at https://github.com/magento/magento2/pull/22658/files and found that it was already integrated into the file vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php. Next, I made the code change recommended by The-Kang, 27 April, above. I replaced the original Magento 2.3.3 code with the code The-Kang recommended at https://github.com/magento/magento2/blob/5410e077c534127f3492d53f8ab3981691bed2e3/app/code/Magento/Downloadable/Observer/SaveDownloadableOrderItemObserver.php that is credited to James/crankycyclops. The act of eliminating the original Magento 2.3.3 code at /public_html/vendor/magento/module-downloadable/Observer/SaveDownloadableOrderItemObserver.php and pasting in the new code created by James/crankycyclops did not work by itself. However, when I also went into the Magento admin area and made the settings changes recommended by The-Kang, such as "Under stores> configuration> catalog> catalog> Downloadable Product Options> I have Order Item Status to Enable Downloads' set to Pending'" now all of a sudden I got a working download button. Unfortunately these additional steps are not covered in any online YouTube tutorials for creating downloads that I have come across to date. The-Kang's comment "The previous orders BEFORE the fix stayed the same, and the newest orders work like they should and did in all versions prior to Magento 2.3.1." turned out to also be true with my Magento 2.3.3, namely the earlier test purchases did not show a download button, but test purchases after making all the changes recommended by The-Kang did produce a download button. All this having been said, it appears that I have one last major bug to overcome with Magento 2.3.3 when it comes to making it ready for commercial use. This involves using Authorize.net for processing payments. Even though I set the Authorize.net payment module to "Authorize and Capture" at Stores > Configuration > Sales > Payment Methods I have to visit the "Unsettled Transactions" area of Authorize.net every time there is a purchase. I must manually designate at Authorize.net that the funds be "captured" and released to a payment processor. Apparently some bug in the system prevents my designation of "Authorize & Capture" in the Magento admin area from being translated automatically to the same status at Authorize.net, which simply shows "Authorized/Pending Capture." I contacted an Authorize.net customer service rep, who said that unfortunately there isn't a way to configure the account to automatically set a transaction type on everything coming in, since that's determined by the application on the other side of our API (Magento in this case). He referred me to the Magento developer community. Perhaps someone within this community has some answers.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHubhttps://github.com/magento/magento2/issues/22354?email_source=notifications&email_token=AGW4PF7RDOH4GV3NXLF5YWLQQIBURA5CNFSM4HGD7MFKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECGLINI#issuecomment-546092085, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AGW4PF4TYXDEA32L7IQG5TTQQIBURANCNFSM4HGD7MFA.

vipin12117 commented 3 years ago

Order Item Status to Enable Downloads' set to Pending'" worked