Django支付集成

时间:2016-06-17 16:45:59

标签: python django

我有一个通过查看方法A呈现的购物车,我想通过pesapal package将购物车中的详细信息提交给pesapal api。我使用的方法与sandbox app, PaymentView相同。购物车有一个结账按钮,用于将数据提交给api。 Sandbox方法simlpy将数据作为字典(order_info)获取并输入到url(get_payment_url)然后提供api,因此当我打开模板时,api的iframe指示我正在绘制指定的amout。字典。如何通过购物车提交数据?

## Sandbox method submitting data to the api
class PaymentView(TemplateView, PaymentRequestMixin):
    template_name = 'payment/payment.html'
    # how the sandbox app submits data to api:

    def get_context_data(self, **kwargs):
        ctx = super(PaymentView, self).get_context_data(**kwargs)

        order_info = {
        'amount': '1000',
        'description': 'Payment for Stuff',
        'reference': 2,
        'email': 'you@email.com'
    }

    ctx['pesapal_url'] = self.get_payment_url(**order_info)
    return ctx

## view method A:
def show_cart(request, template_name="payment/cart.html"):
    if request.method == 'POST':
        postdata = request.POST.copy()
        if postdata['submit'] == 'Remove':
            cart.remove_from_cart(request)
        if postdata['submit'] == 'Update':
            cart.update_cart(request)
        if postdata['submit'] == 'Checkout':
            # submission to api should occur here 
    cart_items = cart.get_cart_items(request)
    cart_subtotal = cart.cart_subtotal(request)
    return render_to_response(template_name, locals(), context_instance=RequestContext(request))

# my url
urlpatterns = patterns('cart.views',
(r'^$', 'show_cart', { 'template_name': 'payment/cart.html' }, 'show_cart'),
)

2 个答案:

答案 0 :(得分:1)

你可以通过让django将你的数据解析到模板或者在这种情况下你的购物车来快速得到它。这可以通过让您的方法返回所需的数据来完成。类似的东西:

return render(request, 'yourpage.html', 
                {'yourvariable':yourvariable},  context_instance=RequestContext(request))

然后只需在模板中获取您的值(在您的情况下为购物车),如:

{{yourvariable}}

然后让api完成剩下的工作。

答案 1 :(得分:0)

查看文档和source code,似乎没有设置任何数据的方法。你有一个例子吗?