美文网首页
python 淘宝OPEN API 调用示例

python 淘宝OPEN API 调用示例

作者: 大华日记 | 来源:发表于2018-09-06 13:42 被阅读464次

    官方的淘宝SDK是python2,而且调用经常出问题,于是根据算法,自行封装了个。
    可以支持大部分API

    import time
    import urllib
    import hashlib
    import urllib.parse
    import urllib.request
    
    # 这里填写你申请到的APPkey
    app_key = 'xxxxxx'
    appSecret = 'xxxxxx'
    
    #排序
    def ksort(d):
        return [(k, d[k]) for k in sorted(d.keys())]
    
    #MD5加密
    def md5(s, raw_output=False):
        """Calculates the md5 hash of a given string"""
        res = hashlib.md5(s.encode())
        if raw_output:
            return res.digest()
        return res.hexdigest()
    
    #计算sign
    def createSign(paramArr):
        sign = appSecret
        paramArr = ksort(paramArr)
        paramArr = dict(paramArr)
        for k, v in paramArr.items():
            if k != '' and v != '':
                sign += k + v
        sign += appSecret
        sign = md5(sign).upper()
        return sign
    
    #参数排序
    def createStrParam(paramArr):
        strParam = ''
        for k, v in paramArr.items():
            if k != '' and v != '':
                strParam += k + '=' + urllib.parse.quote_plus(v) + '&'
        return strParam
    
    #高效API调用示例
    def gxapi(item_id, adzone_id, site_id, session):
        # 请求参数,根据API文档修改
        postparm = {'item_id': item_id,
                    'adzone_id': adzone_id,
                    'site_id': site_id,
                    'session': session,
                    'method': 'taobao.tbk.privilege.get'
                    }
        # 公共参数,一般不需要修改
        paramArr = {'app_key': app_key,
                    'v': '2.0',
                    'sign_method': 'md5',
                    'format': 'json',
                    'timestamp': time.strftime('%Y-%m-%d %H:%M:%S')
                    }
    
        paramArr = {**paramArr, **postparm}
    
        sign = createSign(paramArr)
        strParam = createStrParam(paramArr)
        strParam += 'sign=' + sign
        url = 'http://gw.api.taobao.com/router/rest?' + strParam
        res = urllib.request.urlopen(url).read()
        return res
    
    
    # mm_17398164_8812194_29632544
    if __name__ == '__main__':
        res = gxapi('570075443473', '29632544', '8812194',                '70000100c0744973c591154b784bb59595d15bc7706a104738d1f13c665d8348dae655b82248874')
        print(res)
    
    

    相关文章

      网友评论

          本文标题:python 淘宝OPEN API 调用示例

          本文链接:https://www.haomeiwen.com/subject/qgcxgftx.html