当前位置: API文档

stockin_refund_push.php(创建退货入库单)

¥标准

1.接口说明

1.1 接口描述:推送旺店通ERP销售退货(换货)订单对应的入库单据给旺店通ERP,推送前提旺店通ERP的退换单状态为“待收货”
1.2 适用版本:客户端 V2.4.8.4及以上版本

2.调用场景

2.1 线下ERP等系统对接

3.请求参数说明

   3.1 请求地址

环境HTTP地址
测试环境https://sandbox.wangdian.cn/openapi2/stockin_refund_push.php
正式环境https://api.wangdian.cn/openapi2/stockin_refund_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 业务请求参数

名称字段类型长度
必须描述
退货单列表节点stockin_refund_infodata
请求参数的1级数据节点,包含销售退货单所有属性信息的数据节点,节点下数据字段详见下述“stockin_refund_info”

stockin_refund_info

名称字段类型长度必须描述
退换单号refund_novarchar40系统退换单的单号,默认TK开头
外部单号outer_novarchar40外部单据唯一标识,用于避免同一数据重复推送
仓库编号warehouse_novarchar40代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),不支持推送多个仓库编号
物流公司编号logistics_codevarchar20代表物流所有属性的唯一编码,用于物流区分,ERP内支持自定义(ERP物流界面设置)
物流单号logistics_novarchar40物流单号
邮费post_feedecimal(19,4)邮费
其他费用other_feedecimal(19,4)其他费用
是否审核is_checktinyint11:自动审核; 0:不自动审核  默认1
是否创建批次is_create_batchvarchar400:否;1:是  默认是0
备注remarkvarchar255备注
货品列表节点detail_listdata[ ]
请求参数的2级数据节点,包含销售退货入库单所有属性信息的数据节点,节点下数据字段详见下述“detail_list”

detail_list

名称字段类型长度必须描述
商家编码spec_novarchar40代表单品(sku)所有属性的唯一编码,ERP内单品唯一编码(sku)。推送的spec_no值在ERP货品档案必须存在,且上一层单据退换单也必须存在此编号,否则单据会创建失败。SKU概念介绍,单击这里
货位position_novarchar20商品在仓库内的位置编号,传值时货位编号为空,读ERP配置【入库开单货位优先级配置】,来决定取默认货位、上一次入库货位、ZANCUN货位其中一个货位。
批次号batch_novarchar20商品批次编号,ERP“批次管理”不存在推送的批次号,是否允许单据创建成功,并创建新的“批次号”0:否;1:是,默认是0。is_create_batch=0时,入库单推送的“批次号”ERP“批次管理不存在”,单据创建失败,并返回错误信息。is_create_batch=1时,入库单推送的“批次号”ERP“批次管理不存在,单据会创建成功,并在ERP“批次管理”创建一个新的批次,请谨慎使用此字段
批次备注batch_remarkvarchar255
批次备注
入库数量stockin_numdecimal(19,4)入库数量
单价stockin_pricedecimal(19,4)单价(为空或-1时,等于入库仓库的货品成本价)
生产日期production_datedatetime
生产日期,格式:yyyy-MM-dd HH:mm:ss
有效期expire_datedatetime
有效期,格式:yyyy-MM-dd HH:mm:ss
税率taxdecimal(19,4)税率
备注remarkvarchar255备注
是否开启序列号
is_enable_snvarchar60是否开启序列号: 0代表不开启序列号    >0代表开启序列号    默认为0不开启
序列号列表sn_listvarchar
序列号列表,多个序列号通过","隔开字符串区分,例如"xxx1,xxx2,xxx3"

4.响应参数

   4.1 公共响应参数

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

   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/stockin_refund_push.php';
    
    $stockin_refund_info = array (
        "refund_no" => "TK1608030001",
        "outer_no" => "ghs",
        "warehouse_no" => "xy001",
        "logistics_code" => "yjwl04",
        "detail_list"  => array( array(
                "spec_no" => "33412",
                "stockin_num" => 2,
                "batch_no" => "20160601",
                "stockin_price" => "0.01"
            )
         )
    );
    $c->putApiParam('stockin_refund_info', json_encode($stockin_refund_info, JSON_UNESCAPED_UNICODE));
    $json = $c->wdtOpenApi();
    var_dump($json);
?>
JAVA
package com.wangdian.api.refund;

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 StockinRefundPush {
    @SuppressWarnings("unchecked")
    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> stockin_refund_info = new HashMap<String, Object>();
        List<Map<String, Object>> detail_list = new ArrayList<Map<String, Object>>();
        
        Map<String, Object> detail_1 = new HashMap<String, Object>();
        
        detail_1.put("spec_no", "ghs201812070212123");
        detail_1.put("stockin_num", 2);
        detail_1.put("stockin_price", 0.01);
        
        detail_list.add(detail_1);
        
        stockin_refund_info.put("refund_no", "TK1812110002");
        stockin_refund_info.put("outer_no","gjs1121");
        stockin_refund_info.put("warehouse_no", "ghs2test");
        stockin_refund_info.put("logistics_code", "1213");
        stockin_refund_info.put("is_created_batch", 1);
        stockin_refund_info.put("detail_list", detail_list);
        
        //通过第三方json解析工具类fastjson将map解析成json
        String stockin_refund_info_json = JSON.toJSONString(stockin_refund_info);
        //System.out.println(goods_list_json);
        
        Map<String, String> params = new HashMap<String, String>(); 
        params.put("stockin_refund_info", stockin_refund_info_json);
        try {
            String response = client.execute("stockin_refund_push.php", params);
            System.out.println(response);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WdtSdk;

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

            var stockin_refund_info = new
            {
                refund_no = "TK1901090001",
                outer_no = "234567898765432",
                warehouse_no = "api_test",
                logistics_code = "SMWL001",
                logistics_no = "6787654321234",
                detail_list = new[]
                {
                    new{
                        spec_no = "6521478635",
                        stockin_num = "1",
                        stockin_price = "11.11",
                    }
                }
            };

            string json = stockin_refund_info.ToJsonString();
            client.putParams("stockin_refund_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/')
stockin_refund_info = {}
detail_list = []
order_1 = {}
order_1.update({"spec_no": 'test001'})
order_1.update({"position_no": ''})
order_1.update({"batch_no": '批次号'})
order_1.update({"batch_remark": '批次备注'})
order_1.update({"stockin_num": '入库数量'})
order_1.update({"stockin_price": '单价'})
order_1.update({"production_date": '2021-01-01 00:00:00'})
order_1.update({"expire_date": '2021-01-02 00:00:00'})
order_1.update({"tax": ''})
order_1.update({"remark": '备注'})
order_1.update({"is_enable_sn": '0'})
order_1.update({"sn_list": ''})
detail_list.append(order_1)
refund_1 = {}
refund_1.update({"refund_no": 'TK001'})
refund_1.update({"outer_no": '12345678'})
refund_1.update({"warehouse_no": 'ceshi2'})
refund_1.update({"logistics_no": '物流单号'})
refund_1.update({"logistics_code": '物流公司编号'})
refund_1.update({"post_fee": '邮费'})
refund_1.update({"other_fee": '其他费用'})
refund_1.update({"is_check": '1'})
refund_1.update({"is_create_batch": '0'})
refund_1.update({"remark": '备注'})
refund_1.update({"detail_list": detail_list})
stockin_refund_info.append(refund_1)
# del(stockin_refund_info[0])
jsonArr = json.dumps(stockin_refund_info, ensure_ascii=False)
params = {}
params.update({"stockin_refund_info": jsonArr})
response = t.execute("stockin_refund_push.php", params)
print(response)

6.响应示例

   6.1 正常响应示例 

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

   6.2 异常响应示例

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



常用工具