现在淘宝虚拟商品自动发货程序还有人做吗?

本文介绍了如何实现淘宝虚拟商品自动发货程序,包括注册淘宝开放平台账号、获取AppKey和AppSecret,以及使用Python SDK获取授权码和AccessToken。通过调用淘宝自动发货API,根据订单号自动发货。示例代码展示了主要流程,强调实际应用需根据需求调整。

淘宝虚拟商品自动发货程序的实现需要使用淘宝开放平台的接口,具体步骤如下:

1. 注册淘宝开放平台账号,并创建应用。

2. 获取淘宝开放平台的AppKey和AppSecret。

3. 使用Python的淘宝开放平台SDK,根据文档获取授权码。

4. 根据授权码获取AccessToken。

5. 使用淘宝自动发货API,根据订单号自动发货。

以下是淘宝虚拟商品自动发货程序的参考代码:

```
from top.api import TbkScOrderDetailsGetRequest, TopApiResponse, TbkScOrderDetailsGetResponse, TbkOrderDetailsGetRequest,
TbkOrderDetailsGetResponse, TopClient, TbkOrderDetailsShareRequest, TbkOrderDetailsShareResponse, UploadRequest, ProductAddRequest
from typing import List, Dict
import requests
import json
import time
  
# 应用配置
app_key = 'your_app_key'
app_secret = 'your_app_secret'
tbk_session = 'your_session'
tbk_pid = 'your_pid'
tbk_adzone = 'your_adzone'
tbk_site_id = 'your_site_id'

# 发货参数
default_sku_id = 'your_sku_id'
default_logistics_name = 'your_logistics_name'
default_logistics_no = 'your_logistics_no'

# TOP客户端初始化
top = TopClient(appkey=app_key, secret=app_secret)

# 获取订单列表
def get_order_list(start_time:str, end_time:str) -> List[Dict]:
    req = TbkOrderDetailsGetRequest()
    req.set_app_info(top.appinfo).set_start_time(start_time).set_end_time(end_time)
    req.set_page_size(100).set_query_type(2).set_order_scene(2)
    req.set_unite_key(True)

    try:
        resp: TbkOrderDetailsGetResponse = top.execute(req, tbk_session)
        order_list = json.loads(resp.body)['tbk_sc_order_details_get_response']['data']['results']['n_tbk_order']
        return order_list
    except Exception as e:
        print('ERROR: 获取订单列表失败')
        return []

# 根据订单号获取订单详情
def get_order_detail(order_no:str) -> Dict:
    req = TbkOrderDetailsShareRequest()
    req.set_app_info(top.appinfo).set_order_no(order_no)
    try:
        resp: TbkOrderDetailsShareResponse = top.execute(req, tbk_session)
        result = json.loads(resp.body)['tbk_order_details_share_response']['data'][0]
        return result
    except Exception as e:
        print('ERROR: 获取订单详情失败')
        return {}

# 自动发货
def auto_deliver(order_no:str, sku_id:str=default_sku_id, logistics_name:str=default_logistics_name, logistics_no:str=default_logistics_no) -> bool:
    req = UploadRequest('http://gw.api.taobao.com/router/rest', '21170', top.appkey, top.secret)
    req.add_field('plugin_id', '31170')
    req.add_field('supplier', 'taobao')
    req.add_field('order_id', order_no)
    req.add_field('product_id', sku_id)
    req.add_field('express_company_code', logistics_name)
    req.add_field('express_no', logistics_no)
    try:
        result = req.upload_file()
        if result['code'] == '0':
            return True
        else:
            return False
    except:
        return False

# 自动发货主逻辑
def auto_deliver_main():
    while True:
        now_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        print(f'{now_time} 检查订单')
        order_list = get_order_list(now_time, now_time)
        for order in order_list:
            order_no = order['trade_parent_id']
            order_detail = get_order_detail(order_no)
            if order_detail['model'] == '1' and order_detail['item_num'] == 1:
                sku_id = order_detail['item_title'].split(' ')[-1]
                if auto_deliver(order_no, sku_id):
                    print(f'{now_time} 订单处理完成:{order_no}')
                else:
                    print(f'{now_time} 订单处理失败:{order_no}')
            time.sleep(1)

if __name__ == '__main__':
    auto_deliver_main()
```

以上代码中,关键的部分是淘宝自动发货API的调用,需要根据具体的产品信息、订单信息、物流信息等来调用。需要注意的是,本文提供的代码仅为参考,具体实
现需要根据自己的需求进行修改和完善。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PHPcode123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值