当前位置: API文档

purchase_order_push.php(创建采购单)

¥标准

1.接口说明

1.1 接口描述:逐个推送采购单据给旺店通ERP
1.2 适用版本:客户端 V2.4.5.0及以上版本

2.调用场景

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

3.请求参数说明

   3.1 请求地址

环境HTTP地址
测试环境https://sandbox.wangdian.cn/openapi2/purchase_order_push.php
正式环境https://api.wangdian.cn/openapi2/purchase_order_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

名称字段类型长度必须描述
供应商编号provider_novarchar20供应商编号,ERP供应商档案必须存在此编号,否则推送失败
仓库编号warehouse_novarchar40代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于创建指定仓库数据信息(不支持一次推送多个仓库编码)
API单号outer_novarchar40API单号(如果【使用API单号作为系统采购单号】,那么该字段长度不能超过20)保证唯一
传入ERP采购单号
is_use_outer_notinyint1使用api外部单号作为系统采购单号(1使用,0不使用),默认不使用
自动审核is_checktinyint1是否自动审核,0 不审核,1 审核,默认不自动审核(不影响财务审核)
收货人姓名contactvarchar40收货人姓名
采购员purchase_namevarchar40采购员
收货人联系电话telnovarchar40收货人联系电话
收货地址receive_addressvarchar255收货地址
货运方式logistics_typesmallint6货运方式,指定货运方式可选输入值单击这里
预计到货时间expect_arrive_timedatetime
采购单对应货品预计到达仓库时间,时间格式:YYYY-MM-DD HH:MM:SS
其他费用other_feedecimal(19,4)其他费用
邮资post_feedecimal(19,4)邮资
备注remarkvarchar255采购单备注
自定义属性1prop1varchar255自定义属性1
自定义属性2prop2varchar255自定义属性2
采购明细节点details_listdata[]
请求参数的2级数据节点,包含采购单所有货品明细信息的数据节点,节点下数据字段详见下述“details_list

   details_list

名称字段类型长度必须描述
商家编码spec_novarchar40代表单品(sku)所有属性的编码,SKU概念介绍,单击这里
采购量numdecimal(19,4)采购量
采购价格pricedecimal(19,4)采购价格,按采购单位,税前单价
折扣discountdecimal(19,4) 折扣字段,默认值为1,1代表原价,无折扣;假设需要折扣为一折时,可将字段值传为0.1,同理,折扣为5折时,传值0.5;折扣为八折时,传值0.8,以此类推
税率taxdecimal(19,4)货品的税率,传值范围大于等于0小于等于1
税后单价tax_pricedecimal(19,4)税后单价,推送税后单价时折扣(discount)传值不生效,由接口计算,公式为discount=tax_price/(price*(1+tax))
备注remarkvarchar255采购货品明细备注
自定义属性1prop1varchar20自定义属性1
自定义属性2prop2varchar20自定义属性2

4.响应参数

   4.1 公共响应参数

名称字段
类型长度
必须描述
错误码
code
11

错误码,0为成功
错误信息message
255

错误信息,code=0 返回EPR创建成功的采购单号

5.请求示例

PHP
<?php
    require_once("../WdtClient.php");
    $c = new WdtClient;
    $c->sid = '';
    $c->appkey = '';
    $c->appsecret = '';
    $c->gatewayUrl = 'http://sandbox.wangdian.cn/openapi2/purchase_order_push.php';
    
    $purchase_info = array (
        "provider_no" => "2",
        "warehouse_no" =>"001",
        "outer_no" =>"ghsnsfs01nn",
        "is_use_outer_no" =>"0",
        "is_check" =>"1",
        "contact" =>"旺旺旺",
        "telno" =>"1333333333",
        "receive_address" =>"天博中润掌上先机",
        "logistics_type" =>"4",
        "other_fee" =>"100.01",
        "post_fee" =>"100.02",
        "remark" =>"API测试",
        "details_list" => array( 
            array(
                "spec_no" =>"NESTX0002003",
                "num" =>1,
                "price" =>"10.11",
                "discount" =>"10.22",
                "tax" =>"0.2",
                "remark" =>"API测试",
                "prop1" =>"011",
                "prop2" =>"022"
            )
        )
    );
    
    $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 PurchaseOrderPush {

    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("num", "2");
        detail_1.put("price", 1);
        detail_1.put("discount", 2);
        detail_1.put("tax", "0.1");
        detail_1.put("tax_price", "1.2");
        detail_1.put("remark", "API测试");
        detail_1.put("prop1", "011");
        detail_1.put("prop2", "022");
        
        details_list.add(detail_1);
        
        purchase_info.put("provider_no", "001");
        purchase_info.put("warehouse_no", "aiyi2test");
        purchase_info.put("outer_no", "ghs2018121001");
        purchase_info.put("is_check", "1");
        purchase_info.put("contact", "啊啊啊");
        purchase_info.put("details_list", details_list);
        
        String purchase_info_json = JSON.toJSONString(purchase_info);
        //System.out.println(purchase_info_json);
        
        Map<String, String> params = new HashMap<String, String>();
        params.put("purchase_info", purchase_info_json);
        try {
            String response = client.execute("purchase_order_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 PurchaseOrderPush
{
    class PurchaseOrderPush
    {
        static void Main(string[] args)
        {
            WdtClient client = new WdtClient();
            client.sid = "";
            client.appkey = "";
            client.appsecret = "";
            client.gatewayUrl = "http://sandbox.wangdian.cn/openapi2/purchase_order_push.php";

            var purchase_info = new
            {
                provider_no = "wl00001",
                warehouse_no = "001",
                outer_no = "34567876543234",
                is_use_outer_no = "0",
                is_check = "1",
                contact = "旺旺",
                telno = "1333333333",
                receive_address = "天博中润",
                logistics_type = "4",
                other_fee = "100.01",
                post_fee = "100.02",
                remark = "测试",
                details_list = new[]
                {
                    new
                    {
                        spec_no ="1001017308AYS2S",
                        num ="1",
                        price ="10.11",
                        discount ="10.22",
                        tax ="0.2",
                        remark ="API测试",
                        prop1 ="011",
                        prop2 ="022"
                    },
                    new
                    {
                        spec_no ="sku002",
                        num ="1",
                        price ="10.11",
                        discount ="10.22",
                        tax ="0.2",
                        remark ="API测试",
                        prop1 ="011",
                        prop2 ="022"
                    },

                }
                
            };

            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({"spec_code": '12345'})
details_1.update({"barcode": '12345678'})
details_1.update({"spec_name": '规格名称'})
details_1.update({"spec_unit_name": '基本单位'})
details_1.update({"lowest_price": '最低价'})
details_1.update({"retail_price": '零售价'})
details_1.update({"wholesale_price": '批发价'})
details_1.update({"member_price": '会员价'})
details_1.update({"market_price": '市场价'})
details_1.update({"spec_remark": '备注'})
details_list.append(details_1)

purchase_info.update({"provider_no": '001'})
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({"contact": '收件人姓名'})
purchase_info.update({"purchase_name": '采购员名称'})
purchase_info.update({"telno": '收件人联系电话'})
purchase_info.update({"receive_address": '收货地址'})
purchase_info.update({"other_fee": ''})
purchase_info.update({"post_fee": ''})
purchase_info.update({"remark": '采购单备注'})
purchase_info.update({"prop1": '自定义属性1'})
purchase_info.update({"prop2": '自定义属性2'})
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("purchase_order_push.php", params)
print(response)

6.响应示例

   6.1 正常响应示例 

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

   6.2 异常响应示例

JSON
{
    "code": 45,
    "message": "无效的供应商编号:12345677qwertt"
}



常用工具