· 4 years ago · Dec 10, 2020, 01:06 PM
1import urllib.request
2import hashlib
3import json
4
5class anyPay(object):
6
7 required_parameters = ["payout_id", "payout_type", "amount", "wallet", "merchant_id", "secret_key", "pay_id", "currency"]
8
9 def __init__(self, api_key = "", api_id = ""):
10 self.api_key = api_key
11 self.api_id = api_id
12 self.project_id = ""
13 self.answer = ""
14 self.requests = urllib.request
15
16 def get_url(self, **kwargs):
17 self.required_args = ""
18 self.link = "https://anypay.io/merchant?"
19 for parameter in kwargs:
20 for required_param in self.required_parameters:
21 if parameter == required_param:
22 self.required_args += f"{kwargs[parameter]}:"
23 self.sign = self._md5(self.required_args)
24 kwargs.pop("secret_key")
25 kwargs.update({"sign": self.sign})
26 self.__data = urllib.parse.urlencode(kwargs)
27 print(self.__data)
28 for parameter in kwargs:
29 self.link += f"{parameter}={kwargs[parameter]}&"
30 return self.link[0:-1]
31
32
33 def log_in_project(self, project_id):
34 self.project_id = project_id
35
36 def listen(self):
37 while 1:
38 self.answer_check = self.answer
39 self.answer = self.payments(project_id = self.project_id)
40 if self.answer != self.answer_check:
41 self.new_event = (str(self.answer['result']['payments'].keys())[12:-2]).split("',")[0]
42 yield self.answer['result']['payments'][self.new_event]
43
44 def _callMethod(self, method, project_id = "", **kwargs):
45 self.required_args = "" + str(project_id)
46 for parameter in kwargs:
47 for required_param in self.required_parameters:
48 if parameter == required_param:
49 self.required_args += str(kwargs[parameter])
50 self.sign = self._sha256(method, self.required_args)
51 kwargs.update({"project_id": project_id})
52 kwargs.update({"sign": self.sign})
53 self.__data = urllib.parse.urlencode(kwargs)
54 self.__req = self.requests.Request(f"https://anypay.io/api/{method}/{self.api_id}", data=self.__data.encode('ascii'), headers={'User-Agent': 'Mozilla/5.0'})
55 self.__req = urllib.request.urlopen(self.__req).read()
56 return json.loads(self.__req.decode('utf-8'))
57
58 def _md5(self, *kwargs):
59 return hashlib.md5(kwargs[0][0:-1].encode()).hexdigest()
60
61 def _sha256(self, method, *kwargs):
62 self.args = ""
63 self.args += str(method)
64 self.args += str(self.api_id)
65 for arg in kwargs:
66 self.args += arg
67 self.args += str(self.api_key)
68 return hashlib.sha256(self.args.encode()).hexdigest()
69
70 def _wrapper(self, **kwargs):
71 """
72 Provides convenient usage ANYPAY API.
73 """
74 return self._callMethod(self.method, **kwargs)
75
76 def __getattr__(self, *kwargs):
77 if type(kwargs) == tuple:
78 self.method = kwargs[0].replace("_", "-")
79 return self._wrapper