首页 > 解决方案 > django-oscar 3.0 与贝宝付款

问题描述

我对 Django 和 Djnago-oscar 相当陌生,到目前为止,我已经设置了 django-oscar 商店,并且我正在尝试与 paypal 集成,但因为我正在运行 django.oscar 3.x 'django-oscar-paypal' 没有'不适合我,并且没有足够的文档说明如何实施付款。

我的结帐流程:

  1. 将商品添加到购物车
  2. 用户输入详细信息,包括运输等
  3. 选择付款方式,查看重定向到 Paypal 以补充付款
  4. 重定向回网站并确认订单

paymentMethodeView我创建了一个表单来获取付款方式,并且paymentDetailsView我有handle_payment

def handle_payment(self, order_number, order_total, **kwargs):
        method = self.checkout_session.payment_method()
        if method == 'pt': #payment terms admin manually invoice
            return self.handle_pt_payment(order_number, order_total, **kwargs)
        elif method == 'paypal_payment':
            return self.handle_paypal_payment(order_number, order_total, **kwargs)
        else:
            raise PaymentError(_('Bad payment method in handle_payment!'))

handle_paypal_payment功能上,我不确定如何进行。

任何帮助将非常感激

标签: djangopaypalcheckoutdjango-oscar

解决方案


从您的网站重定向是一种处理付款的旧方法。不要这样做;不应该有重定向。

相反,在您的服务器上创建两条路由,一条用于“创建订单”,一条用于“捕获订单”,记录在此处;您可以使用 Checkout-Python-SDK。这些路由应该只返回 JSON 数据(没有 HTML 或文本)。捕获者应该(成功时)在返回之前将付款详细信息存储在您的数据库中(特别purchase_units[0].payments.captures[0].id是 PayPal 交易 ID)

将这两条路线与以下批准流程配对,其中不涉及重定向:https ://developer.paypal.com/demo/checkout/#/pattern/server

如果在该代码的成功部分中,您希望在处理完交易后重定向到您网站上的其他位置(例如感谢和确认页面),请使用 JavaScript 执行此操作。


推荐阅读