现在已经有一周了,我无法弄清楚在django-oscar实施COD的方法。如果有人至少让我开始完成这项任务,我将非常感激。我曾尝试使用少量的Github存储库,但它们已经过时或不够清晰,无法与项目一起使用。一个良好的开端将足以让我从头开始。 感谢
答案 0 :(得分:1)
我还没有为奥斯卡实施COD,但是我已经在奥斯卡源代码中挖掘了几个星期的另一个非标准支付集成。困难的部分是付款涉及结账,购物篮,合作伙伴,订单和付款应用程序。保持原始checkout views.py文件的源代码关闭,并经常引用它。
那么关键步骤是什么:
简而言之就是这样,但显然还需要一些异常处理。希望这会让你开始!
答案 1 :(得分:1)
我最近在django-oscar上实施了COD。这就是你需要做的事情。
你应该了解奥斯卡的结账过程是如何运作的。 让我告诉你一下。有一个结帐'在奥斯卡的应用程序,处理所有的付款,下订单的东西。所以,首先你需要使用以下命令来分叉该应用程序。
./manage.py oscar_fork_app checkout apps/shop
然后在INSTALLED_APPS
设置中添加它。
现在,如果您仔细查看结帐应用程序的views.py
,则会有此类PaymentDetailsView处理下订单和付款内容。
现在,在您的preview.html页面上,您可以添加网关选项作为' cod'。当用户选择这个' cod'选项并提交“下订单”,您可以在分叉类handle_payment
的{{1}}方法中检查提交的网关代码。
PaymentDetailsView
当您从CorePaymentDetailsView = get_class('checkout.views', 'PaymentDetailsView')
class PaymentDetailsView(CorePaymentDetailsView):
"""
currently used to redirect to preview page
Handles the payment and cod.
"""
def handle_payment(self, order_number, total, **kwargs):
self.amount = float(total.excl_tax)
gateway_code = self.request.POST.get('gateway_code', None)
if gateway_code and gateway_code == 'cash-on-delivery':
# Record payment source and event
source_type, is_created = SourceType.objects.get_or_create(
name='cash-on-delivery')
source = source_type.sources.model(
source_type=source_type,
amount_allocated=total.excl_tax)
self.add_payment_source(source)
self.add_payment_event('CREATED', total.excl_tax)
return
方法返回时,它会继续执行同一类的handle_payment
方法并下订单。
之后,您可以在仪表板上提及此产品有submit
选项。发货后,您可以将另一笔付款事件记录为cash-on-delivery
。
询问是否有任何其他查询。