Browse Source

记录钩子订阅行为
修改paypal钩子记录表

lang 3 years ago
parent
commit
c8e228546a
2 changed files with 43 additions and 21 deletions
  1. 42 21
      Controller/PaymentCycle.py
  2. 1 0
      Model/models.py

+ 42 - 21
Controller/PaymentCycle.py

@@ -335,18 +335,19 @@ class PaypalCycleNotify(View):
                 logger.info(paypal_body.get('state'))
                 return HttpResponse('Fail', status=500)
 
-            #记录钩子日志
-            PaypalWebHookEvent.objects.create(
-                webhook_event_id=json_obj.get('id'),
-                resource_type=json_obj.get('resource_type'),
-                event_type=1,
-                summary=summary,
-                agreement_id=billing_agreement_id,
-                trade_no=paypal_transaction_id,
-                resource=json_agreement_str,
-                created_time=int(time.time()),
-            )
+            PaypalWebHookEventInsert = {
+                'webhook_event_id': json_obj.get('id'),
+                'resource_type': json_obj.get('resource_type'),
+                'event_type': 1,
+                'summary': summary,
+                'agreement_id': billing_agreement_id,
+                'trade_no': paypal_transaction_id,
+                'resource': json_agreement_str,
+                'created_time': int(time.time()),
+            }
             if not billing_agreement_id:
+                # 记录钩子日志
+                PaypalWebHookEvent.objects.create(**PaypalWebHookEventInsert)
                 #普通支付,更新paypal交易id
                 paymentID = paypal_body.get('parent_payment')
                 if paymentID and paypal_transaction_id:
@@ -358,6 +359,9 @@ class PaypalCycleNotify(View):
 
             agreement_id = paypal_body.get('billing_agreement_id')
             billing_agreement = paypalrestsdk.BillingAgreement.find(agreement_id)
+            # 记录钩子日志
+            PaypalWebHookEventInsert['agreement_desc'] = json.dumps(billing_agreement)
+            PaypalWebHookEvent.objects.create(**PaypalWebHookEventInsert)
 
             # 订阅续费订单(如果完成周期数`==0,则是自动续费第一次扣款。否则说明是续费订单)
             if billing_agreement.agreement_details.cycles_completed == '0':
@@ -542,18 +546,35 @@ class PaypalCycleNotify(View):
             elif event_type == 'Subscription payment failed':
                 event_type_code = 5
 
+            PaypalWebHookEventInsert = {
+                'webhook_event_id': json_obj.get('id'),
+                'resource_type': json_obj.get('resource_type'),
+                'event_type': 1,
+                'summary': summary,
+                'agreement_id': billing_agreement_id,
+                'trade_no': paypal_transaction_id,
+                'resource': json_agreement_str,
+                'created_time': int(time.time()),
+            }
+            if not billing_agreement_id:
+                # 记录钩子日志
+                PaypalWebHookEvent.objects.create(**PaypalWebHookEventInsert)
+                # 普通支付,更新paypal交易id
+                paymentID = paypal_body.get('parent_payment')
+                if paymentID and paypal_transaction_id:
+                    Order_Model.objects.filter(paymentID=paymentID).update(
+                        updTime=int(time.time()),
+                        trade_no=paypal_transaction_id
+                    )
+                return HttpResponse('success')
+
+            agreement_id = paypal_body.get('billing_agreement_id')
+            billing_agreement = paypalrestsdk.BillingAgreement.find(agreement_id)
             # 记录钩子日志
-            PaypalWebHookEvent.objects.create(
-                webhook_event_id=json_obj.get('id'),
-                resource_type=json_obj.get('resource_type'),
-                event_type=event_type_code,
-                summary=summary,
-                agreement_id=billing_agreement_id,
-                trade_no=paypal_transaction_id,
-                resource=json_agreement_str,
-                created_time=int(time.time()),
-            )
+            PaypalWebHookEventInsert['agreement_desc'] = json.dumps(billing_agreement)
+            PaypalWebHookEvent.objects.create(**PaypalWebHookEventInsert)
             return HttpResponse('success')
+
         except Exception as e:
             print(e)
             logger.info('----进入订阅失败----')

+ 1 - 0
Model/models.py

@@ -2288,6 +2288,7 @@ class PaypalWebHookEvent(models.Model):
     agreement_id = models.CharField(max_length=22, db_index=True, verbose_name='订阅ID', blank=True, default='')
     trade_no = models.CharField(max_length=22, db_index=True, verbose_name='交易ID', blank=True, default='')
     resource = models.TextField(blank=True, default='', verbose_name=u'资源详情')
+    agreement_desc = models.TextField(blank=True, default='', verbose_name=u'订阅详情')
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
 
     class Meta: