对接wish平台api获取帐号信息

wish api对接

  • 实现 wish Authentication 认证参考 how to authenticate
    • 注册Private App 生成 Client IdClient Secret 之后就卡在这里,不知道如何获得Access Token 在微信上是直接定义toekn的,质询了@csufuyi 让我上githun 找现成的封包,反复读api文档,在github找到了 OAuth2 Python Example 才有点概念,
    • 首先要授权app权限,之后会收到一个Authorization Code,授权之后code会发送到,Redirect URI 在pythonanywhere 建一个url https://xiaodian.pythonanywhere.com/wish_callback code会返回显示在这里。
    • 获取的code 之后 可以用curl 或者python requests 来获取,
    import requests

    client_id = '56652ced7845542827000000'
    client_secret = '03baa86588b74238bcad0b1edb000000'
    code = '0ff5dc5d9a874db5bee86e2514bb9044'
    grant_type = 'authorization_code'
    redirect_uri = 'https://xiaodian.pythonanywhere.com/wish_callback'

    payload = {'client_id': client_id,
               'client_secret': client_secret,
               'code': code,
               'grant_type':grant_type,
               'redirect_uri':redirect_uri}

    r = requests.get('https://sandbox.merchant.wish.com/api/v2/oauth/access_token', params=payload)
    print (r.text)

返回了 access_token":"6762677074414778aef8581cd8c7b49e

在ipython下测试 token是否正确

import requests

r = requests.get('https://sandbox.merchant.wish.com/api/v2/auth_test?access_token=6762677074414778aef8581cd8c7b49e')

r.text

u'{"message":"","code":0,"data":{"merchant_username":"cxiaodian","merchant_id":"566053f933457a5ebae579fc","success":true}}'

返回了用户名跟id 说明token正确

从终端读取信息

先从终端开始,逐步扩展到flask框架搜索查询,存储。

  • 从终端读取product 信息
  • list all product 信息
  • retrieve order

原来很简单,只需定义好各个prodcut 跟 order id 跟url 就可以了,在用while 循环调用,其他的就类似1w作业

第一次在终端查这些信息,感觉特酷。

如何与flask对接

从api读取的数据是json格式,然后有两种处理方式,

  1. 保存入mysql,flask直接从mysql database 读取
  2. 直接读取api信息,然后传输到网页端。

  3. flask 如何跟mysql链接,写入数据?

搜索这文章Developing a Web Application Using Flask 了解输入写入数据对接mysql

  • 安装mysql Installing MySQL on OS X Using Native Packages
  • 安装插件

  • 把获取的json 转换成dict 格式,并提取一些信息JSON,在ipython 下做测测试

      In [1]: access_token = '6762677074414778aef8581cd8c7b49e'
      In [2]: parent_sku = 'SKU_1234'
      In [3]: url = 'https://sandbox.merchant.wish.com/api/v2/product'
      In [4]: payload = {'parent_sku':parent_sku, 'access_token':access_token}
      In [5]: result  = json.loads(r.text)
      In [6]: print(result['data']['Product']['id']) #提取产品ID信息
    
      输出
    
      566684d02b296c104b08dc6f
    
  • 如何用flask与api对接读取数据,并传回网页端

先用requests 获取api信息,get 一个id号出来,再把获取的信息传输给route,并显示到网页端。

def get_wish_data():
    headers = {'Authorization': 'Bearer 6762677074414778aef8581cd8c7b49e'}
    url = 'https://sandbox.merchant.wish.com/api/v2/product'
    payload = {'parent_sku': 'SKU_1234'}
    r = requests.get(url, headers=headers, params=payload)
    result = json.loads(r.text)
    id_data  = (result['data']['Product']['id'])
    return id_data



    @app.route('/wish')
        def index():
        return "SKU_134 Product id is : %s" % get_wish_data()

返回正确的SKU_1234 Product id is : 566684d02b296c104b08dc6f

前端的布局

  • 目前只需要两个页面,
    • orders 页面
      • 页面内容:日期 Date,Order Id, Days to Fulfill,sku,Variation,Price,Cost,Shipping,Shipping Cost,Quantity, Total Cost, ship to ,
    • product 页面
      • 页面内容:Thumbnail,Product ID, Product Name, Parent SKU,SKU, Price, Price, Inventory, Enabled, Last Updated.