'Wrapper method for executing all API commands over HTTP. This method is
further used to implement wrapper methods listed here:
https://www.x.com/docs/DOC-1374
``method`` must be a supported NVP method listed at the above address.
``kwargs`` the actual call parameters'

def _call(self, method, **kwargs):

    post_params = self._get_call_params(method, **kwargs)
    payload = post_params['data']
    api_endpoint = post_params['url']
    if logger.isEnabledFor(logging.DEBUG):
        logger.debug(('PayPal    NVP    Query    Key/Vals:\n%s' % pformat(payload)))
    http_response = requests.post(**post_params)
    response = PayPalResponse(http_response.text, self.config)
    logger.debug(('PayPal    NVP    API    Endpoint:    %s' % api_endpoint))
    if (not response.success):
        logger.error('A    PayPal    API    error    was    encountered.')
        safe_payload = dict(((p, (('X' * len(v)) if (p in self.__credentials) else v)) for (p, v) in payload.items()))
        logger.error(('PayPal    NVP    Query    Key/Vals    (credentials    removed):\n%s' % pformat(safe_payload)))
        logger.error('PayPal    NVP    Query    Response')
        logger.error(response)
        raise PayPalAPIResponseError(response)
    return response
