Refactored code and added delete_stripe_plan method
This commit is contained in:
		
					parent
					
						
							
								bba82e95d1
							
						
					
				
			
			
				commit
				
					
						2a348c40d1
					
				
			
		
					 1 changed files with 29 additions and 7 deletions
				
			
		|  | @ -59,8 +59,10 @@ class StripeUtils(object): | |||
|     CURRENCY = 'chf' | ||||
|     INTERVAL = 'month' | ||||
|     SUCCEEDED_STATUS = 'succeeded' | ||||
|     PLAN_ALREADY_EXISTS = 'Plan already exists' | ||||
|     STRIPE_PLAN_ALREADY_EXISTS = 'Plan already exists' | ||||
|     STRIPE_NO_SUCH_PLAN = 'No such plan' | ||||
|     PLAN_EXISTS_ERROR_MSG = 'Plan {} exists already.\nCreating a local StripePlan now.' | ||||
|     PLAN_DOES_NOT_EXIST_ERROR_MSG = 'Plan {} does not exist.' | ||||
| 
 | ||||
|     def __init__(self): | ||||
|         self.stripe = stripe | ||||
|  | @ -135,7 +137,7 @@ class StripeUtils(object): | |||
|         return charge | ||||
| 
 | ||||
|     @handleStripeError | ||||
|     def get_or_create_plan(self, amount, name, stripe_plan_id): | ||||
|     def get_or_create_stripe_plan(self, amount, name, stripe_plan_id): | ||||
|         """ | ||||
|         This function checks if a StripePlan with the given stripe_plan_id already exists. If it exists then the | ||||
|         function returns this object otherwise it creates a new StripePlan and returns the new object. | ||||
|  | @ -144,7 +146,8 @@ class StripeUtils(object): | |||
|         :param name: The name of the Stripe plan to be created. | ||||
|         :param stripe_plan_id: The id of the Stripe plan to be created. Use get_stripe_plan_id_string function to obtain | ||||
|                                the name of the plan to be created | ||||
|         :return: The StripePlan object if it exists or if can create a Plan object with Stripe, None otherwise | ||||
|         :return: The StripePlan object if it exists or if can create a Plan object with Stripe, None otherwise. In case | ||||
|                  of a Stripe error, it returns the error dictionary | ||||
|         """ | ||||
|         _amount = float(amount) | ||||
|         amount = int(_amount * 100)  # stripe amount unit, in cents | ||||
|  | @ -153,20 +156,39 @@ class StripeUtils(object): | |||
|             stripe_plan_db_obj = StripePlan.objects.get(stripe_plan_id=stripe_plan_id) | ||||
|         except StripePlan.DoesNotExist: | ||||
|             try: | ||||
|                 stripe_plan = self.stripe.Plan.create( | ||||
|                 self.stripe.Plan.create( | ||||
|                     amount=amount, | ||||
|                     interval=self.INTERVAL, | ||||
|                     name=name, | ||||
|                     currency=self.CURRENCY, | ||||
|                     id=stripe_plan_id) | ||||
|                 if not stripe_plan.get('response_object') and not stripe_plan.get('error'): | ||||
|                 stripe_plan_db_obj = StripePlan.objects.create(stripe_plan_id=stripe_plan_id) | ||||
|             except stripe.error.InvalidRequestError as e: | ||||
|                 if self.PLAN_ALREADY_EXISTS in str(e): | ||||
|                 if self.STRIPE_PLAN_ALREADY_EXISTS in str(e): | ||||
|                     logger.debug(self.PLAN_EXISTS_ERROR_MSG.format(stripe_plan_id)) | ||||
|                     stripe_plan_db_obj = StripePlan.objects.create(stripe_plan_id=stripe_plan_id) | ||||
|         return stripe_plan_db_obj | ||||
| 
 | ||||
|     @handleStripeError | ||||
|     def delete_stripe_plan(self, stripe_plan_id): | ||||
|         """ | ||||
|         Deletes the Plan in Stripe and also deletes the local db copy of the plan if it exists | ||||
| 
 | ||||
|         :param stripe_plan_id: The stripe plan id that needs to be deleted | ||||
|         :return: True if the plan was deleted successfully from Stripe, False otherwise. In case of a Stripe error, it | ||||
|                  returns the error dictionary | ||||
|         """ | ||||
|         return_value = False | ||||
|         try: | ||||
|             plan = self.stripe.Plan.retrieve(stripe_plan_id) | ||||
|             plan.delete() | ||||
|             return_value = True | ||||
|             StripePlan.objects.filter(stripe_plan_id=stripe_plan_id).all().delete() | ||||
|         except stripe.error.InvalidRequestError as e: | ||||
|             if self.STRIPE_NO_SUCH_PLAN in str(e): | ||||
|                 logger.debug(self.PLAN_DOES_NOT_EXIST_ERROR_MSG.format(stripe_plan_id)) | ||||
|         return return_value | ||||
| 
 | ||||
|     @handleStripeError | ||||
|     def subscribe_customer_to_plan(self, customer, plans): | ||||
|         """ | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue