对接wish平台api获取帐号信息
与wish api对接
- 实现 wish Authentication 认证参考 how to authenticate
- 注册Private App 生成
Client Id
跟Client Secret
之后就卡在这里,不知道如何获得Access Token
在微信上是直接定义toekn的,质询了@csufuyi 让我上githun 找现成的封包,反复读api文档,在github找到了 OAuth2 Python Example 才有点概念, - 首先要授权app权限,之后会收到一个Authorization Code,授权之后code会发送到,
Redirect URI
在pythonanywhere 建一个urlhttps://xiaodian.pythonanywhere.com/wish_callback
code会返回显示在这里。 - 获取的code 之后 可以用curl 或者python requests 来获取,
- 注册Private App 生成
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格式,然后有两种处理方式,
- 保存入mysql,flask直接从mysql database 读取
直接读取api信息,然后传输到网页端。
flask 如何跟mysql链接,写入数据?
- Flask-MySQLdb 插件.
- Flask-SQLAlchemy 插件。
搜索这文章Developing a Web Application Using Flask 了解输入写入数据对接mysql
- 安装mysql Installing MySQL on OS X Using Native Packages
安装插件
- 配置mac与mysql环境变量
pip install MySQL-python
pip install flask-mysql
把获取的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.
- orders 页面