Support for Drupal 7 is ending on 5 January 2025—it’s time to migrate to Drupal 10! Learn about the many benefits of Drupal 10 and find migration tools in our resource center.
Hi
Some orders on my site aren't updating even though payment in worldpay has been successfull, I've checked through the orders and can't see anything that links them so can't see what would be causing it.
The worldpay payment confirmation email comes through but the one from the site doesn't,
it doesn't happen on every order but has happened 5 times in the last couple of days.
has anyone come across this or a way to fix it?
Comments
Comment #1
sk2013 CreditAttribution: sk2013 commented+1 Subs
Comment #2
gruberroland CreditAttribution: gruberroland commentedCan you check your logs if /cart/worldpay/complete was called by Worldpay and the HTTP status code? Maybe the callback is simply missing in these cases.
Comment #3
gruberroland CreditAttribution: gruberroland commentedPlease reopen if this is still an issue.
Comment #4
pandroid CreditAttribution: pandroid commentedWe're getting the same symptom as this with the latest rev (7.x-.1.3). I cant see how this has ever worked.
The reason appears to be that Worldpay destroys the $_SESSION variable when it redirects to /cart/checkout/complete. As this arrives empty the uc_cart_checkout_complete routine in Ubercart cant resurrect the order and so displays the (still loaded) cart even though the order has been accepted.
We got round it by passing the order id as a parameter but I'll leave it to the uc_worldpay module maintainer to find a more elegant fix as ours requires a patch to Ubercart.
Comment #5
gruberroland CreditAttribution: gruberroland commentedDo you use the latest version of Ubercart? The current solution works perfectly for me on my test and production environment.
Comment #6
pandroid CreditAttribution: pandroid commentedYes, we're on the latest rev of everything. This appeared to work until 16th Feb this year. I think it disappeared with the last rev of uc_worldpay.
I now suspect its our use of mixed-mode ssl that may be causing the issue. This has two $_SESSION variables, one for http and one for https. For some reason the redirect is probably calling the wrong url and the session variable being collected is the wrong one. However, I haven't proved this yet.
Comment #7
gruberroland CreditAttribution: gruberroland commentedMaybe you are redirecting to the wrong URL (should be /cart/worldpay/complete)? You wrote something about
/cart/checkout/complete.
Comment #8
pandroid CreditAttribution: pandroid commentedNo. The first redirect (to cart/worldpay/complete) is actually a fake and works ok. It really renders on Worldpay's own system. Its the second redirect at the end of the uc_worldpay_complete function, to cart/checkout/complete, that fails.
We're still setting up to see if its related to mixed-mode ssl and will report back when we know. Initial tests were not encouraging.
Comment #9
gruberroland CreditAttribution: gruberroland commentedClosing due to 14days inactivity. Please reopen if you think the problem is really caused by uc_worldpay.
Comment #10
jamesbisset CreditAttribution: jamesbisset commentedMy client is complaining of the same issue - abandoned orders but successful Worldpay payments.
Looking through the logs, I can see that callbacks logged by uc_worldpay include this:
HTTP/1.0" 200 12795
But callbacks which uc_worldpay appears to ignore include this:
HTTP/1.0" 200 12476
See www.mediachrome.com/uc_worldpay. I've listed all the callbacks for a couple of days, and the matching uc_worldpay log entries.
I can't find any instances of these numbers/codes anywhere else so I'm not sure what's going on.
Can anyone enlighten me?
Comment #11
gruberroland CreditAttribution: gruberroland commentedThe number you see after the 200 is just the number of bytes for this request. So it will not help to debug this.
Please enable log debugging in Worldpay configuration and look for messages like this: "Returned parameters"
Here we should see a list of all POST parameters provided by the Worldpay server.
Now, check for any differences in the parameters. Please note that the messages will not appear in your Apache log but in system log (/var/log/messages or /var/log/syslog).
Comment #12
jamesbisset CreditAttribution: jamesbisset commentedOK, thanks for the guidance.
The site is hosted by a third party on a shared server. The good news is that I had already enabled logging. The bad news is that the hosting company won't allow the site to write to their server system logs.
I'll have a look at temporarily dumping the messages somewhere accessible, and let you know what I find.
Comment #13
gruberroland CreditAttribution: gruberroland commented