我有一个Django表单,它将表单数据发送到外部源(更准确地说,它是PayPal付款表单)。用户输入产品价格,点击按钮,POST请求发送到PayPal,触发正常的付款流程。
现在,我想使用OTP(如Google身份验证器)验证每笔付款。
如何实现验证?我想到了几个场景,但没有一个真的令人满意:
我很高兴听到您提供更多解决方案或一些建议,如何在没有上述问题的情况下实现上述解决方案。
编辑 - 我的解决方案到目前为止:
我做了一个工作并将表格分成两部分。第一种形式检查OTP并将数据发送到我的内部django视图。它还会创建一个带有生成发票的模型实例,然后可以在PayPal IPN例程中进行检查。第二种形式是PayPal付款表单,它将POST请求发送给PayPal。您可以在以下Github-Gist中找到简化代码:
答案 0 :(得分:0)
我不知道为什么你认为POST请求后不应该有任何重定向?在django中它始终发生,没有在向数据库添加内容后直接刷新每个页面将触发再次添加它。
要将用户重定向到正确的PayPal页面,您可以在使用有效表单数据提交表单时发送HttpResponseRedirect而不是正常响应。如果没有,请显示一些错误消息。
您可以在AJAX响应中发送重定向到(paypal url)的网址,这样用户就无法绕过此功能。简单地把一些由AJAX提交的表单,如果它返回重定向的URL,只需重定向用户。如果没有,则显示错误消息。