I have come across this issue a few times recently and was wondering what people's thoughts were...
The way Oscar works at the moment is to freeze the basket and then call the handle_payment method which is overriden by your app. Most of the time the handle payment will involve a redirect to a payment form. However, simply going back to the home page will show the user an empty basket as a new basket is created to replace the frozen basket. This feels like a a bad user experience and I'm not quite sure what the best way to tackle this is.
I think the basket should be frozen when you hit the page with the payment form and thawed on every single other page. This allowed the user to navigate between pages during the checkout while still maintaining the integrity of the basket and preventing manipulation.
--
What are your thoughts?
https://github.com/tangentlabs/django-oscar
http://django-oscar.readthedocs.org/en/latest/
https://twitter.com/django_oscar
---
You received this message because you are subscribed to the Google Groups "django-oscar" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-oscar...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-oscar.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-oscar/83229c7e-473d-409f-9db9-0952fc482117%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
What I ended up doing is cloning the frozen basket just after freezing, making the clone 'open', and then deleting the open basket after sucessful payment. I'm currently testing it, but it seems to work. The code change is in my sagepay app, so I can't make a pull request, but I can give you [David] the diff if you want to consider doing something similar in django-oscar-paypal etc.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-oscar/d56c90a5-4cee-42de-bef5-97db283fcaab%40googlegroups.com.