Forráskód Böngészése

自动续费首次扣款不更新交易id,记录新订单号和更新状态

locky 1 éve
szülő
commit
6125710b32
2 módosított fájl, 9 hozzáadás és 6 törlés
  1. 7 6
      Controller/PaymentCycle.py
  2. 2 0
      Model/models.py

+ 7 - 6
Controller/PaymentCycle.py

@@ -395,7 +395,7 @@ class PaypalCycleNotify(View):
             PaypalWebHookEventInsert['agreement_desc'] = repr(billing_agreement)
             PaypalWebHookEventInsert['agreement_id'] = agreement_id
             PaypalWebHookEventInsert['orderID'] = billing_agreement.description
-            PaypalWebHookEvent.objects.create(**PaypalWebHookEventInsert)
+            paypal_webhook_event_qs = PaypalWebHookEvent.objects.create(**PaypalWebHookEventInsert)
 
             # 查询订单数据
             order_id = billing_agreement.description
@@ -410,9 +410,6 @@ class PaypalCycleNotify(View):
                 PAY_LOGGER.info('PayPal周期扣款失败---根据order_id查询订单数据不存在')
                 return HttpResponse('fail', status=500)
 
-            # 更新PayPal交易号
-            order_qs.update(trade_no=paypal_transaction_id)
-
             # 判断用户地区是否跟服务器地区匹配
             uid = order_qs[0]['UID']
             country_id = order_qs[0]['userID__region_country']
@@ -422,7 +419,7 @@ class PaypalCycleNotify(View):
             UID = order_qs[0]['UID']
             # PayPal周期扣款首次扣款
             if billing_agreement.agreement_details.cycles_completed == '0':
-                order_qs.update(status=1, updTime=nowTime)
+                order_qs.update(status=1, trade_no=paypal_transaction_id, updTime=nowTime)
                 PAY_LOGGER.info('{} PayPal周期扣款首次扣款成功'.format(UID))
                 return HttpResponse('success')
 
@@ -527,7 +524,11 @@ class PaypalCycleNotify(View):
                         }
                     }
                 ]
-                billing_agreement.replace(billing_agreement_update_attributes)
+                update_status = billing_agreement.replace(billing_agreement_update_attributes)
+
+                # 记录新订单号和更新状态
+                PaypalWebHookEvent.objects.filter(id=paypal_webhook_event_qs.id).update(newOrderID=orderID,
+                                                                                        update_status=update_status)
                 PAY_LOGGER.info('{} PayPal周期扣款成功'.format(UID))
                 return HttpResponse('success')
         except Exception as e:

+ 2 - 0
Model/models.py

@@ -2644,6 +2644,8 @@ 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='')
     orderID = models.CharField(max_length=30, db_index=True, verbose_name='订单ID', blank=True, default='')
+    newOrderID = models.CharField(max_length=30, db_index=True, verbose_name='新订单ID', blank=True, default='')
+    update_status = models.BooleanField(default=False, verbose_name='更新PayPal资源状态')
     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, db_index=True, verbose_name='创建时间')