aerocommerce/total-processing Admin MOTO orders taking admins to front end OrderConfirmation page
SF
Stephen Fuller
· teclan Ltd
Public
Log in
to upvote, comment, or submit your own tickets.
Module: aerocommerce/total-processing Version 0.6.5
1. Place and order in the Aero Admin Panel
2. Use TotalProcessing as teh payment method.
Expected Result: to be taken back to the order in question with a sucess message.
Actual Result: Taken to the front end order confirmation page.
In Driver.php:229-250, completeRegistration() always sets a statusCheckUrl.
payment.twig:59-99 checks that URL every 3 seconds. When the response says complete: true, it sends the browser to data.redirect.
In TotalProcessingController.php:47-117, paymentStatus() reports the order as complete once $order->hasBeenPlaced() || $order->isFullyPaid() is true. confirmationRedirectUrl() then only knows about two places to send the browser: Pay by Link, or checkout.confirmation. It has no admin case, so it never returns admin.orders.view.
The normal admin flow submits the payment widget to the driver's complete URL, which places the order and redirects to admin.orders.view with the success message. The poller runs alongside that. Payment can finish before the browser's own completion request comes back, for example:
the webhook in ProcessWebhook.php marks the payment as paid
or the order gets placed during 3DS or a slow round-trip
When that happens, the next poll gets complete: true and the browser goes to the frontend confirmation page first. That would explain why it only happens sometimes.
Possible fixes
Make a small change to the package, either in a fork or as a patch, using one of these options:
Don't poll for MOTO payments. In completeRegistration(), set 'statusCheckUrl' => $this->isInMerchantMode(PaymentDriver::MOTO) ? null : URL::signedRoute(...). This is the simplest option, and it matches how additionalPayment() already works.
Make the redirect admin-aware. Pass a flag such as moto=1 in $statusCheckParams. Then return route('admin.orders.view', $order) from confirmationRedirectUrl() when the flag is set.
MP
Michael PriceAero3W AGO
Hi Stephen,
Thank you for the detailed report - I am working on fixing this and will update you in due course.
MP
Michael PriceAero3W AGO
Hi, this has now been fixed in release 0.6.6 - if you have any further issues, please let us know :)