bonapitit-bonanza-python-sdk

Bonapitit-bonanza-Python-SDK

  • 简介
    • 关于规范编码
    • 目前已实现的方法
    • 准备工作:关联开发者账号和卖家账号(已关联过的请直接开始使用)
    • 开始正式使用
      • 简单的示例
      • 你以为就这么简单
      • 更好用的来了
    • 源码仓库

简介

第一次做 bonapitit的SDK !可能也不能叫SDK,功能并不全面不喜勿喷。由于市面上并没有Python bonapitit的开源项目,正好工作中遇到了,于是写了一个简陋的包,希望能对对接跨境电商的开发者有所帮助,有关bonapitit账号注册申请相关,请参照bonapitit官方参考文档

关于规范编码

不喜欢我的风格的可以删掉,请不要使用:

  1. 类名 :大驼峰;
  2. 函数名 :小驼峰;
  3. 变量名 :下划线;

目前已实现的方法

<
所属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值):

bonapitit-bonanza-python-sdk_第1张图片

跳转到的绑定页面:

bonapitit-bonanza-python-sdk_第2张图片

同时,你可以在开发者账号的后台看到:

bonapitit-bonanza-python-sdk_第3张图片

开始正式使用

简单的示例

此处我就展示一个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)

bonapitit-bonanza-python-sdk_第4张图片

无需自己在写代码,就可直接将数据逐个取出,装入到数据库中,是不是很方便,可能就我自己觉得方便

源码仓库

github

gitee

关于pip的支持,看后续有没心情去研究上传pypi吧…

你可能感兴趣的:(python,api)