当前位置: API文档

stockin_purchase_push.php(创建采购入库单)

¥标准

1.接口说明

1.1 接口描述:推送采购单对应的入库单给旺店通ERP。
1.2 适用版本:客户端 V2.4.8.4及以上版本。
1.3 注意事项:上层采购单状态为40已审核和50部分到货状态才能创建采购入库单。

2.调用场景

2.1 SCM、SRM等采购供应管理系统对接

3.请求参数说明

   3.1 请求地址

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

名称字段类型长度必须描述
入库单列表节点purchase_infodata
请求参数的1级数据节点,包含采购入库单单所有属性信息的数据节点,节点下数据字段详见下述“purchase_info”

   purchase_info

名称字段类型长度必须描述
采购单号purchase_novarchar40推送采购单时由ERP生成的ERP内采购单唯一标识,采购单推送成功时响应信息会返回此参数
外部单号outer_novarchar40外部系统采购入库单的唯一单据编号
是否创建批次is_create_batchvarchar400:否;1:是,默认是0。ERP“批次管理”不存在推送的批次号,是否允许单据创建成功,并创建新的“批次号”。
is_create_batch=0时,入库单推送的“批次号”ERP“批次管理不存在”,单据创建失败,并返回错误信息。
is_create_batch=1时,入库单推送的“批次号”ERP“批次管理不存在,单据会创建成功,并在ERP“批次管理”创建一个新的批次,请谨慎使用此字段
是否审核is_checkint
1:审核 0:不审核 默认0
仓库编号warehouse_novarchar40ERP内自定义的代表仓库的编号信息,传参取值需到ERP设置-》基本设置-》仓库-》仓库列表查看仓库编号信息
物流编号logistics_codevarchar20ERP内自定义的代表物流公司的编号,传参取值需到ERP设置-》基本设置-》物流-》物流列表查看物流编号信息
物流单号logistics_novarchar40用于追踪货物路由信息的物流(快递)编码
邮资post_feedecimal(19,4)货物运输产生的物流(快递)费用
其他费用other_feedecimal(19,4)其他费用
备注remarkvarchar255备注
入库货品列表节点details_listdata[]
采购单货品列表节点,字段详细见details_list

   details_list

名称字段类型长度必须描述
商家编码spec_novarchar40

ERP内单品唯一编码(SKU),代表单品(SKU)所有属性,并且为库存量出入计算最小单元。SKU概念介绍,单击这里

注:推送的spec_no值在ERP货品档案必须存在,否则单据会创建失败。

入库数量stockin_numdecimal(19,4)入库数量
入库价stockin_pricedecimal(19,4)入库价,不传入库价金额默认为0
税后单价tax_pricedecimal(19,4)

税后单价,税后单价如果传值,入库价传值不生效,公式为 stockin_price=tax_price/(1+tax)

注:推送此字段前需将版本升级至V2.3.9.1及以上的稳定版本

税率taxdecimal(19,4)税率
货位position_novarchar20商品在仓库内的位置编号,传值时货位编号为空,读ERP配置【入库开单货位优先级配置】,来决定取默认货位、上一次入库货位、ZANCUN货位其中一个货位。
批次batch_novarchar20货品批次编号
批次备注batch_remarkvarchar255批次备注
生产日期production_datedatetime
商品生产日期,格式:yyyy-MM-dd HH:mm:ss
有效期
expire_datedatetime

商品有效期,格式:yyyy-MM-dd HH:mm:ss
保质期validity_daysint11商品有效期天数,单位天
原价src_pricedecimal(19,4)不传值取上层单据(采购单)明细的税前价,传值取接口输入值。
备注remarkvarchar60备注
是否开启序列号
is_enable_sn
varchar60
是否开启序列号: 0代表不开启序列号    >0代表开启序列号    默认为0不开启
序列号列表
sn_list
varchar
序列号列表,多个序列号通过","隔开字符串区分,例如"xxx1,xxx2,xxx3"
序列号信息sn_infodata[]

sn_info

名称字段类型长度必须描述
序列号
snvarchar40

序列号

辅助序列号identity_sn_listdata[]
(19,4)辅助序列号列表


4.响应参数

   4.1 公共响应参数

名称字段类型长度必须描述
错误码codeint40状态码:0表示成功,其他表示失败
错误原因messagevarchar255错误原因
入库单号stockin_novarchar
采购入库单号(code=0 返回推送成功的入库单号)

5.请求示例

PHP
<?php
    require_once("../WdtClient.php");
    $c = new WdtClient;
    $c->sid = '';
    $c->appkey = '';
    $c->appsecret = '';
    $c->gatewayUrl = 'http://sandbox.wangdian.cn/openapi2/stockin_purchase_push.php';

    $purchase_info = array( 
        "purchase_no" => "CG201806160003",
        "warehouse_no" => "001",
        "outer_no" => "ghs123sfsag",
        "purchase" => "xxxxx",

        "details_list" => array(
            array(
            "spec_no" => "NESTX0002003",
            "stockin_price" => 12.2,
            "stockin_num" => 1,
            )
        )
    );

    $c->putApiParam('purchase_info',json_encode($purchase_info,JSON_UNESCAPED_UNICODE));
    $json = $c->wdtOpenApi();
    var_dump($json);
?>
JAVA
package com.wangdian.api.purchase;

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 StockinPurchasePush {

    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> purchase_info = new HashMap<String, Object>();
        List<Map<String, Object>> details_list = new ArrayList<Map<String, Object>>();
        
        Map<String, Object> detail_1 = new HashMap<String, Object>();
        detail_1.put("spec_no", "qqq");
        detail_1.put("stockin_price", "2");
        detail_1.put("stockin_num", 1);
        
        details_list.add(detail_1);
        
        purchase_info.put("purchase_no", "CG201812100001");
        purchase_info.put("warehouse_no", "aiyi2test");
        purchase_info.put("outer_no", "ghs2018121001");
        purchase_info.put("details_list", details_list);
        
        String purchase_info_json = JSON.toJSONString(purchase_info);
        
        Map<String, String> params = new HashMap<String, String>();
        params.put("purchase_info", purchase_info_json);
        try {
            String response = client.execute("stockin_purchase_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 StockinPurchasePush
{
    class StockinPurchasePush
    {
        static void Main(string[] args)
        {
            WdtClient client = new WdtClient();
            client.sid = "";
            client.appkey = "";
            client.appsecret = "";
            client.gatewayUrl = "http://sandbox.wangdian.cn/openapi2/stockin_purchase_push.php";

            var purchase_info = new
            {
                purchase_no = "34567876543234",
                warehouse_no = "api_test",
                outer_no = "4567765433",
                details_list = new[]
                {
                    new
                    {
                        spec_no ="1001017308AYS2S",
                        stockin_price = "10",
                        tax_price = "5.5",
                        tax = "0.1",
                        stockin_num = "1",
                    },
                    new
                    {
                        spec_no ="sku002",
                        stockin_price = "10",
                        tax_price = "5.5",
                        tax = "0.1",
                        stockin_num = "1",
                    },

                }
                
            };

            string json = purchase_info.ToJsonString();
            client.putParams("purchase_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/')
purchase_info = {}
details_list = []
details_1 = {}
details_1.update({"spec_no": 'spec_001'})
details_1.update({"stockin_num": '10'})
details_1.update({"stockin_price": '1'})
details_1.update({"tax_price": ''})
details_1.update({"tax": ''})
details_1.update({"position_no": ''})
details_1.update({"batch_no": ''})
details_1.update({"batch_remark": ''})
details_1.update({"production_date": ''})
details_1.update({"validity_days": ''})
details_1.update({"src_price": ''})
details_1.update({"remark": ''})
details_1.update({"is_enable_sn": '0'})
details_1.update({"sn_list": ''})
details_list.append(details_1)

purchase_info.update({"purchase_no": '12345678'})
purchase_info.update({"warehouse_no": 'test001'})
purchase_info.update({"outer_no": 'test001'})
purchase_info.update({"is_use_outer_no": '0'})
purchase_info.update({"is_check": '0'})
purchase_info.update({"is_create_batch": '0'})
purchase_info.update({"logistics_code": ''})
purchase_info.update({"logistics_no": ''})
purchase_info.update({"other_fee": ''})
purchase_info.update({"post_fee": ''})
purchase_info.update({"remark": '采购单备注'})
purchase_info.update({"details_list": details_list})
# del(purchase_info[0])
jsonArr = json.dumps(purchase_info, ensure_ascii=False)
params = {}
params.update({"purchase_info": jsonArr})
response = t.execute("stockin_purchase_push.php", params)
print(response)

6.响应示例

   6.1 正常响应示例 

JSON
{
    "code": 0,
    "message": "success",
    "stockin_no": "RK1905180005"
}

   6.2 异常响应示例

JSON
{
    "code": 2005,
    "message": "外部单号重复【解决办法:保证外部单号【outer_no】的唯一性】 "
}



常用工具