Open moorena opened 2 weeks ago
Unsure of the way to fix: should it call getCurrentBasket
instead and fail is there is none ?
We are having the same issue. If someone refreshes the page or if they visit a different page and then click the back button, it will "Void" the order.
https://github.com/Affirm/Salesforce_Commerce_Cloud_Affirm/blob/afee5206a92ff0f50ae0740c2e34e4d994a6ae24/cartridges/int_affirm_sfra/cartridge/controllers/Affirm.js#L175-L180
If your customer completes checkout and gets the order confirmation page, and then refreshes it, we re-enter this controller.
The
basket
will be empty (since the code callsgetCurrentOrNewBasket
) but the checkout token is still valid, and eventually, the checkCart → syncBasket → checkTotalPrice call chain will fail because thebasket
total is $0 but the authorized amount was whatever the posted order is.That leads the code to call the Affirm void service to void the Affirm transaction. (and does not do any updates to the SFCC order)
Since we're only doing AUTH (capture is done later during fulfillment), when we go to capture payment, it fails (404/not found) because the transaction was voided on Affirm's side.