cainiao

Cainiao Waybill SDK.


License
MIT
Install
pip install cainiao==0.2.0

Documentation

Cainiao

适用于菜鸟电子面单服务的非官方Python SDK。

Install

pip install cainiao

WayBill

  1. 第一种使用方法

    import asyncio
    
    from cainiao import WayBillClient, WayBill
    from cainiao.templates import WayBillGetForm, Sender, PackageInfo, Recipient
    
    
    sender = Sender(**{
        "cpCode": "YTO",
        "name": "XXX",
        "province": "XX省",
        "city": "XX市",
        "district": "XX区",
        "detail": "XX街道",
        "mobile": "1XXXXXXXXXX",
    })
    
    recipient = Recipient(**{
        "name": "XXX",
        "province": "XX省",
        "city": "XX市",
        "district": "XX区",
        "detail": "XX街道",
        "mobile": "1XXXXXXXXXX",
        "tradeOrderList": [str(item) for item in range(10)],
        "orderChannelsType": "OTHERS",
        "templateUrl": ("http://cloudprint.cainiao.com"
                        "/template/standard/111/12003"),
        "packageInfo": PackageInfo(),
        "userId": "520",
    })
    
    waybill_get_form = WayBillGetForm(sender=sender, recipients=[recipient])
    
    
    async def main():
        async with WayBillClient() as session:
            waybill = WayBill(
                url='http://link.cainiao.com/gateway/link.do',
                token='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
                appsecret='yyyyyyyyyyyyyyyyyyyyy',
                session=session
            )
            print(await waybill.tms_waybill_get(data=waybill_get_form))
            print(await waybill.subscription_query())
            print(await waybill.cloudprint_standard_templates())
            print(await waybill.cloudprint_isv_templates())
            print(await waybill.cloudprint_seller_custom_areas())
            print(await waybill.cloudpirnt_seller_custom_area_detail(mappingId=1))
    
    asyncio.run(main())
  2. 第二种使用方法

    # -- snip --
    
    async def main():
        session = await WayBillClient().connection()
        waybill = WayBill(
            url='http://link.cainiao.com/gateway/link.do',
            token='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
            appsecret='yyyyyyyyyyyyyyyyyyyyy',
            session=session
        )
        print(await waybill.tms_waybill_get(data=waybill_get_form))
        print(await waybill.subscription_query())
        print(await waybill.cloudprint_standard_templates())
        print(await waybill.cloudprint_isv_templates())
        print(await waybill.cloudprint_seller_custom_areas())
        print(await waybill.cloudpirnt_seller_custom_area_detail(mappingId=1))
        await session.close()
    
    asyncio.run(main())

CloudPrint

  1. 第一种使用方法

    import asyncio
    
    from cainiao import CloudPrintClient, CloudPrint
    from cainiao.templates import Content, Document, TaskForm
    
    content = Content(**{
        "data": {"nick": "Hello"},
        "templateURL": "http://cloudprint.cainiao.com/template/standard/278250/1",
    })
    
    document = Document(**{
        "documentID": "1",
        "contents": [content for _ in range(5)]
    })
    
    task = TaskForm(printer="Microsoft Print to PDF", documents=[document])
    
    
    async def main():
        async with CloudPrintClient(ws_url='ws://127.0.0.1:13528') as ws:
            cloudprint = CloudPrint(ws=ws)
            print(await cloudprint.get_printers())
            print(await cloudprint.print(task=task.content))
    
    
    asyncio.run(main())
  2. 第二种使用方法

    # -- snip --
    
    async def main():
        # 注意使用区别,session.close() 才是关闭 aiohttp.ClientSession()
        session, ws = await CloudPrintClient(ws_url='ws://127.0.0.1:13528').connect()
        cloudprint = CloudPrint(ws=ws)
        print(await cloudprint.get_printers())
        print(await cloudprint.print(task=task.content))
        await session.close()
    
    
    asyncio.run(main())