django - django-oscar 3.0 与贝宝付款
问题描述
我对 Django 和 Djnago-oscar 相当陌生,到目前为止,我已经设置了 django-oscar 商店,并且我正在尝试与 paypal 集成,但因为我正在运行 django.oscar 3.x 'django-oscar-paypal' 没有'不适合我,并且没有足够的文档说明如何实施付款。
我的结帐流程:
- 将商品添加到购物车
- 用户输入详细信息,包括运输等
- 选择付款方式,查看重定向到 Paypal 以补充付款
- 重定向回网站并确认订单
在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
功能上,我不确定如何进行。
任何帮助将非常感激
解决方案
从您的网站重定向是一种处理付款的旧方法。不要这样做;不应该有重定向。
相反,在您的服务器上创建两条路由,一条用于“创建订单”,一条用于“捕获订单”,记录在此处;您可以使用 Checkout-Python-SDK。这些路由应该只返回 JSON 数据(没有 HTML 或文本)。捕获者应该(成功时)在返回之前将付款详细信息存储在您的数据库中(特别purchase_units[0].payments.captures[0].id
是 PayPal 交易 ID)
将这两条路线与以下批准流程配对,其中不涉及重定向:https ://developer.paypal.com/demo/checkout/#/pattern/server
如果在该代码的成功部分中,您希望在处理完交易后重定向到您网站上的其他位置(例如感谢和确认页面),请使用 JavaScript 执行此操作。
推荐阅读
- c++ - C 中 range-v3 库中范围的类型签名是什么
- react-admin - 在 AutocompleteArrayInput 中将数组转换为字符串
- angular - 如何解析我对 ngx-treeview 所需的树视图结构的响应
- reactjs - 通过 flexbox/fluent ui 控制项目如何排成一行
- html - 仅使用 40% 的宽度时如何在 HTML 中居中列
- node.js - Nodejs mongoose:如何从与其他集合相关的数据库集合中检索数据
- c#-9.0 - 如何在 C#-9 中使用“数据成员”
- django - Django:定期递增一个字段中的所有记录
- javascript - 遍历它们 DOM
- python-3.x - 更新python字典值时区分键