we are encountering a problem on a live website using NOP 4.2 version, configured with One page checkout layout. Occasionally, before sending the user to the payment gateway page we receive "Payment information is not entered" as JS error in the page (billing and shipment data are correctly filled and there is just one payment method). Seems that this occurs everytime we restart IIS. The cart is correctly available (clint-side) but in this case the user must reset the cart removing all items and add them again to complete successfully the transaction.
We have alredy added key <system.web> <machineKey validationKey="XX" decryptionKey="XX" validation="SHA1" decryption="AES" /> </system.web> to the web.config, but problem persists.
For some reason the session data ProcessPaymentRequest is not being stored or is being reset Code from src\Presentation\Nop.Web\Controllers\CheckoutController.cs
//place order var processPaymentRequest = HttpContext.Session.Get<ProcessPaymentRequest("OrderPaymentInfo"); if (processPaymentRequest == null) { //Check whether payment workflow is required if (_orderProcessingService.IsPaymentWorkflowRequired(cart)) { thrownew Exception("Payment information is not entered"); } processPaymentRequest = new ProcessPaymentRequest(); }
One way the data will be lost is if the session times out
Thank you Yidna. Yes, seems to be related to the Session.
Anyway what's sound strange for me is that the cart is always filled, it is not empy. When I received that error, I have restarted a new session (clean cookie) login again with that user, so the cart is correctly loaded and trying to complete the transaction the error still occurs. Seems that the old Cart is not recognized anymore and the only way is to reset it.
I know in one of my plugins I do clear that data for some process cases Maybe it is their plugin displaying the message ? Have you checked back with the developer - there maybe a bug or something clearing the data ?