在Django中使用Paypal Webhook与沙盒
在Django应用程序中创建Webhook的URL,或者您可以从Paypal仪表板中创建。由于我们正在使用沙盒,因此我将从应用程序中创建。
url('createWebhook', CreateWebhookAPIView.as_view(), name='create-webhook'),
然后编写一个类API来创建用于创建Webhook的类
class CreateWebhookAPIView(CreateAPIView):
"""
Subscribes your webhook listener to events.
"""
authentication_classes = ()
permission_classes = ()
serializer_class = BrandListSerializer
def __init__(self, **kwargs):
self.response_format = ResponseInfo().response
super(CreateWebhookAPIView, self).__init__(**kwargs)
def post(self, request, *args, **kwargs):
try:
webhook = URL+'v1/notifications/webhooks'
response = requests.post(webhook, headers=headers, json=request.data)
self.response_format = return_response(
response.json(), None, status.HTTP_200_OK, messages.SUCCESS)
return Response(self.response_format)
except Exception as e:
print(e, "error")
return Response(self.response_format)
并创建另一个类,您想执行特定事件操作,请确保为每个EVENT创建了单独的执行操作的类,如果尝试为不同的事件使用相同的URL,则会出现错误。我已经创建了以下类,目前只打印事件响应,您可以执行操作
class UpdateSubscriptionWebhookAPIView(CreateAPIView):
"""
Subscribes your webhook listener to events.
"""
authentication_classes = ()
permission_classes = ()
serializer_class = BrandListSerializer
def __init__(self, **kwargs):
self.response_format = ResponseInfo().response
super(UpdateSubscriptionWebhookAPIView, self).__init__(**kwargs)
def post(self, request, *args, **kwargs):
try:
event_json = json.loads(request.body)
print(event_json)
self.response_format = return_response(
event_json, None, status.HTTP_200_OK, messages.SUCCESS)
return Response(self.response_format)
except Exception as e:
print(e, "error")
return Response(self.response_format)
添加相同的URL链接
url('updateSubscriptionWebhook', UpdateSubscriptionWebhookAPIView.as_view(), name='update-webhook')
之后从请求创建的帖子上进行操作,并使用相应的事件来触发它,你就可以看到创建的webhook,一旦事件发生,你将获得对应的输出,如下所示
在打印类中输出的控制台输出