예제 #1
0
    def subscription(self, data):
        """
        Method to generate checkout url with calendar
        :param data: order data
        :return: api response
        """
        if self.api.api_protocol != '2.0':
            raise Exception('This method allowed only for v2.0')
        path = '/checkout/url/'
        recurring_data = data.get('recurring_data', '')
        subscription_data = {
            'subscription': 'Y',
            'recurring_data': {
                'start_time': recurring_data.get('start_time', ''),
                'amount': recurring_data.get('amount', ''),
                'every': recurring_data.get('every', ''),
                'period': recurring_data.get('period', ''),
                'readonly': recurring_data.get('readonly', ''),
            }
        }

        helper.check_data(subscription_data['recurring_data'])
        self._validate_recurring_data(subscription_data['recurring_data'])
        subscription_data.update(data)
        params = self._required(subscription_data)
        result = self.api.post(path, data=params, headers=self.__headers__)

        return self.response(result)
예제 #2
0
 def api_status(self, data):
     """
     Method for checking order status
     :param data: order data
     :return: api response
     """
     params = {"order_id": data.get("order_id", "")}
     helper.check_data(params)
     params.update(data)
     return "/status/order_id/", params
예제 #3
0
 def api_atol_logs(self, data):
     """
     Method for getting order atol logs
     :param data: order data
     :return: api response
     """
     params = {"order_id": data.get("order_id", "")}
     helper.check_data(params)
     params.update(data)
     self.api.request_type = "json"
     return "/get_atol_logs/", params
예제 #4
0
 def atol_logs(self, data):
     """
     Method for getting order atol logs
     :param data: order data
     :return: api response
     """
     path = '/get_atol_logs/'
     params = {'order_id': data.get('order_id', '')}
     helper.check_data(params)
     params.update(data)
     result = self.api.post(path, data=params, headers=self.__headers__)
     return utils.from_json(result).get('response')
예제 #5
0
 def status(self, data):
     """
     Method for checking order status
     :param data: order data
     :return: api response
     """
     path = '/status/order_id/'
     params = {'order_id': data.get('order_id', '')}
     helper.check_data(params)
     params.update(data)
     result = self.api.post(path, data=params, headers=self.__headers__)
     return self.response(result)
예제 #6
0
 def api_capture(self, data):
     """
     Method for capturing order
     :param data: capture order data
     :return: api response
     """
     params = {
         "order_id": data.get("order_id", ""),
         "amount": data.get("amount", ""),
         "currency": data.get("currency", ""),
     }
     helper.check_data(params)
     params.update(data)
     return "/capture/order_id/", params
예제 #7
0
 def api_reverse(self, data):
     """
     Method to reverse order
     :param data: reverse order data
     :return: api response
     """
     params = {
         "order_id": data.get("order_id", ""),
         "amount": data.get("amount", ""),
         "currency": data.get("currency", ""),
     }
     helper.check_data(params)
     params.update(data)
     return "/reverse/order_id/", params
예제 #8
0
 def api_step_two(self, data):
     """
     Accept purchase Pcidss step two
     :param data: order data
     :return: payment result
     """
     params = {
         "order_id": data.get("order_id", ""),
         "pares": data.get("pares", ""),
         "md": data.get("md", ""),
     }
     helper.check_data(params)
     params.update(data)
     return "/3dsecure_step2/", params
예제 #9
0
 def api_transaction_list(self, data):
     """
     Method for getting order transaction list
     :param data: order data
     :return: api response
     """
     params = {"order_id": data.get("order_id", "")}
     helper.check_data(params)
     params.update(data)
     """
     only json allowed all other methods returns 500 error
     """
     self.api.request_type = "json"
     return "/transaction_list/", params
예제 #10
0
 def transaction_list(self, data):
     """
     Method for getting order transaction list
     :param data: order data
     :return: api response
     """
     path = '/transaction_list/'
     params = {'order_id': data.get('order_id', '')}
     helper.check_data(params)
     params.update(data)
     """
     only json allowed all other methods returns 500 error
     """
     self.api.request_type = 'json'
     result = self.api.post(path, data=params, headers=self.__headers__)
     return self.response(result)
예제 #11
0
 def step_two(self, data):
     """
     Accept purchase Pcidss step two
     :param data: order data
     :return: payment result
     """
     path = '/3dsecure_step2/'
     params = {
         'order_id': data.get('order_id', ''),
         'pares': data.get('pares', ''),
         'md': data.get('md', '')
     }
     helper.check_data(params)
     params.update(data)
     result = self.api.post(path, data=params, headers=self.__headers__)
     return self.response(result)
예제 #12
0
 def capture(self, data):
     """
     Method for capturing order
     :param data: capture order data
     :return: api response
     """
     path = '/capture/order_id/'
     params = {
         'order_id': data.get('order_id', ''),
         'amount': data.get('amount', ''),
         'currency': data.get('currency', '')
     }
     helper.check_data(params)
     params.update(data)
     result = self.api.post(path, data=params, headers=self.__headers__)
     return self.response(result)
예제 #13
0
 def api_settlement(self, data):
     """
     Method for create split order
     :param data: split order data
     :return: api response
     """
     if self.api.api_protocol != "2.0":
         raise Exception("This method allowed only for v2.0")
     params = {
         "order_type": data.get("order_type", "settlement"),
         "order_id": data.get("order_id") or helper.generate_order_id(),
         "operation_id": data.get("operation_id", ""),
         "receiver": data.get("receiver", []),
     }
     helper.check_data(params)
     params.update(data)
     return "/settlement/", params
예제 #14
0
 def api_reports(self, data):
     """
     Method to get payment reports from date range
     :param data: date range
     :return: api response
     """
     params = {
         "date_from": data.get("date_from", ""),
         "date_to": data.get("date_to", ""),
     }
     helper.check_data(params)
     """
     from api only one response if data invalid "General Decline"
     """
     self._validate_reports_date(params)
     params.update(data)
     return "/reports/", params
예제 #15
0
 def api_p2pcredit(self, data):
     """
     Method P2P card credit
     :param data: order data
     :return: api response
     """
     self.order_id = data.get("order_id") or helper.generate_order_id()
     order_desc = data.get("order_desc") or helper.get_desc(self.order_id)
     params = {
         "order_id": self.order_id,
         "order_desc": order_desc,
         "amount": data.get("amount", ""),
         "currency": data.get("currency", ""),
     }
     helper.check_data(params)
     params.update(data)
     return "/p2pcredit/", params
예제 #16
0
    def _required(self, data):
        """
        Required data to send
        :param data:
        :return: parameters to send
        """
        self.order_id = data.get("order_id", helper.generate_order_id())
        order_desc = data.get("order_desc", helper.get_desc(self.order_id))
        params = {
            "order_id": self.order_id,
            "order_desc": order_desc,
            "amount": data.get("amount", ""),
            "currency": data.get("currency", ""),
        }
        helper.check_data(params)
        params.update(data)

        return params
예제 #17
0
    def _required(self, data):
        """
        Required data to send
        :param data:
        :return: parameters to send
        """
        self.order_id = data.get('order_id') or helper.generate_order_id()
        order_desc = data.get('order_desc') or helper.get_desc(self.order_id)
        params = {
            'order_id': self.order_id,
            'order_desc': order_desc,
            'amount': data.get('amount', ''),
            'currency': data.get('currency', '')
        }
        helper.check_data(params)
        params.update(data)

        return params
예제 #18
0
 def api_recurring(self, data):
     """
     Method for recurring payment
     :param data: order data
     :return: api response
     """
     self.order_id = data.get("order_id") or helper.generate_order_id()
     order_desc = data.get("order_desc") or helper.get_desc(self.order_id)
     params = {
         "order_id": self.order_id,
         "order_desc": order_desc,
         "amount": data.get("amount", ""),
         "currency": data.get("currency", ""),
         "rectoken": data.get("rectoken", ""),
     }
     helper.check_data(params)
     params.update(data)
     return "/recurring/", params
예제 #19
0
 def reports(self, data):
     """
     Method to get payment reports from date range
     :param data: date range
     :return: api response
     """
     path = '/reports/'
     params = {
         'date_from': data.get('date_from', ''),
         'date_to': data.get('date_to', '')
     }
     helper.check_data(params)
     """
     from api only one response if data invalid "General Decline"
     """
     self._validate_reports_date(params)
     params.update(data)
     result = self.api.post(path, data=params, headers=self.__headers__)
     return self.response(result)
예제 #20
0
 def p2pcredit(self, data):
     """
     Method P2P card credit
     :param data: order data
     :return: api response
     """
     path = '/p2pcredit/'
     self.order_id = data.get('order_id') or helper.generate_order_id()
     order_desc = data.get('order_desc') or helper.get_desc(self.order_id)
     params = {
         'order_id': self.order_id,
         'order_desc': order_desc,
         'amount': data.get('amount', ''),
         'currency': data.get('currency', '')
     }
     helper.check_data(params)
     params.update(data)
     result = self.api.post(path, data=params, headers=self.__headers__)
     return self.response(result)
예제 #21
0
 def api_step_one(self, data):
     """
     Accept purchase Pcidss step one
     :param data: order data
     :return: payment result or step two data
     """
     self.order_id = data.get("order_id") or helper.generate_order_id()
     order_desc = data.get("order_desc") or helper.get_desc(self.order_id)
     params = {
         "order_id": self.order_id,
         "order_desc": order_desc,
         "currency": data.get("currency", ""),
         "amount": data.get("amount", ""),
         "card_number": data.get("card_number", ""),
         "cvv2": data.get("cvv2", ""),
         "expiry_date": data.get("expiry_date", ""),
     }
     helper.check_data(params)
     params.update(data)
     return "/3dsecure_step1/", params
예제 #22
0
    def settlement(self, data):
        """
        Method for create split order
        :param data: split order data
        :return: api response
        """
        if self.api.api_protocol != '2.0':
            raise Exception('This method allowed only for v2.0')
        path = '/settlement/'
        params = {
            'order_type': data.get('order_type', 'settlement'),
            'order_id': data.get('order_id') or helper.generate_order_id(),
            'operation_id': data.get('operation_id', ''),
            'receiver': data.get('receiver', [])
        }
        helper.check_data(params)
        params.update(data)
        result = self.api.post(path, data=params, headers=self.__headers__)

        return self.response(result)
예제 #23
0
 def recurring(self, data):
     """
     Method for recurring payment
     :param data: order data
     :return: api response
     """
     path = '/recurring/'
     self.order_id = data.get('order_id') or helper.generate_order_id()
     order_desc = data.get('order_desc') or helper.get_desc(self.order_id)
     params = {
         'order_id': self.order_id,
         'order_desc': order_desc,
         'amount': data.get('amount', ''),
         'currency': data.get('currency', ''),
         'rectoken': data.get('rectoken', '')
     }
     helper.check_data(params)
     params.update(data)
     result = self.api.post(path, data=params, headers=self.__headers__)
     return self.response(result)
예제 #24
0
    def subscription(self, data):
        """
        Method to generate checkout url with calendar
        :param data: order data
        data = {
            "currency": "UAH", -> currency ('UAH', 'RUB', 'USD')
            "amount": 10000, -> amount of the order (int)
            "recurring_data": {
                "every": 1, -> frequency of the recurring order (int)
                "amount": 10000, -> amount of the recurring order (int)
                "period": 'month', -> period of the recurring order ('day', 'month', 'year')
                "start_time": '2020-07-24', -> start date of the recurring order ('YYYY-MM-DD')
                "readonly": 'y', -> possibility to change parameters of the recurring order by user ('y', 'n')
                "state": 'y' -> default state of the recurring order after opening url of the order ('y', 'n')
            }
        }
        :return: api response
        """
        if self.api.api_protocol != '2.0':
            raise Exception('This method allowed only for v2.0')
        path = '/checkout/url/'
        recurring_data = data.get('recurring_data', '')
        subscription_data = {
            'subscription': 'Y',
            'recurring_data': {
                'start_time': recurring_data.get('start_time', ''),
                'amount': recurring_data.get('amount', ''),
                'every': recurring_data.get('every', ''),
                'period': recurring_data.get('period', ''),
                'readonly': recurring_data.get('readonly', ''),
                'state': recurring_data.get('state', '')
            }
        }

        helper.check_data(subscription_data['recurring_data'])
        self._validate_recurring_data(subscription_data['recurring_data'])
        subscription_data.update(data)
        params = self._required(subscription_data)
        result = self.api.post(path, data=params, headers=self.__headers__)

        return self.response(result)
예제 #25
0
 def step_one(self, data):
     """
     Accept purchase Pcidss step one
     :param data: order data
     :return: payment result or step two data
     """
     path = '/3dsecure_step1/'
     self.order_id = data.get('order_id') or helper.generate_order_id()
     order_desc = data.get('order_desc') or helper.get_desc(self.order_id)
     params = {
         'order_id': self.order_id,
         'order_desc': order_desc,
         'currency': data.get('currency', ''),
         'amount': data.get('amount', ''),
         'card_number': data.get('card_number', ''),
         'cvv2': data.get('cvv2', ''),
         'expiry_date': data.get('expiry_date', '')
     }
     helper.check_data(params)
     params.update(data)
     result = self.api.post(path, data=params, headers=self.__headers__)
     return self.response(result)
예제 #26
0
    def api_subscription(self, data):
        """
        Method to generate checkout url with calendar
        :param data: order data
        data = {
            "currency": "UAH", -> currency ('UAH', 'RUB', 'USD')
            "amount": 10000, -> amount of the order (int)
            "recurring_data": {
                "every": 1, -> frequency of the recurring order (int)
                "amount": 10000, -> amount of the recurring order (int)
                "period": 'month', -> period of the recurring order ('day', 'month', 'year')
                "start_time": '2020-07-24', -> start date of the recurring order ('YYYY-MM-DD')
                "readonly": 'y', -> possibility to change parameters of the recurring order by user ('y', 'n')
                "state": 'y' -> default state of the recurring order after opening url of the order ('y', 'n')
            }
        }
        """
        if self.api.api_protocol != "2.0":
            raise Exception("This method allowed only for v2.0")
        recurring_data = data.get("recurring_data", "")
        subscription_data = {
            "subscription": "Y",
            "recurring_data": {
                "start_time": recurring_data.get("start_time", ""),
                "amount": recurring_data.get("amount", ""),
                "every": recurring_data.get("every", ""),
                "period": recurring_data.get("period", ""),
                "readonly": recurring_data.get("readonly", ""),
                "state": recurring_data.get("state", ""),
            },
        }

        helper.check_data(subscription_data["recurring_data"])
        self._validate_recurring_data(subscription_data["recurring_data"])
        subscription_data.update(data)
        return "/checkout/url/", self._required(subscription_data)