code: def call(self, uri, params=None, token=None, risk_token=None, client_ip=None):
          
  
          headers = {'Content-Type': 'application/json',
                     'User-Agent': 'WePay Python SDK'}
          url = self.api_endpoint + uri
  
          if self.access_token or token:
              headers['Authorization'] = 'Bearer ' + \
                  (token if token else self.access_token)
  
          if self.api_version:
              headers['Api-Version'] = self.api_version
  
          if risk_token:
              headers['WePay-Risk-Token'] = risk_token
  
          if client_ip:
              headers['Client-IP'] = client_ip
  
          if params:
              params = json.dumps(params)
  
          try:
              response = self.requests.post(
                  url, data=params, headers=headers,
                  timeout=self.request_timeout)
              return response.json()
          except:
              if 400 <= response.status_code <= 599:
                  raise Exception('Unknown error. Please contact support@wepay.com')
docs: Calls wepay.com/v2/``uri`` with ``params`` and returns the JSON
          response as a python dict. The optional token parameter will override
          the instance's access_token if it is set.
  
          :param str uri: The URI on the API endpoint to call.
          :param dict params: The parameters to pass to the URI.
          :param str token: Optional override for this ``WePay`` object's access
              token.
          :param str risk_token: Optional WePay-Risk-Token for this API call.
          :param str client_ip: Optional Client-IP for this API call.