本操作依赖Node.js 16.x环境,直接执行以下命令完成安装(适用于Debian/Ubuntu系统):
分别在淘宝开放平台、拼多多开放平台创建测试应用,申请对应接口权限:
创建工作目录并初始化Node.js项目,执行以下命令:
``` mkdir taobao-pdd-sync && cd taobao-pdd-sync npm init -y npm install axios crypto-js pm2 --save ```该命令会生成package.json,安装接口请求、加密、定时任务管理所需的依赖。
在项目根目录创建config.js文件,写入以下完整配置(必须替换为你自己的密钥):
``` module.exports = { taobao: { appKey: '你的淘宝app_key', appSecret: '你的淘宝app_secret', apiUrl: 'https://eco.taobao.com/router/rest' }, pdd: { clientId: '你的拼多多client_id', clientSecret: '你的拼多多client_secret', apiUrl: 'https://gw-api.pinduoduo.com/api/router' }, syncItems: [ {taobaoItemId: '淘宝商品数字ID', pddItemId: '拼多多商品ID'} ], syncInterval: 3600000 // 同步间隔1小时,单位毫秒 }; ```
重点说明:syncItems是需同步的商品对,从两个平台的商品管理页获取对应ID,不得填错;syncInterval可按需调整同步频率。
在项目根目录创建sync.js文件,写入以下完整代码:
``` const axios = require('axios'); const CryptoJS = require('crypto-js'); const config = require('./config'); // 淘宝API签名方法 function taobaoSign(params, secret) { const sortedParams = Object.keys(params).sort().reduce((acc, key) => { acc[key] = params[key]; return acc; }, {}); let signStr = secret; for (const key in sortedParams) { signStr += key + sortedParams[key]; } signStr += secret; return CryptoJS.MD5(signStr).toString().toUpperCase(); } // 核心同步逻辑 async function syncStock() { for (const item of config.syncItems) { // 从淘宝拉取库存 const taobaoParams = { method: 'taobao.item.seller.get', app_key: config.taobao.appKey, session: '替换为淘宝开放平台获取的session_token', fields: 'num_iid,quantity', num_iid: item.taobaoItemId, timestamp: new Date().toISOString().replace(/\.\d+Z$/, 'Z'), format: 'json', v: '2.0', sign_method: 'md5' }; taobaoParams.sign = taobaoSign(taobaoParams, config.taobao.appSecret); const taobaoRes = await axios.get(config.taobao.apiUrl, {params: taobaoParams}); const stock = taobaoRes.data?.item_seller_get_response?.item?.quantity; if (!stock) { console.log(`淘宝商品${item.taobaoItemId}库存获取失败`); continue; } // 同步到拼多多库存 const pddParams = { client_id: config.pdd.clientId, timestamp: Date.now(), type: 'pdd.goods.stock.update', data: JSON.stringify({ goods_id: item.pddItemId, sku_id: 0, // 单SKU场景用0,多SKU需替换为对应ID quantity: stock }) }; // 拼多多签名(参数必须按ASCII排序) const sortedPddKeys = Object.keys(pddParams).sort(); let pddSignStr = ''; sortedPddKeys.forEach(key => pddSignStr += key + pddParams[key]); pddSignStr += config.pdd.clientSecret; pddParams.sign = CryptoJS.MD5(pddSignStr).toString().toLowerCase(); const pddRes = await axios.post(config.pdd.apiUrl, pddParams); if (pddRes.data?.error_response) { console.log(`拼多多商品${item.pddItemId}同步失败:${pddRes.data.error_response.msg}`); } else { console.log(`商品${item.taobaoItemId}库存同步成功,数量:${stock}`); } } } // 定时执行同步 setInterval(syncStock, config.syncInterval); // 首次立即执行 syncStock(); ```重点说明:淘宝的session_token需通过淘宝开放平台「授权工具」获取,替换代码中的对应值;多SKU商品需修改拼多多接口的sku_id参数。
使用pm2管理脚本,确保后台长期运行并开机自启:
登录淘宝后台修改某商品库存,等待1小时后登录拼多多后台查看对应商品库存,若数据同步则操作成功;若未同步,执行`pm2 logs "全域库存同步"`查看日志定位错误。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图