第一次做 bonapitit的SDK !可能也不能叫SDK,功能并不全面不喜勿喷。由于市面上并没有Python bonapitit的开源项目,正好工作中遇到了,于是写了一个简陋的包,希望能对对接跨境电商的开发者有所帮助,有关bonapitit账号注册申请相关,请参照bonapitit官方参考文档
不喜欢我的风格的可以删掉,请不要使用:
所属Client | 包含方法 | 说明 |
TokenClient | getFetchTonken | |
getTonkenStatus | ||
BonanzaClient | getUser | |
getOrders | ||
updateInventory | 暂时只支持更新单个库存,传值item请出入列表里面包含一个数值 | |
addFixedPriceItem | ||
reviseFixedPriceItem | ||
endFixedPriceItem | ||
getBooth | ||
getBoothItems | ||
updateBooth | ||
completeSale | ||
getCategories | ||
getCategoryTraits | ||
getUnlistedItem |
调用TokenClient里的getFetchTonken(),获取到token值,details.autoForward()方法可以直接帮助你直接打开本机默认浏览器跳转到绑定验证页面,非常人性化
from bonapitit import TokenClient
if __name__ == '__main__':
DEV_NAME = 'Pk4yi********' # 开发者名
CERT_NAME = '4EuJ0*******' # 证书名
# 如果没有绑定用户,先获取token
# 实例化TokenClient对象
token_client = TokenClient(dev_name=DEV_NAME, cert_name=CERT_NAME)
response = token_client.getFetchTonken()
# 自动跳转到关联 URI
response.details.autoForward()
# 获取到token值,你喜欢存哪就存哪
FETCH_TOKEN = response.details.token
本代码块执行后的结果(打印内容就是你所绑定后的账号对应的token值):
跳转到的绑定页面:
同时,你可以在开发者账号的后台看到:
此处我就展示一个getOrders()
from bonapitit import BonanzaClient
if __name__ == '__main__':
DEV_NAME = 'Pk4yi********' # 开发者名
CERT_NAME = '4EuJ0*******' # 证书名
FETCH_TOKEN = 'L8r*******' # 对应卖家tonke值
# 实例化BonanzaClient
bonanza_client = BonanzaClient(dev_name=DEV_NAME, cert_name=CERT_NAME, fetch_token=FETCH_TOKEN)
response = bonanza_client.getOrders()
# 直接查看返回的response内容
print(response.content)
直接答应出来的结果如下:
{
'ack': 'Success',
'version': '1.1.2',
'timestamp': '2021-06-23T07:01:49.000Z',
'getOrdersResponse': {
'orderArray': [{
'order': {
'amountPaid': '17.83',
'amountSaved': 0.0,
'buyerCheckoutMessage': '',
'buyerUserID': 113456113,
'buyerUserName': 'bonzusername',
'checkoutStatus': {
'status': 'Complete'
},
'createdTime': '2021-06-23T02:25:46Z',
'creatingUserRole': 'Buyer',
'currencyCode': 'USD',
'itemArray': [{
'item': {
'itemID': 123456,
'parentItemID': 123456789,
'sellerInventoryID': 'GM1-005',
'sku': 'GM1-005',
'title': 'Kit STIHL String Trimmers Brush Cutter FS200R FS250 4126-713-3100',
'price': '16.82',
'thumbnailURL': 'https://images.bonanzastatic.com/afu/thumbtall.jpg',
'quantity': 1,
'ebayId': '123456',
'mpn': 'GM1-005',
'upc': '770338821215',
'personalizedText': []
}
}],
'orderID': 12234566,
'orderStatus': 'Shipped',
'subtotal': 16.82,
'taxAmount': 1.01,
'telephoneNumber': None,
'total': '17.83',
'transactionArray': {
'transaction': {
'buyer': {
'email': 'Unavailable'
},
'providerName': 'Stripe',
'providerID': 'pi_1J5LsvEd****TeTt5b7KrvKN',
'finalValueFee': '3.2'
}
},
'paidTime': '2021-06-23T02:33:17Z',
'shippedTime': '2021-06-23T03:36:33Z',
'shippingAddress': {
'addressID': 12345133,
'cityName': 'Manistique ',
'country': 'US',
'countryName': 'United States',
'name': 'xiayaxia',
'postalCode': '49854',
'stateOrProvince': 'MI',
'street1': '8841 W Halle DR',
'street2': ''
},
'shippingDetails': {
'insuranceFee': 0,
'amount': '0.0',
'servicesArray': [],
'shippingService': 'Standard shipping',
'shipmentTrackingNumber': {
'1074506235': ['930012022410001111037835507']
},
'notes': None
}
}
}],
'hasMoreOrders': 'false',
'paginationResult': {
'totalNumberOfEntries': 1,
'totalNumberOfPages': 1
},
'pageNumber': 1
}
}
这显然并没有什么特殊,所以接下来还有更精彩的,细心的朋友可能发现前面准备工作中调用的内置属性用法有些不同!
没错,这是最简陋的方法,高级用法接下来一一展示,把conten改为orders(其他为details)后再调用content:
from bonapitit import BonanzaClient
if __name__ == '__main__':
DEV_NAME = 'Pk4yi********' # 开发者名
CERT_NAME = '4EuJ0*******' # 证书名
FETCH_TOKEN = 'L8r*******' # 对应卖家tonke值
# 实例化BonanzaClient
bonanza_client = BonanzaClient(dev_name=DEV_NAME, cert_name=CERT_NAME, fetch_token=FETCH_TOKEN)
response = bonanza_client.getOrders()
# 直接查看返回的response内容
print(response.orders.content)
就像你们看到的一样,内容变成了我们想要的订单列表了,瞬间杂乱的数据排除在外了
[{
'order': {
'amountPaid': '17.83',
'amountSaved': 0.0,
'buyerCheckoutMessage': '',
'buyerUserID': 113456113,
'buyerUserName': 'bonzusername',
'checkoutStatus': {
'status': 'Complete'
},
'createdTime': '2021-06-23T02:25:46Z',
'creatingUserRole': 'Buyer',
'currencyCode': 'USD',
'itemArray': [{
'item': {
'itemID': 123456,
'parentItemID': 123456789,
'sellerInventoryID': 'GM1-005',
'sku': 'GM1-005',
'title': 'Kit STIHL String Trimmers Brush Cutter FS200R FS250 4126-713-3100',
'price': '16.82',
'thumbnailURL': 'https://images.bonanzastatic.com/afu/thumbtall.jpg',
'quantity': 1,
'ebayId': '123456',
'mpn': 'GM1-005',
'upc': '770338821215',
'personalizedText': []
}
}],
'orderID': 12234566,
'orderStatus': 'Shipped',
'subtotal': 16.82,
'taxAmount': 1.01,
'telephoneNumber': None,
'total': '17.83',
'transactionArray': {
'transaction': {
'buyer': {
'email': 'Unavailable'
},
'providerName': 'Stripe',
'providerID': 'pi_1J5LsvEd****TeTt5b7KrvKN',
'finalValueFee': '3.2'
}
},
'paidTime': '2021-06-23T02:33:17Z',
'shippedTime': '2021-06-23T03:36:33Z',
'shippingAddress': {
'addressID': 12345133,
'cityName': 'Manistique ',
'country': 'US',
'countryName': 'United States',
'name': 'xiayaxia',
'postalCode': '49854',
'stateOrProvince': 'MI',
'street1': '8841 W Halle DR',
'street2': ''
},
'shippingDetails': {
'insuranceFee': 0,
'amount': '0.0',
'servicesArray': [],
'shippingService': 'Standard shipping',
'shipmentTrackingNumber': {
'1074506235': ['930012022410001111037835507']
},
'notes': None
}
}
}]
看到这的你们一定能猜到接下来是什么了——没错,就是你们想要的直接可遍历的order。将代码改成下面这样:
from bonapitit import BonanzaClient
if __name__ == '__main__':
DEV_NAME = 'Pk4yi********' # 开发者名
CERT_NAME = '4EuJ0*******' # 证书名
FETCH_TOKEN = 'L8r*******' # 对应卖家tonke值
# 实例化BonanzaClient
bonanza_client = BonanzaClient(dev_name=DEV_NAME, cert_name=CERT_NAME, fetch_token=FETCH_TOKEN)
response = bonanza_client.getOrders()
# 直接查看返回的response内容
for i in response.orders:
print(i.order.content)
{
'amountPaid': '17.83',
'amountSaved': 0.0,
'buyerCheckoutMessage': '',
'buyerUserID': 113456113,
'buyerUserName': 'bonzusername',
'checkoutStatus': {
'status': 'Complete'
},
'createdTime': '2021-06-23T02:25:46Z',
'creatingUserRole': 'Buyer',
'currencyCode': 'USD',
'itemArray': [{
'item': {
'itemID': 123456,
'parentItemID': 123456789,
'sellerInventoryID': 'GM1-005',
'sku': 'GM1-005',
'title': 'Kit STIHL String Trimmers Brush Cutter FS200R FS250 4126-713-3100',
'price': '16.82',
'thumbnailURL': 'https://images.bonanzastatic.com/afu/thumbtall.jpg',
'quantity': 1,
'ebayId': '123456',
'mpn': 'GM1-005',
'upc': '770338821215',
'personalizedText': []
}
}],
'orderID': 12234566,
'orderStatus': 'Shipped',
'subtotal': 16.82,
'taxAmount': 1.01,
'telephoneNumber': None,
'total': '17.83',
'transactionArray': {
'transaction': {
'buyer': {
'email': 'Unavailable'
},
'providerName': 'Stripe',
'providerID': 'pi_1J5LsvEd****TeTt5b7KrvKN',
'finalValueFee': '3.2'
}
},
'paidTime': '2021-06-23T02:33:17Z',
'shippedTime': '2021-06-23T03:36:33Z',
'shippingAddress': {
'addressID': 12345133,
'cityName': 'Manistique ',
'country': 'US',
'countryName': 'United States',
'name': 'xiayaxia',
'postalCode': '49854',
'stateOrProvince': 'MI',
'street1': '8841 W Halle DR',
'street2': ''
},
'shippingDetails': {
'insuranceFee': 0,
'amount': '0.0',
'servicesArray': [],
'shippingService': 'Standard shipping',
'shipmentTrackingNumber': {
'1074506235': ['930012022410001111037835507']
},
'notes': None
}
}
好像这并没什么用是吧? **别急!**下面才是你们想要的——直接拿到order里面的单个数据:
from bonapitit import BonanzaClient
if __name__ == '__main__':
DEV_NAME = 'Pk4yi********' # 开发者名
CERT_NAME = '4EuJ0*******' # 证书名
FETCH_TOKEN = 'L8r*******' # 对应卖家tonke值
# 实例化BonanzaClient
bonanza_client = BonanzaClient(dev_name=DEV_NAME, cert_name=CERT_NAME, fetch_token=FETCH_TOKEN)
response = bonanza_client.getOrders()
# 直接查看返回的response内容
for i in response.orders:
print('订单ID:',i.order.order_id)
print('订单状态:',i.order.order_status)
print('总付款金额:',i.order.amount_paid)
无需自己在写代码,就可直接将数据逐个取出,装入到数据库中,是不是很方便,可能就我自己觉得方便
github
gitee
关于pip的支持,看后续有没心情去研究上传pypi吧…