From aea717eafc920a0895ac269d467bb0a424c8c618 Mon Sep 17 00:00:00 2001 From: Son NK Date: Sun, 8 Mar 2020 10:27:50 +0100 Subject: [PATCH] add paddle_utils.cancel_subscription --- app/paddle_utils.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/app/paddle_utils.py b/app/paddle_utils.py index 49904e15..47740e11 100644 --- a/app/paddle_utils.py +++ b/app/paddle_utils.py @@ -8,15 +8,18 @@ import collections # PHPSerialize can be found at https://pypi.python.org/pypi/phpserialize import phpserialize +import requests from Crypto.Hash import SHA1 # Crypto can be found at https://pypi.org/project/pycryptodome/ from Crypto.PublicKey import RSA from Crypto.Signature import PKCS1_v1_5 -from app.config import PADDLE_PUBLIC_KEY_PATH +from app.config import PADDLE_PUBLIC_KEY_PATH, PADDLE_VENDOR_ID, PADDLE_AUTH_CODE # Your Paddle public key. +from app.log import LOG + with open(PADDLE_PUBLIC_KEY_PATH) as f: public_key = f.read() @@ -55,3 +58,21 @@ def verify_incoming_request(form_data: dict) -> bool: if verifier.verify(digest, signature): return True return False + + +def cancel_subscription(subscription_id: int) -> bool: + r = requests.post( + "https://vendors.paddle.com/api/2.0/subscription/users_cancel", + data={ + "vendor_id": PADDLE_VENDOR_ID, + "vendor_auth_code": PADDLE_AUTH_CODE, + "subscription_id": subscription_id, + }, + ) + res = r.json() + if not res["success"]: + LOG.error( + f"cannot cancel subscription {subscription_id}, paddle response: {res}" + ) + + return res["success"]