My site has been using UC with PayPal WPP for three months, works fine.
But yesterday I received the following unexpected warning e-mail from PayPal.
============================================
Please check your server that handles PayPal Instant Payment Notifications (IPN). IPNs sent to the following URL(s) are failing:
http://MY_DOMAIN/uc_paypal/ipn/11111
http://MY_DOMAIN/uc_paypal/ipn/11112
http://MY_DOMAIN/uc_paypal/ipn/11113
http://MY_DOMAIN/uc_paypal/ipn/11114
If you do not recognize this URL, you may be using a service provider that is using IPN on your behalf. Please contact your service provider with the above information. If this problem continues, IPNs may be disabled for your account.
Thank you for your prompt attention to this issue.
============================================
Looking in UC, the listed orders all processed and completed successfully. Looking in PayPal, the credit card payments were deposited in our account. Other than the warning e-mail, we'd have no reason to think anything is amiss.
Of big concern is PayPay's threat: "If this problem continues, IPNs may be disabled for your account." This indicates the problem should be identified and fixed, whatever it is.
MYSTERY: We don't know how the incoming hit by PayPal can work. It's looking for URL http://MY_DOMAIN/uc_paypal/ipn/, but there's no such path. Our Drupal root (the destination of MY_DOMAIN) is not the location of a file or folder named uc_paypal. Digging into our UC config, and PayPal account, we don't find the source of this path or any way to configure this. It seems wrong.
We find a folder named uc_paypal deep in our Ubercart module tree, but within it there's nothing called "ipn". So presumably this is really a script reference, but again, we see no way for Apache or Drupal to route it to UC.
Perhaps this UC process/URL has always failed but now PayPal is taking action?
PayPal support is a black hole, but the problem seems to be on the Ubercart side.
Suggestions?
Comments
Comment #1
tr commentedThis isn't a bug, it's a support request, and support requests are handled in the forums on ubercart.org, where you've already asked this question.
Comment #2
hawkdrupal commentedAnd you know it's not a bug because....?
PayPal told me they might "decertify" Ubercart (whatever that means) because of UC's repeated IPN failure and no support by "the vendor" to fix it.
I've searched here and ubercart.org and found mostly IPN problem reports, and a few users sharing their guesses about what's going on. But none of them apply to my situation because they use a different level of PayPal. I've not seen anything resembling support there, thought I'd try here.
I guess it's shoot-the-messenger day.
Comment #3
longwavehawkdrupal: In Reports > Recent log entries, each IPN request should be logged. Filter for the "uc_paypal" type and you should see messages like "Receiving IPN at URL for order 1234" for each order that is processed. Any other IPN errors should also be logged here.
To understand how Drupal routes and handles IPN requests, see the first entry in the uc_paypal_menu() function (http://api.ubercart.org/api/function/uc_paypal_menu) and then the uc_paypal_ipn() function in uc_paypal.pages.inc.
Comment #4
longwaveUbercart has apparently been "decertified", as it is no longer listed in the partner directory at https://www.paypal-marketing.com/emarketing/partner/directory/directory.... (note that Magento, Zen Cart and several others are still listed)
Comment #5
tr commentedComment #6
hawkdrupal commentedI've narrowed it down to UC responding to PayPal's incoming IPN with this message:
"IPN for a different PayPal account attempted."
This level of payment/IPN interaction between UC and PayPal is not in any configuration I can find. And this seems to be much-reported behavior, with various theories of why and what to do. Seems like a bug, since "support" implies the user can and should do something differently, vs. the built-in CODE working differently.
Again, at the user level, my site's UC and PayPal play together nicely. The problem seems to show only in logs and periodic complaint e-mails from PayPal.
The question is, which side of the process creates the problem? Is the proper info not being sent by UC to PayPal, or not being sent from PayPal back to UC, or is UC not properly accepting/parsing/applying the returned account info?
Comment #7
longwaveSee #881606: Paypal WPS only works with the primary e-mail address for a Paypal account
Comment #8
tr commentedComment #9
hawkdrupal commentedI think the cause of the error message is UC comparing two values that aren't particularly related.
Here's the code in uc_paypal.pages.inc:
UC is comparing an e-mail address entered in the PayPal Express Checkout section with the e-mail used by PayPal to send the IPN. But in my UC, PayPal Website Payments Pro is used, and Express Checkout is NOT enabled, not used, and the section is collapsed on the form.
In my case, the e-mail address set for Express Checkout did not match what PayPal uses to send IPN, but there's no UI clue that they should match. Why should a setting for an unused PayPal mode matter to a different PayPal mode? But assuming it really does matter, I've just changed the e-mail to see if this cures the IPN error.
Maybe UC shouldn't be using a value specific to a non-enabled payment method to validate a different type of payment method and process.
Or maybe the UI is the weak point If UC needs to ALWAYS use the incoming PayPal e-mail address for IPN validation, don't bury it. Move the e-mail field out of the Express Checkout collapsible section. make it prominent in the main PayPal Website Payments Pro section, and label it something like "Required: Must match e-mail address of user's PayPal account; if PayPal e-mail later is changed, this must be changed too."
Also adding to confusion is that UC stores two data elements that seem to be PayPal related e-mail addresses -- but only the one discussed above really is. At the time a user creates API Credentials in PayPal, the CURRENT e-mail address becomes one element of the credentials, and this then gets entered in UC as API_Username. HOWEVER, while it originates as an e-mail address, it is only used in the API as an arbitrary name, not as the user's actual PayPal ACCOUNT name or e-mail.
In fact, if the user e-mail address is later changed in PayPal, it doesn't alter the credentials. PayPal uses the user's current e-mail address for sign-in, and to send e-mail to the user. But PayPal seems happy to have an old and even non-functioning e-mail address in the API Credentials, since it doesn't actually use it to send e-mail.
Comment #10
tr commentedDo I need to lock this thread? This is a support issue, and when you try to create an issue in this queue you are notified in no uncertain terms that this queue is NOT a place for support issues.
To be blunt, you are claiming a "bug" based on your ignorance of how Drupal (and indeed *all* web applications) works: "It's looking for URL http://MY_DOMAIN/uc_paypal/ipn/, but there's no such path. Our Drupal root (the destination of MY_DOMAIN) is not the location of a file or folder named uc_paypal." Likewise, you seem to be incapable of doing a simple search of ubercart.org to find out how to debug IPN. You've now narrowed down the issue to a matter of configuration - i.e. e-mail address settings - which is something you could have determined by a search.
Likewise, crossposting is just plain rude. People who see this thread will not necessarily see the thread on ubercart.org, and vice versa. You are wasting the time of the readers and the responders, as they might be privy to only half the discussion.
@longwave gave you a pointer to the issue about PayPal primary account e-mail - if you wish to pursue that aspect DO IT IN THAT THREAD, not here.
Comment #11
hawkdrupal commentedHmmm..
"Please report issues here only if you have isolated a specific bug in the code or deficiency in the documentation."
Longwave's link was to a WPS matter, but I'm using WPP. I apologize if it reveals a WPP answer, but that's the problem with using discussions as documentation -- it's often not labeled clearly and completely. Which is why I explained that UC itself seems to contribute to the problem by mislabeling the nature of the e-mail field.
Ubercart.org seems to be dormant -- lots of questions, almost no recent answers -- hardly the place for "support". I know this because I searched and searched. Thankfully Drupal.org is not dormant, which is why I posted here. In fact, no one has pointed to anything useful anywhere else.
Insulting me doesn't change any of the facts, but it speaks volumes about who is "behind" UC. I've designed and built commercial software for a long time, and would never allow what likely is a trivial UI matter to drag on while shooting down anyone who doesn't "get it". Go ahead and lock the thread, I'm done.
Comment #12
tr commentedComment #13
longwaveIMO the points made about the UI in #9 are perfectly valid, and this should be retitled and reopened. But I don't want to incur the wrath of TR, so I will leave this for now.