code: def _sign(self,params):
          '''
          Generate API sign code
          '''
          for k, v in params.iteritems():
              if type(v) == int: v = str(v)
              elif type(v) == float: v = '%.2f'%v
              elif type(v) in (list, set): 
                  v = ','.join([str(i) for i in v])
              elif type(v) == bool: v = 'true' if v else 'false'
              elif type(v) == datetime.datetime: v = v.strftime('%Y-%m-%d %X')
              if type(v) == unicode:
                  params[k] = v.encode('utf-8')
              else:
                  params[k] = v
          src = self.APP_SECRET + ''.join(["%s%s" % (k, v) for k, v in sorted(params.iteritems())])
          return md5(src).hexdigest().upper(f _sign(self,params):
          '''
          Generate API sign code
          '''
          for k, v in params.iteritems():
              if type(v) == int: v = str(v)
              elif type(v) == float: v = '%.2f'%v
              elif type(v) in (list, set): 
                  v = ','.join([str(i) for i in v])
              elif type(v) == bool: v = 'true' if v else 'false'
              elif type(v) == datetime.datetime: v = v.strftime('%Y-%m-%d %X')
              if type(v) == unicode:
                  params[k] = v.encode('utf-8')
              else:
                  params[k] = v
          src = self.APP_SECRET + ''.join(["%s%s" % (k, v) for k, v in sorted(params.iteritems())])
          return md5(src).hexdigest().upper()
docs: Generate API sign code