当前位置: API文档

purchase_return_order_push.php(创建采购退货出库单)

¥标准

1.接口说明

1.1 接口描述:单个推送采购退货单对应的出库单给旺店通ERP
1.2 适用版本:客户端 V2.4.8.4及以上版本。

2.调用场景

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

3.请求参数说明

   3.1 请求地址

环境HTTP地址
测试环境https://sandbox.wangdian.cn/openapi2/purchase_return_order_push.php
正式环境https://api.wangdian.cn/openapi2/purchase_return_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_return_infodata
请求参数的1级数据节点,包含采购退货退货出库单所有属性信息的数据节点,节点下数据字段详见下述“purchase_return_info”列表

   purchase_return_info

名称字段类型长度必须描述
退货单号return_novarchar40退货单号
外部单号outer_novarchar40外部单号,用于避免同一数据重复推送)
物流公司编号logistics_codevarchar20代表物流所有属性的唯一编码,用于物流区分,ERP内支持自定义(ERP物流界面设置)
物流单号logistics_novarchar40物流公司的运单号
邮资post_costdecimal(19,4)邮资
备注remarkvarchar255采购退货出库单备注
是否审核is_checktinyint11:自动审核 0:不自动审核 默认0
采购退货出库明细列表节点detail_listdata[]
请求参数的2级数据节点,包含采购退货退货出库单所有属性信息的数据节点,节点下数据字段详见下述“details_list”列表

   detail_list

名称字段类型长度必须描述
商家编码spec_novarchar40代表单品(sku)所有属性的编码,SKU概念介绍,单击这里
退货数量numdecimal(19,4)
退货数量
单价pricedecimal(19,4)单价
货位编号position_novarchar20货位编号
批次号batch_novarchar20批次号
备注remarkvarchar255货品明细备注
是否开启序列号is_enable_snvarchar60是否开启序列号: 0代表不开启序列号    >0代表开启序列号    默认为0不开启
序列号列表sn_listvarchar
序列号列表,多个序列号通过","隔开字符串区分,例如"xxx1,xxx2,xxx3"

4.响应参数

   4.1 公共响应参数

名称字段类型长度必须描述
错误码codeint40状态码:0表示成功,其他表示失败
错误原因messagevarchar255错误原因
采购退货出库单号stockout_novarchar
采购退货出库单号

5.请求示例

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

    $purchase_return_info = array (
         "return_no" => "CR201610110002",
        "outer_no" => "ghsf23",
        "post_cost" => "0.01",
        "logistics_code" => "TT",
        "logistics_no" => "212123434354",
        "detail_list" => array (
            array (
                "spec_no" => "kangxiwen1",
                "num" => 2,
                "position_no" => "A121",
                "price" => "0.01",
            )
        )
    );

    $c->putApiParam('purchase_return_info',json_encode($purchase_return_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 PurchaseReturnOrderPush {

    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_return_info = new HashMap<String, Object>();
        List<Map<String, Object>> details_list = new ArrayList<Map<String, Object>>();
        
        Map<String, Object> details_1 = new HashMap<String, Object>();
        details_1.put("spec_no", "kangxiwen1");
        details_1.put("num", 2);
        details_1.put("position_no", "A121");
        details_1.put("price", 9.9);
        
        details_list.add(details_1);
        
        purchase_return_info.put("return_no", "CR201610110002");
        purchase_return_info.put("outer_no", "ghs123");
        purchase_return_info.put("logistics_code", "TTTT");
        purchase_return_info.put("detail_list", details_list);
        
        String purchase_return_info_json = JSON.toJSONString(purchase_return_info);
        
        Map<String, String> params = new HashMap<String, String>();
        params.put("purchase_return_info", purchase_return_info_json);
        try {
            String response = client.execute("purchase_return_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 PurchaseReturnOrderPush
{
    class PurchaseReturnOrderPush
    {
        static void Main(string[] args)
        {
            WdtClient client = new WdtClient();
            client.sid = "";
            client.appkey = "";
            client.appsecret = "";
            client.gatewayUrl = "http://sandbox.wangdian.cn/openapi2/purchase_return_order_push.php";

            var purchase_return_info = new
            {
                return_no = "CR201901160001",
                outer_no = "456789876543",
                warehouse_no = "api_test",
                logistics_code = "219",
                logistics_no = "3456789876543",
                post_cost = "0.01",
                detail_list = new[]
                {
                    new
                    {
                        spec_no ="1001017308AYS2S",
                        num = "1"
                    },
                    new
                    {
                        spec_no ="sku002",
                        num = "1"
                    }
                }
                
            };

            string json = purchase_return_info.ToJsonString();
            client.putParams("purchase_return_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_return_info = {}
detail_list = []
details_1 = {}
details_1.update({"spec_no": 'spec_001'})
details_1.update({"num": '10'})
details_1.update({"price": '1'})
details_1.update({"position_no": ''})
details_1.update({"batch_no": ''})
details_1.update({"remark": ''})
details_1.update({"is_enable_sn": '0'})
details_1.update({"sn_list": ''})
detail_list.append(details_1)

purchase_return_info.update({"return_no": '001'})
purchase_return_info.update({"outer_no": 'test001'})
purchase_return_info.update({"logistics_code": ''})
purchase_return_info.update({"logistics_no": '0'})
purchase_return_info.update({"post_cost": '0'})
purchase_return_info.update({"remark": ''})
purchase_return_info.update({"is_check": ''})
purchase_return_info.update({"detail_list": detail_list})
# del(purchase_return_info[0])
jsonArr = json.dumps(purchase_return_info, ensure_ascii=False)
params = {}
params.update({"purchase_return_info": jsonArr})
response = t.execute("purchase_return_order_push.php", params)
print(response)

6.响应示例

   6.1 正常响应示例 

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

   6.2 异常响应示例

JSON
{
    "code": "9",
    "message": "请求的detail_list参数不是二维数组"
}



常用工具