|
@@ -142,8 +142,8 @@ class PaypalCycleNotify(View):
|
|
return self.do_paypal_cycle_return(request_dict, response)
|
|
return self.do_paypal_cycle_return(request_dict, response)
|
|
elif operation == 'paypalCycleNotify': # paypal 周期付款回调
|
|
elif operation == 'paypalCycleNotify': # paypal 周期付款回调
|
|
return self.do_paypal_webhook_notify(request_dict,request, response)
|
|
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):
|
|
def do_paypal_cycle_return(self, request_dict, response):
|
|
lang = request_dict.get('lang', 'en')
|
|
lang = request_dict.get('lang', 'en')
|
|
token = request_dict.get('token',None)
|
|
token = request_dict.get('token',None)
|
|
@@ -472,20 +472,59 @@ class PaypalCycleNotify(View):
|
|
return HttpResponse('fail')
|
|
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 = 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_agreement_str = request.body.decode("utf-8")
|
|
json_obj = json.loads(json_agreement_str)
|
|
json_obj = json.loads(json_agreement_str)
|
|
header = request.META
|
|
header = request.META
|
|
paypal_body = json_obj.get('resource')
|
|
paypal_body = json_obj.get('resource')
|
|
- logger.info('-----paypal_body------')
|
|
|
|
|
|
+ logger.info('-----subscription_body------')
|
|
logger.info(paypal_body)
|
|
logger.info(paypal_body)
|
|
- logger.info('-----paypal_header------')
|
|
|
|
|
|
+ logger.info('-----subscription_header------')
|
|
logger.info(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):
|
|
def get_plan_desc(self,plan_id):
|
|
paypalrestsdk.configure(PAYPAL_CRD)
|
|
paypalrestsdk.configure(PAYPAL_CRD)
|