Django从webhook接收POST

时间:2018-01-14 11:29:46

标签: python django

我们的应用程序通过POST从我们的支付处理器接收webhooks。当我构建这个函数时,我最初将它用于GET以进行测试,因此我可以使用URL来测试参数。一切都运行正常但现在我需要测试使用POST请求发送到我们的URL的假购买。所以我更新了代码,但现在没有新的webhook保存在我们的数据库中。

views.py

@require_POST
def webhook(request):
    template_name = 'payment/index.html'

    hook = Webhook()
    user = User.objects.get(id=request.POST.get('clientAccnum', ''))

    hook.user = user
    hook.clientSubacc = request.POST.get('clientSubacc', '')
    hook.eventType = request.POST.get('eventType')
    hook.eventGroupType = request.POST.get('eventGroupType', '')
    hook.subscriptionId = request.POST.get('subscriptionId', '')

    hook.timestamp = request.POST.get('timestamp', '')
    hook.timestamplocal = timezone.now()

    hook.save()

    hook.user.profile.account_paid = hook.eventType == 'RenewalSuccess'
    hook.user.profile.save()

    return render(request, template_name)

models.py

class Webhook(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE, null=False)
    clientSubacc = models.CharField(max_length=120, blank=True, null=True)
    eventType = models.CharField(max_length=120, blank=True, null=True)
    eventGroupType = models.CharField(max_length=120, blank=True, null=True)
    subscriptionId = models.CharField(max_length=120, blank=True, null=True)
    timestamp = models.DateTimeField(blank=True, null=True)
    timestamplocal = models.DateTimeField(blank=True, null=True)

我现在从我们的支付处理器发出POST请求,他们的支持告诉我webhooks正在被解雇但数据库中没有任何新功能。这让我相信views.py代码是错误的。

无论如何我可以测试一下吗?

0 个答案:

没有答案