Beispiel #1
0
 def _on_subscribe(self, client, userdata, mid, granted_qos):
     """
     订阅成功回调
     """
     log_info('on_subscribe')
     if self.subscribe_callback is not None:
         self.subscribe_callback(0)
Beispiel #2
0
 def _on_unsubscribe(self, client, userdata, mid):
     """
     订阅成功回调
     """
     log_info('on_unsubscribe')
     if self.subscribe_callback is not None:
         self.subscribe_callback(-1)
Beispiel #3
0
    def _build_request_info(url, method, params, files):
        """
        根据请求方式构造请求头和请求参数
        :return: header 请求头 params 请求参数
        """
        header = {
            'authorization': ApiRequest.api_key,
            "sdk_version": 'python_v' + ApiRequest.version,
            'signature': ''
        }

        params = pop_empty_value(params)

        plain_text = url

        if params:
            if 'post' == method and not files:
                plain_text = plain_text + json.dumps(params)
            else:
                plain_text = plain_text + get_plain_text(params)

        if not ApiRequest.private_key:
            raise RuntimeError('privite_key is none')

        flag, cipher_text = rsa_sign(ApiRequest.private_key, plain_text,
                                     'utf-8')

        if not flag:
            log_error('request to {}, sign error {} '.format(url, cipher_text))

        header.update({'signature': cipher_text})
        log_info('request to {}, param is {}, \nhead is {}'.format(
            url, params, header))

        return header, params
def get_message_manager():
    expire_time = 30_000_000_000
    data = request_post(pay_message_token, {'expire_time': expire_time})

    if 'succeeded' != data.get('status'):
        log_info('token request failed')

    return AdapayMessage(adapay.api_key, data.get('token', ''))
Beispiel #5
0
    def _on_connect(self, client, userdata, flags, resp_code):
        """
        建立长连接成功回调
        """
        log_info('connected with result code ' + str(resp_code))

        if self.connect_callback is not None:
            self.connect_callback(resp_code)

        if resp_code == 0:
            client.subscribe(self.topic, 0)
Beispiel #6
0
    def _on_message(self, client, userdata, messages):
        """
        接收到交易结果回调
        """
        message_str = messages.payload.decode('utf-8')
        log_info('on_msg_receive:' + message_str)

        if self.received_callback is not None:
            try:
                msg_dict = json.loads(message_str)
                self.received_callback(msg_dict)
            except Exception as e:
                log_error(str(e))
                log_error('pay message loads error:' + message_str)
Beispiel #7
0
    def _on_disconnect(self, client, userdata, resp_code):
        """
        :param resp_code:
         长连接链接失败回调
        1	伪造 Token,不可解析
        2	Token 已经过期
        3	Token 已经被吊销
        4	资源和 Token 不匹配
        5	权限类型和 Token 不匹配
        8	签名不合法
        -1	帐号权限不合法

        :return:
        """
        log_info('unexpected disconnection %s' % resp_code)

        if self.connect_callback is not None:
            self.connect_callback(resp_code)
Beispiel #8
0
    def _request(method, files=None):
        """
        执行请求
        :param method: 请求方法类型

        :param files: 上传的文件
        :return: 网路请求返回的数据
        """

        request_url = ApiRequest.base_url + ApiRequest.url

        header, params = ApiRequest._build_request_info(
            request_url, method, ApiRequest.request_params, files)

        http_method = getattr(requests, method or 'post')

        if files:
            resp = http_method(request_url,
                               data=params,
                               files=files,
                               timeout=ApiRequest.connect_timeout,
                               headers=header)

        elif method == 'post':
            resp = http_method(request_url,
                               json=params,
                               files=files,
                               timeout=ApiRequest.connect_timeout,
                               headers=header)

        else:
            resp = http_method(request_url,
                               params,
                               timeout=ApiRequest.connect_timeout,
                               headers=header)

        log_info('request to {}, resp is {}'.format(request_url, resp.text))

        return ApiRequest._build_return_data(resp)