0

我有一个 django 应用程序并实现了支付网关功能。现在我正在尝试的是

成功转换后,需要将用户重定向到显示响应详细信息的另一个页面,因此我正在使用HttpresponseRedirect重定向页面,但我response在视图中有包含响应详细信息的变量,所以我需要将此变量作为上下文发送到呈现模板的重定向 url,以便我可以使用该响应变量来显示结果。

所以对于上述功能,我有三种方法

  1. 将变量作为查询参数发送(在此方法中不安全,因为它是敏感的信用卡交易详细信息)
  2. 使用在我的情况下不起作用的会话框架,代码如下
  3. Django 消息传递框架(在这种情况下不是很有用)

视图.py

def payment(request):
    amount = 1
    if request.method == 'POST':
        form = CreditCardForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            ...........
            ........... 
            response = stripe.payment_purchase(amount,data) 
            request.session['response'] = response
            return HttpResponseRedirect(reverse('paygate:payment_success'))
    else:
        form = CreditCardForm(initial={'number':'4242424242424242'})
    return render_to_response('payment/stripe_payment_form.html',{'form': form,
                                             'response':response,},
                                             context_instance=RequestContext(request))

payment_success url 视图

class PaymentSuccess(TemplateView):
    template_name = 'payment/payment_success.html'

我试图访问response模板中的变量,但什么也没显示

payment_success.html

{% extends "base.html" %}
{% block main_title %}Payment{% endblock %}
{% block title %}Success{% endblock %}

{% block content %}
  <h1>Response Details</h1>
  <p>Your status is <span>{{ request.session.response }}</span></p>
{% endblock %} 

credit card payment details因此,任何人都可以让我知道将上下文变量(在这种情况下)发送到使用方法重定向 url的各种不同的安全HttpResponseRedirect方法

4

1 回答 1

0

我认为您的列表中有一个 4. 可能的项目,我建议使用。

完成您想要的最安全和最实用的方法是成功查看显示存储在数据库中的实际结果。

这背后的想法是:

payment视图是用户对您的数据库执行的操作。

payment_successview 是一种告诉用户该操作已成功执行并使用用户所需输入的方式。

同样,显示动作正确的最佳方式是在数据库中显示它的结果,即现在存储在数据库中的关于该动作的结果。

于 2013-08-16T10:19:15.907 回答