Browse Source

Merge branch 'test' of http://192.168.136.99:3000/servers/ASJServer into ming

zhangdongming 3 years ago
parent
commit
4e681c19f1
1 changed files with 47 additions and 8 deletions
  1. 47 8
      Controller/PaymentCycle.py

+ 47 - 8
Controller/PaymentCycle.py

@@ -142,8 +142,8 @@ class PaypalCycleNotify(View):
             return self.do_paypal_cycle_return(request_dict, response)
         elif operation == 'paypalCycleNotify':  # paypal 周期付款回调
             return self.do_paypal_webhook_notify(request_dict,request, response)
-        elif operation == 'test':  # paypal 周期付款回调
-            return self.do_test(request_dict,request, response)
+        elif operation == 'subscriptionNotify':               # paypal 订阅相关回调
+            return self.do_subscription_notify(request_dict,request, response)
     def do_paypal_cycle_return(self, request_dict, response):
         lang = request_dict.get('lang', 'en')
         token = request_dict.get('token',None)
@@ -472,20 +472,59 @@ class PaypalCycleNotify(View):
         return HttpResponse('fail')
 
 
-    def do_test(self, request_dict, request, response):
+    def do_subscription_notify(self, request_dict, request, response):
         logger = logging.getLogger('info')
-        logger.info('---into---webhook_notify--------')
-        logger.info('---request_dict-------')
-        logger.info(request_dict)
+        logger.info('---into---do_subscription_notify-------')
         json_agreement_str = request.body.decode("utf-8")
         json_obj = json.loads(json_agreement_str)
         header = request.META
         paypal_body = json_obj.get('resource')
-        logger.info('-----paypal_body------')
+        logger.info('-----subscription_body------')
         logger.info(paypal_body)
-        logger.info('-----paypal_header------')
+        logger.info('-----subscription_header------')
         logger.info(header)
 
+        billing_agreement_id = paypal_body.get('billing_agreement_id')
+        paypal_transaction_id = paypal_body.get('id')
+        amount = paypal_body.get('amount')
+        # if not billing_agreement_id:
+        #     #普通支付,更新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')
+
+        transmission_id = header.get('HTTP_PAYPAL_TRANSMISSION_ID',None)
+        transmission_time = header.get('HTTP_PAYPAL_TRANSMISSION_TIME',None)
+        cert_url = header.get('HTTP_PAYPAL_CERT_URL',None)
+        transmission_sig = header.get('HTTP_PAYPAL_TRANSMISSION_SIG',None)
+        auth_algo = header.get('HTTP_PAYPAL_AUTH_ALGO',None)
+        resource_type = json_obj.get('resource_type')
+
+        logger.info(resource_type)
+        logger.info(paypal_body.get('state'))
+
+        # self.get_plan_desc('P-4CG284532S612303METMEINY')
+        if resource_type == 'sale' and paypal_body.get('state') == 'completed':
+            paypalrestsdk.configure(PAYPAL_CRD)
+            response = paypalrestsdk.WebhookEvent.verify(
+                transmission_id, transmission_time, PAYPAL_WEB_HOOK_ID, json_agreement_str, cert_url, transmission_sig, auth_algo)
+            logger.info('-----------------------verify')
+            logger.info(response)
+            if response:
+                try:
+                    agreement_id = paypal_body.get('billing_agreement_id')
+                    billing_agreement = paypalrestsdk.BillingAgreement.find(agreement_id)
+
+                    logger.info('-----------------------billing_agreement')
+                    logger.info(billing_agreement)
+                except:
+                    return HttpResponse('not billing_agreement')
+
+
 
     def get_plan_desc(self,plan_id):
         paypalrestsdk.configure(PAYPAL_CRD)