当前位置: API文档

stock_transfer_push.php(创建调拨单)

¥标准

1.接口说明

1.1 接口描述:旺店通ERP内仓与仓之间的库存需要调度时,推送调拨单给旺店通ERP。
1.2 适用版本:客户端 V2.4.5.6及以上版本。

1.3 调用建议:每个请求建议skus节点内货品明细控制在500条及以下,如货品明细过多,请分多次推送。

2.调用场景

2.1 线下ERP、自研存货管理等系统对接

3.请求参数说明

   3.1 请求地址

环境HTTP地址
测试环境https://sandbox.wangdian.cn/openapi2/stock_transfer_push.php
正式环境https://api.wangdian.cn/openapi2/stock_transfer_push.php

   3.2 公共请求参数

名称字段类型长度
必须描述
卖家账号sidString
购买ERP时由旺店通分配给ERP购买方,请从ERP购买方获取。
接口账号appkeyString
本开放平台“自助对接”功能模块内自助申请,获取方式点击这里
时间戳timestampint
北京时间1970-01-01 08:00:00起至现在的总秒数,10位int值,旺店通企业版API服务端允许请求最大时间误差为5min,date.timezone = Asia/Shanghai。
签名signString
API输入参数签名结果,签名算法介绍单击这里

   3.3 业务请求参数

名称字段类型长度必须描述
调拨单信息transfer_infodata
调拨单信息

transfer_info

名称字段类型长度必须描述
外部单号outer_novarchar40外部单据唯一标识,用于避免同一数据重复推送
源仓库from_warehouse_novarchar40货品被调出的仓库
目标仓库to_warehouse_novarchar40货品被调入的仓库
地址addressvarchar255地址
联系人contactvarchar40联系人
联系电话telnovarchar40联系电话
备注remarkvarchar255备注
调拨类型transfer_typetinyint40:分步调拨,1:快速调拨,默认是1
调拨方式modetinyint40:单品调拨,1:货位调拨;默认是0
是否审核autochecktinyint11:审核,0:不审核,默认为0
货品列表节点skusdata[ ]
调拨单货品列表节点

skus

名称字段类型长度必须描述
商家编码spec_novarchar40ERP内单品唯一编码(SKU),代表单品(SKU)所有属性,并且为库存量出入计算最小单元。SKU概念介绍,单击这里
注意:推送的spec_no值在ERP货品档案必须存在,否则单据会创建失败。
调出货位from_position_novarchar20调出货位(当mode为1时,必传),不传值读ERP配置【入库开单货位优先级配置】,取默认货位、上一次入库货位、ZANCUN货位其中一个货位。
单品调拨时(当mode为0)不传此参
调入货位to_position_novarchar20调出货位(当mode为1时,必传),不传值读ERP配置【入库开单货位优先级配置】,取默认货位、上一次入库货位、ZANCUN货位其中一个货位。
单品调拨时(当mode为0)不传此参
调拨数量numdecimal(19,4)调拨数量
备注remarkvarchar255货品明细备注

4.响应参数

   4.1 公共响应参数

名称字段类型长度必须描述
错误码codeint40
状态码:0表示成功,其他表示失败
错误信息messagevarchar255错误信息
调拨单号
transfer_novarchar20

系统调拨单的编号

   4.2 业务响应参数


5.请求示例

PHP
<?php
    require_once ('../WdtClient.php');
    $c = new WdtClient();
    $c->sid = '';
    $c->appkey = '';
    $c->appsecret = '';
    $c->gatewayUrl = 'http://sandbox.wangdian.cn/openapi2/stock_transfer_push.php';
    
    $transfer_info = array (
        'outer_no' => 'ghs_001',
        'from_warehouse_no' => '001',
        'to_warehouse_no' => '001',
        'skus' => array (
            array (
                'spec_no' => 'NESTX0002003',
                'num' => '1'
            )
        )
    );
    
    $c->putApiParam('transfer_info', json_encode($transfer_info, JSON_UNESCAPED_UNICODE));
    $json = $c->wdtOpenApi();
    var_dump($json);
?>
JAVA
package com.wangdian.api.stock;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSON;
import com.wangdian.api.WdtClient;

public class StockTransferPush {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        WdtClient client = new WdtClient("传入sid", "传入appkey", "传入appsecret", "传入url");
        //测试环境sid、appkey、密钥请到旺店通开放平台-自助对接-申请测试环境内查看,测试环境url=https://sandbox.wangdian.cn/openapi2/
        //调用正式环境时请将sid、appkey、appsecret切换为实际参数,参数在旺店通开放平台-自助对接-应用管理内应用状态为已上线的应用中查看,调用正式环境注意切换正式环境url=https://api.wangdian.cn/openapi2/
        
        Map<String, Object> transfer_info = new HashMap<String, Object>();
        List<Map<String, Object>> skus = new ArrayList<Map<String, Object>>();
        
        Map<String, Object> sku_1 = new HashMap<String, Object>();
        sku_1.put("spec_no", "ghs201812070212123");
        sku_1.put("num", "1");
        
        skus.add(sku_1);
        
        transfer_info.put("from_warehouse_no", "ghs2test");
        transfer_info.put("to_warehouse_no", "lx2test");
        transfer_info.put("outer_no", "ghs201812101205");
        transfer_info.put("skus", skus);
        
        String transfer_info_json = JSON.toJSONString(transfer_info);
        //System.out.println(purchase_info_json);
        
        Map<String, String> params = new HashMap<String, String>();
        params.put("transfer_info", transfer_info_json);
        try {
            String response = client.execute("stock_transfer_push.php", params);
            System.out.println(response);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WdtSdk;

namespace StockTransferPush
{
    class StockTransferPush
    {
        static void Main(string[] args)
        {
            WdtClient client = new WdtClient();
            client.sid = "";
            client.appkey = "";
            client.appsecret = "";
            client.gatewayUrl = "http://sandbox.wangdian.cn/openapi2/stock_transfer_push.php";

            var transfer_info = new
            {
                outer_no = "5678765432345",
                from_warehouse_no = "api_test",
                to_warehouse_no = "wh002",
                skus = new[]
                {
                    new{
                        spec_no = "test-ptsd-00002",
                        num = "1"
                    },
                    new{
                        spec_no = "test-ptsd-00001",
                        num = "1"
                    }
                }
            };

            string json = transfer_info.ToJsonString();
            client.putParams("transfer_info", json);

            string result = client.wdtOpenapi();
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }
}
python
import WdtClient
import json

t = WdtClient.WdtClient('appkey', 'appsecret', 'sid', 'http://sandbox.wangdian.cn/openapi2/')
transfer_info = {}
skus = []
skus_1 = {}
skus_1.update({"spec_no": 'spec_001'})
skus_1.update({"from_position_no": ''})
skus_1.update({"to_position_no": ''})
skus_1.update({"num": '5'})
skus_1.update({"remark": '备注'})
skus.append(skus_1)

transfer_info.update({"outer_no": '12345678'})
transfer_info.update({"from_warehouse_no": '001'})
transfer_info.update({"to_warehouse_no": '002'})
transfer_info.update({"address": ''})
transfer_info.update({"contact": ''})
transfer_info.update({"telno": ''})
transfer_info.update({"remark": '备注'})
transfer_info.update({"transfer_type": '1'})
transfer_info.update({"mode": '0'})
transfer_info.update({"autocheck": '0'})
transfer_info.update({"skus": skus})
# del(transfer_info[0])
jsonArr = json.dumps(transfer_info, ensure_ascii=False)
params = {}
params.update({"transfer_info": jsonArr})
response = t.execute("stock_transfer_push.php", params)
print(response)

6.响应示例

   6.1 正常响应示例 

JSON
{
    "code": 0,
    "message": "succeed ",
    "transfer_no": "TF201905180001"
}

   6.2 异常响应示例

JSON
{
    "code": "44",
    "message": "外部单号已存在,不能重复推送outer_no = XPdb201905180001"
}



常用工具