dax,
i have looked at this issue. i will have a solution for you soon.
i have started a discussion about this issue here.
IMO, this is a design flaw inherent in ZC with which i will be forced to handle.
thanks for your patience.
dax,
i have looked at this issue. i will have a solution for you soon.
i have started a discussion about this issue here.
IMO, this is a design flaw inherent in ZC with which i will be forced to handle.
thanks for your patience.
i'll add it to my list, but truly very low priority.
wrong totals getting sent to the payment processor because the $order->info object is incorrect at the time the data should be handled is far greater priority and something that really makes little sense to me.
why is there a checkout payment page if the base ZC can not provide the correct totals?
dax,
there are 5 files that i think you need to change.
3 of the files involve commenting out 1 line. the other 2 files require adding 3 lines.
you can review the file changes here:
https://github.com/zencart/zencart/c...art:orderTotal
you need to do everything in green.
considering you are using v158a, the line numbers may be different. but the changes should be the same and in about the same place.
please let me know if you have any questions.
and MOST importantly, let us know if it works and does what you expect!
best.
Thank you for this information. It is interesting that ZC leaves totalling of the order (in part) to the payment module... I can, I think, now comprehend the scale of the issue!
What is strange to me is that the bank actually processes the discounted amount despite the original request for the customer to approve (via the 3D pop-up screen) being the pre-discount amount. Where does the information for that initial bank response originate? - that is not used subsequently.
Probably over simplifying the issue.
dax
dax,
i think you have done something wrong. or you have some other modifications going on.
i have replicated your issue exactly using the low order fee, which is similar to group pricing, except it is adding and not subtracting the order_total amount.
in the following screencasts (in ogg format) which demonstrates the problem as you have described it, and then enacts my fixes to address it.
as to whether these changes will get merged into the base ZC, we will see.
base zen-cart square webPay SCA with wrong amount in SCA.
fixes zen-cart square webPay SCA with correct amount in SCA.
best.
Hi carlwhat
Very many thanks.
I reviewed the ogg files and noticed that you used the standard zc checkout. I mentioned, in the beginning, that I was using OPC. So I thought, what if...I switch off OPC?
It works. Proper amount used in the bank pop-up matching the discounted amount etc.
So, I guess I now need to see what OPC is doing. So your suggestion that a modification is at play was correct. It would appear that One Page Checkout doesn't quite link to the Square Webpay payment module in the same way as the standard 3 page checkout!
Is this one for the OPC forum?
dax
dax,
while i would love to blame OPC, it is not one for that forum. and sorry i missed that part!
i have a new and simpler solution that will not break other things in the way that my previous modification of core code might.
you said square webPay 2.0.2? assuming that is correct, here are my proposed changes:
in this file:
includes/modules/pages/checkout_payment/jscript_square_webPay.php
make the following few changes:
all of the changes are in red.Code:// starting at line 41 from: $values = json_encode([ 'orderInfo' => $order->info, 'orderBilling' => $order->billing, 'orderCustomer' => $order->customer, 'appId' => MODULE_PAYMENT_SQ_WEBPAY_APPLICATION_ID, 'locationId' => $square_webPay->getLocationDetails()->getId(), 'handler' => DIR_WS_HTTPS_CATALOG . 'squareWebPay_handler.php', 'textTotal' => TEXT_YOUR_TOTAL ?? 'Total:', 'orderTotal' => zen_round($order->info['total'], 2), 'locale' => $locale, 'google' => $google, 'apple' => $applePay, 'creditCards' => $creditCards, ]); // to: $calculatedTotal = $order_total_modules->pre_confirmation_check(true); $values = json_encode([ 'orderInfo' => $order->info, 'orderBilling' => $order->billing, 'orderCustomer' => $order->customer, 'appId' => MODULE_PAYMENT_SQ_WEBPAY_APPLICATION_ID, 'locationId' => $square_webPay->getLocationDetails()->getId(), 'handler' => DIR_WS_HTTPS_CATALOG . 'squareWebPay_handler.php', 'textTotal' => TEXT_YOUR_TOTAL ?? 'Total:', 'orderTotal' => zen_round($calculatedTotal, 2), 'locale' => $locale, 'google' => $google, 'apple' => $applePay, 'creditCards' => $creditCards, ]); // on line 157 (now line 158... or thereabouts), from: async function verifyBuyer(payments, token) { const verificationDetails = { amount: squareOrderValues.orderInfo.total.toFixed(2), //to: async function verifyBuyer(payments, token) { const verificationDetails = { amount: squareOrderValues.orderTotal.toFixed(2),
please let us know how that goes!
best.
Hi carlwhat,
Brilliant! That cured it. Thank you and kindest regards.
P.S. Sorry for delay in responding but had a long weekend off...
dax
Is this compatible to ZC version 2.0.0 yet?
Bookmarks