有赞云开放接口正向交易场景对接说明

一、场景说明
      客户在有赞商城下单,第三方系统需要同步订单、更新订单状态,进行订单审核、打单发货,进而完成整个交易流程。本文档针对该场景介绍正向交易流程涉及到的交易订单接口及其他相关场景接口的调用方法,开发者可以根据自己的需求重点看下相应接口的调用规范。
     正向交易场景,指的是用户下单、付款、卖家发货、买家确认收货、交易成功这一系列正常的交易流程,不包含维权、退款场景,维权退款场景请查看“有赞云开放接口逆向交易场景对接说明”。
    正向交易场景涉及的主要接口有订单管理相关接口、到店自提接口、订单发货接口、物流接口等。

二、涉及 API 接口及调用说明

1、订单信息批量同步场景
场景说明:买家在有赞店铺下单,下单后在有赞商城后台就会产生对应的订单信息;商家的线下门店系统需要同步有赞店铺的订单信息,进而可以对订单进行发货、同步订单物流信息等;
——在不进行接口对接的情况下,如何批量将有赞的订单信息导出并以 csv、excel 等文件的形式导入到商家的线下门店系统内?微商城后台 - 订单 - 所有订单,选择对应的时间段,点击“批量导出”即可对订单信息进行导出; 
image.png

——点击批量导出后,会弹出导出的相关配置项,见图中说明;
image.png

——生成对应的订单报表后,点击下载即可查看对应报表; 
image.png

——通过哪个接口可以批量获取微商城的订单信息?
(1)搜索卖家已卖出的交易列表:youzan.trades.sold.get.4.0.0
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/157
(3)重要字段说明:
》》buyer_id:买家 ID,买家在有赞下单后才会在订单信息中产生的买家 ID,同一个买家从不同渠道进来,买家 ID 的值会不同;该 ID 主要用于区别下单渠道或者根据一个订单中的买家 ID 查询该买家在某一个渠道下的下单总量;
》》express_type:物流类型,根据物流配送的类型筛选订单信息,同城送订单:LOCAL_DELIVERY 自提订单:SELF_FETCH 快递配送:EXPRESS
》》offline_id:门店 ID,即网点 ID,入参增加该字段后,只拉取产生于这个网点的订单;
》》page_no:页码,即拉取第几页的数据,最大不超过 100;
》》page_size:每页条数,最大不超过 100,建议使用默认值 20;
》》status:订单状态,根据订单状态拉取订单,一次只能查询一种状态,待付款:WAIT_BUYER_PAY 待发货:WAIT_SELLER_SEND_GOODS 等待买家确认:WAIT_BUYER_CONFIRM_GOODS 订单完成:TRADE_SUCCESS 订单关闭:TRADE_CLOSE 退款中:TRADE_REFUND
》》tid:订单号,入参订单号则只只查询一笔订单信息,该接口一般不入参 tid;
》》goods_id:商品 id,也就是创建商品后生成的 item_id;
》》start_created:按订单创建时间开始开始时间和结束时间的跨度不能大于 3 个月; 结束时间必须大于开始时间; 开始时间和结束时间必须成对出现;
》》end_created:按订单创建时间结束例:2017-01-01 12:00:00; 开始时间和结束时间的跨度不能大于 3 个月; 结束时间必须大于开始时间; 开始时间和结束时间必须成对出现;
(4)调用格式,通过(2)中链接访问后: 
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.trades.sold.get/4.0.0?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{ "page_no":"1","page_size":"20","start_created":"1566982033","end_created":"1567068433"}'

(6)JAVA 调用示例:

Token token = new Token("e77ee84d0d8945d90fcca7d498a7d8e2");
DefaultYZClient yzClient = new DefaultYZClient();
YouzanTradesSoldGet youzanTradesSoldGet = new YouzanTradesSoldGet();
//创建参数对象,并设置参数
 YouzanTradesSoldGetParams youzanTradesSoldGetParams = new YouzanTradesSoldGetParams();
 SimpleDateFormat date = new SimpleDateFormat("yyyy-MM-dd");
 Date startcreat = date.parse("2019-05-01");
 Date endcreat = date.parse("2019-07-01");
 youzanTradesSoldGetParams.setStartCreated(startcreat);
 youzanTradesSoldGetParams.setEndCreated(endcreat);
 youzanTradesSoldGetParams.setStatus("TRADE_REFUND");
 youzanTradesSoldGetParams.setTid("E20190819113751072500019");
 youzanTradesSoldGetParams.setPageNo(1);
 youzanTradesSoldGetParams.setPageSize(20);
 youzanTradesSoldGet.setAPIParams(youzanTradesSoldGetParams);
 YouzanTradesSoldGetResult result = yzClient.invoke(youzanTradesSoldGet, token, YouzanTradesSoldGetResult.class);

——对于购买了 APP 开店服务的客户,想要查询某个客户通过 APP 渠道产生的所有订单信息,以此来统计 APP 渠道的流量变现的情况,或者用于其他运营用途;这种场景下,使用哪个场景可以专门查询 APP 渠道的用户订单列表?
(1)根据第三方用户 id 获取交易订单列表:youzan.trades.sold.outer.get.3.0.0
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/198
(3)重要字段说明:
》》outer_type:三方用户 ua,商家在对接 appsdk 时,在初始化 SDK 这步设置的用户 ua,值就是申请开发者应用后分配到的 client_id;
》》outer_user_id:三方 APP 用户的 user_id,在 APPSDK 对接流程 - 打通登录态时传给有赞登录接口的 open_user_id;
》》page_no:页码,即拉取第几页的数据,最大不超过 100;
》》page_size:每页条数,最大不超过 100,建议使用默认值 20;
》》use_has_next:是否启用 has_next 分页判断方式;如果不启用,则按照设置的参数拉取订单;如果启用,需要判断响应参数“has_next”的值,如果为 true 则继续获取下一页,如果为 false 则停止获取;
(4)调用格式,通过(2)中链接访问后:
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.trades.sold.outer.get/3.0.0?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{"page_no":"1","page_size":"20","use_has_next":"true","outer_user_id":"6781567068433","outer_type":"a89887778388373"}'

(6)JAVA 调用示例:
暂无

2、同步订单详情场景
场景说明:商家需要查询某一笔订单的详情,并同步到线下 erp 进行拆单发货,发货后同步物流状态等;订单详情接口返回的字段比订单列表接口更加详细,商家可自行根据自己的需要来决定调用哪一个接口;
——通过哪个接口可以获取订单详细信息?
(1)获取单笔订单详情信息:youzan.trade.get.4.0.0
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/120
(3)重要字段说明:
》》tid:订单号,可以从微商城后台 - 订单 - 所有订单列表中查看到,也可以通过接口:youzan.trades.sold.get.4.0.0 获取;
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/157批量获取后保存使用;
(4)调用格式,通过(2)中链接访问后: 
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.trade.get/4.0.0?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{ "tid":"E20190807898999933333"}'

(6)JAVA 调用示例:

Token token = new Token("e77ee84d0d8945d90fcca7d498a7d8e2");
DefaultYZClient yzClient = new DefaultYZClient();
 YouzanTradeGet youzanTradeGet = new YouzanTradeGet();
 //创建参数对象,并设置参数
 YouzanTradeGetParams youzanTradeGetParams = new YouzanTradeGetParams();
 String tid= new String("E20190826093205069900001");
 youzanTradeGetParams.setTid("E20190826093205069900001");
 youzanTradeGet.setAPIParams(youzanTradeGetParams);
 YouzanTradeGetResult result = yzClient.invoke(youzanTradeGet, token, YouzanTradeGetResult.class);

3、特殊订单信息修改场景
场景说明:商家在接收到的海量订单中,会有一部分订单需要特殊关注或增加备注说明,还有一部分订单可能会因为商家自己给的一些优惠需要改价,本场景说明如何对这类订单信息进行备注和信息修改。
——如何给需要关注的订单增加备注信息?微商城后台 - 订单 - 所有订单,找到对应订单后,点击“备注”即可添加订单备注信息; 
image.png

——备注添加完成后,在订单的下方会显示备注信息; 
image.png

——通过哪个接口可以给对应的订单添加备注并注明备注星级?
(1)增加 / 修改订单备注:youzan.trade.memo.update.3.0.0
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/137
(3)重要字段说明:
》》flag:订单备注加星标,取值 1-5,星标越多标明越重要;
》》memo:订单备注,传入订单备注内容,有违禁词限制;
》》tid:需要添加备注的订单号,订单号可以从后台订单管理中获取,也可以通过接口:youzan.trades.sold.get.4.0.0 获取;
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/157获取后保存使用;
(4)调用格式,通过(2)中链接访问后: 
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.trade.memo.update/3.0.0?access_token=56ca720cb5d365d837866581cbab5da8" -H 'content-type: application/json' -d '{ "tid":"E20190819113751072500019","memo":"优惠订单,请运营人员及时改价","flag":"3"}'

(6)JAVA 调用示例:

Token token = new Token("56ca720cb5d365d837866581cbab5da8");
DefaultYZClient yzClient = new DefaultYZClient();
YouzanTradeMemoUpdate youzanTradeMemoUpdate = new YouzanTradeMemoUpdate();
//创建参数对象,并设置参数
YouzanTradeMemoUpdateParams youzanTradeMemoUpdateParams = new YouzanTradeMemoUpdateParams();
youzanTradeMemoUpdateParams.setFlag("3");
youzanTradeMemoUpdateParams.setMemo("优惠订单,请运营人员及时改价");
youzanTradeMemoUpdateParams.setTid("E20190826093205069900001");
youzanTradeMemoUpdate.setAPIParams(youzanTradeMemoUpdateParams);
YouzanTradeMemoUpdateResult result = yzClient.invoke(youzanTradeMemoUpdate, token, YouzanTradeMemoUpdateResult.class);

——商家提供了特殊的优惠,买家下单后,在支付之前需要商家改价,该如何操作?微商城后台 - 订单 - 订单管理,找到买家未支付的订单后可以进行订单改价;  
image.png
image.png

——通过哪个接口可以修改指定订单的价格?
(1)订单改价:youzan.trade.price.update.3.0.0
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/347
(3)重要字段说明:
》》is_allow_preference:改价后是否允许买家再使用其他优惠,0 表示不允许,1 表示允许;比如传入 0,则买家无法再享受优惠券、会员折扣等优惠;
》》post_fee:邮费价格,单位元;
》》price_change:价格增减,单位元;如果是涨价,传入正数,如果是减价,传入负数;
》》tid:需要添加备注的订单号,订单号可以从后台订单管理中获取,也可以通过接口:youzan.trades.sold.get.4.0.0
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/157 获取后保存使用;
(4)调用格式,通过(2)中链接访问后:
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.trade.price.update/3.0.0?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{ "price_change":"10","post_fee":"5","tid":"E20190826093205069900001","is_allow_preference":"0"}'

(6)JAVA 调用示例:

Token token = new Token("56ca720cb5d365d837866581cbab5da8");
DefaultYZClient yzClient = new DefaultYZClient();
YouzanTradePriceUpdate youzanTradePriceUpdate = new YouzanTradePriceUpdate();
//创建参数对象,并设置参数
YouzanTradePriceUpdateParams youzanTradePriceUpdateParams = new YouzanTradePriceUpdateParams();
youzanTradePriceUpdateParams.setTid("");
youzanTradePriceUpdateParams.setIsAllowPreference(0);
youzanTradePriceUpdateParams.setPostFee("5");
youzanTradePriceUpdateParams.setPriceChange("10");
youzanTradePriceUpdate.setAPIParams(youzanTradePriceUpdateParams);
YouzanTradePriceUpdateResult result = yzClient.invoke(youzanTradePriceUpdate, token, YouzanTradePriceUpdateResult.class);

4、订单物流发货场景
场景说明:对于需要物流发货的订单,买家下单支付完成后,商家需要进行发货,发货后需要将对应的物流信息同步到有赞,订单状态则由“等待商家发货”变为“商家已发货”;
——如何在微商城后台对订单进行发货?微商城后台 - 订单 - 所有订单,找到对应订单后,点击“发货”即可对订单进行发货操作,填写相应物流信息; 
image.png

——填写物流信息后点击发货即可; 
image.png

——通过哪个接口可以快速的对订单进行发货操作?
(1)订单发货接口:youzan.logistics.online.confirm.3.0.0
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-316/detail/api/0/66
(3)重要字段说明:
》》is_no_express:发货是否无需物流,如果为 0 则必须传递物流参数,如果为 1 则无需传递物流参数(out_stype 和 out_sid),默认为 0;
》》oids:交易明细单号列表,当一个订单包含多种商品时,会自动生成多个 oid,如果需要拆单发货,使用该字段指定要发货的商品交易明细编号,多个明细编号用半角逗号“,”分隔;不需要拆单发货,则该字段不传或值为空。该字段可以通过接口获取:youzan.trade.get.4.0.0;
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/120
》》out_sid:快递单号,物流发货的实际快递单号;
》》out_stype:物流公司编号,可以通过接口获取:youzan.logistics.goodsexpress.get.3.0.0
链接地址:https://doc.youzanyun.com/doc#/content/API/1-316/detail/api/0/5
》》tid:订单号,需要发货的订单号,可以通过接口获取:youzan.trades.sold.get.4.0.0
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/157
(4)调用格式,通过(2)中链接访问后:
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.trades.sold.get/4.0.0?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{ "out_stype":"1","out_sid":"90898989089380","tid":"E20190716165622057400039"}'

(6)JAVA 调用示例:

Token token = new Token("492f892459dce39286c04d27af7187a5");
DefaultYZClient yzClient = new DefaultYZClient();
YouzanLogisticsOnlineConfirm youzanLogisticsOnlineConfirm = new YouzanLogisticsOnlineConfirm();
//创建参数对象,并设置参数
YouzanLogisticsOnlineConfirmParams youzanLogisticsOnlineConfirmParams = new YouzanLogisticsOnlineConfirmParams();
youzanLogisticsOnlineConfirmParams.setTid("E20190731170833057400027");
youzanLogisticsOnlineConfirmParams.setOids("1531004282666499716");
youzanLogisticsOnlineConfirmParams.setOutStype("2");
youzanLogisticsOnlineConfirmParams.setOutSid("1234588899");
youzanLogisticsOnlineConfirm.setAPIParams(youzanLogisticsOnlineConfirmParams);
YouzanLogisticsOnlineConfirmResult result = yzClient.invoke(youzanLogisticsOnlineConfirm, token, YouzanLogisticsOnlineConfirmResult.class);

——通过哪个接口可以对订单中的商品发货多个运单?
(1)单商品分为多个运单发货接口:youzan.trade.dc.delivery.ordersingleitemsend.3.0.1
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-381/detail/api/0/525
(3)重要字段说明:
》》num:包裹中商品的件数;注意:包裹中的商品数量要等于订单中的商品数量;例如,你的订单中商品 A 的件数是 3,即发货商品 A 包裹中的商品 num=3;
》》oid:待发货的商品明细 oid,该字段可以通过接口获取:youzan.trade.get.4.0.0;
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/120
》》tid:订单号,需要发货的订单号,可以通过接口获取:youzan.trades.sold.get.4.0.0
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/157
(4)调用格式,通过(2)中链接访问后:
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.trade.dc.delivery.ordersingleitemsend/3.0.1?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{ "ex_packages":[{"express":{"express_id":7,"express_name":"申通快递","express_no":" 234186779829"},"num":1}],"yz_open_id":"XDs1ADhv593183504074809344","kdt_id":200002,"oid":1535087697051277787, "total_num":1,"request_id":"1",	"tid":"E20190712183638080300053"}'

 (6)JAVA 调用示例:

Token token = new Token("492f892459dce39286c04d27af7187a5");
DefaultYZClient yzClient = new DefaultYZClient();
YouzanTradeDcDeliveryOrdersingleitemsend youzanTradeDcDeliveryOrdersingleitemsend = new YouzanTradeDcDeliveryOrdersingleitemsend();
//创建参数对象,并设置参数
YouzanTradeDcDeliveryOrdersingleitemsendParams youzanTradeDcDeliveryOrdersingleitemsendParams = new YouzanTradeDcDeliveryOrdersingleitemsendParams();
youzanTradeDcDeliveryOrdersingleitemsendParams.setTid("E20190802113039057400015");
youzanTradeDcDeliveryOrdersingleitemsendParams.setRequestId("898");
youzanTradeDcDeliveryOrdersingleitemsendParams.setKdtId(471425589L);
youzanTradeDcDeliveryOrdersingleitemsendParams.setOid(1531331829757386569L);
youzanTradeDcDeliveryOrdersingleitemsendParams.setTotalNum(2);
List<YouzanTradeDcDeliveryOrdersingleitemsendParams.YouzanTradeDcDeliveryOrdersingleitemsendParamsExpackages> expackages =new ArrayList<YouzanTradeDcDeliveryOrdersingleitemsendParams.YouzanTradeDcDeliveryOrdersingleitemsendParamsExpackages>();
//申明list数组
YouzanTradeDcDeliveryOrdersingleitemsendParams.YouzanTradeDcDeliveryOrdersingleitemsendParamsExpackages youzanTradeDcDeliveryOrdersingleitemsendParamsExpackages = new YouzanTradeDcDeliveryOrdersingleitemsendParams.YouzanTradeDcDeliveryOrdersingleitemsendParamsExpackages();
YouzanTradeDcDeliveryOrdersingleitemsendParams.YouzanTradeDcDeliveryOrdersingleitemsendParamsExpress express =new YouzanTradeDcDeliveryOrdersingleitemsendParams.YouzanTradeDcDeliveryOrdersingleitemsendParamsExpress();
express.setExpressId(1);
express.setExpressName("申通快递");
express.setExpressNo("29898989826");
youzanTradeDcDeliveryOrdersingleitemsendParamsExpackages.setNum(1);
youzanTradeDcDeliveryOrdersingleitemsendParamsExpackages.setExpress(express);
expackages.add(youzanTradeDcDeliveryOrdersingleitemsendParamsExpackages);
express = new YouzanTradeDcDeliveryOrdersingleitemsendParams.YouzanTradeDcDeliveryOrdersingleitemsendParamsExpress();
express.setExpressId(2);
express.setExpressName("中通快递");
express.setExpressNo("29898989844");
youzanTradeDcDeliveryOrdersingleitemsendParamsExpackages = new YouzanTradeDcDeliveryOrdersingleitemsendParams.YouzanTradeDcDeliveryOrdersingleitemsendParamsExpackages();
youzanTradeDcDeliveryOrdersingleitemsendParamsExpackages.setExpress(express);
youzanTradeDcDeliveryOrdersingleitemsendParamsExpackages.setNum(1);
expackages.add(youzanTradeDcDeliveryOrdersingleitemsendParamsExpackages);
youzanTradeDcDeliveryOrdersingleitemsendParams.setExPackages(expackages);
youzanTradeDcDeliveryOrdersingleitemsend.setAPIParams(youzanTradeDcDeliveryOrdersingleitemsendParams);
    YouzanTradeDcDeliveryOrdersingleitemsendResult result = yzClient.invoke(youzanTradeDcDeliveryOrdersingleitemsend, token, YouzanTradeDcDeliveryOrdersingleitemsendResult.class);

注意:
1. 单商品发货接口:
适用于:
一个订单下有 1 个商品,要分为多个运单发货;
一个订单下有 n 个商品,其中某个商品数量大于 1,要分为多个运单发货;
注:如果是第 2 种情况,要一次性发完,即发货商品的包裹中数量要等于订单中的发货商品数量;
2. 订单发货接口(正常的普通发货接口)
适用于:
一个订单下有多种商品,要拆单发货(一个商品仅支持一个运单);
一个订单下有单个商品,卖家要进行发货操作;
——如果第一次填写的物流信息有误或者因为其他因素需要更改,该如何操作? 微商城后台 - 订单 - 所有订单,找到已经发货的订单,点击“修改物流”即可更改物流信息; 
image.png

——需要注意,物流信息只允许更改一次,所以请谨慎更改和填写;
image.png

——通过哪个接口可以修改物流信息?
(1)修改物流信息:youzan.logistics.online.update.3.0.1
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-381/detail/api/0/524 
(3)重要字段说明:
》》tid:订单号,需要修改物流信息的订单号,可以通过接口:youzan.trades.sold.get.4.0.0
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/157 获取;
》》trade_express_modify:需要修改的物流信息,express_id 物流公司 ID 可以通过接口:youzan.logistics.goodsexpress.get.3.0.0 获取
链接地址:https://doc.youzanyun.com/doc#/content/API/1-316/detail/api/0/5 获取后保存使用;
(4)调用格式,通过(2)中链接访问后: 
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.logistics.online.update/3.0.1?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{ "yz_open_id":"XDs1ADhv593183504074809344",	"tid":"E20190712183638080300053","trade_express_modify": {"dist_id":"201903251604480000010474","express_no":"246386761809","express_id":"7", "version":"1"}}'

(6)JAVA 调用示例:

Token token = new Token("492f892459dce39286c04d27af7187a5");
DefaultYZClient yzClient = new DefaultYZClient();
YouzanTradeLaterReceiveUpdate youzanTradeLaterReceiveUpdate = new YouzanTradeLaterReceiveUpdate();
//创建参数对象,并设置参数
YouzanTradeLaterReceiveUpdateParams youzanTradeLaterReceiveUpdateParams = new YouzanTradeLaterReceiveUpdateParams();
youzanTradeLaterReceiveUpdateParams.setTid("E20190627113929026200035");
youzanTradeLaterReceiveUpdate.setAPIParams(youzanTradeLaterReceiveUpdateParams);
YouzanTradeLaterReceiveUpdateResult result = yzClient.invoke(youzanTradeLaterReceiveUpdate, token, YouzanTradeLaterReceiveUpdateResult.class);

5、订单到店自提场景
场景说明:有赞商城的订单是支持到店自提的,有赞微商城线上下单,线下门店自提核销,如何做到线上线下的数据同步?
——到店自提的订单在哪里查看?和普通订单有什么区别?微商城后台 - 订单 - 所有订单,在筛选条件中选择“上门自提”即可查看到所有到店自提的订单; 
image.png

——买家在线下门店自提订单后,如何在微商城后台进行发货操作? 
image.png

——买家到线下门店领取商品,商家可以通过哪个接口核销到店自提订单?
(1)核销到店自提订单:youzan.trade.selffetchcode.apply.3.0.0
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-429/detail/api/0/139 
(3)接口说明:该接口调用成功后,订单状态将由“等待商家发货”变为“商家已发货”;
(4)重要字段说明:
》》code:消费者端的到店自提订单提货码;调用接口时,一般是线下使用扫码枪扫描核销码,识别核销码后调用核销接口;
》》extra_info:核销人(开发者根据自己业务规则传,一般为网点号或手机号)(5)调用格式,通过(2)中链接访问后: 
image.png

(6)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.trade.selffetchcode.apply/3.0.0?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{ "extra_info":"18257565678",	"code":"712183638080300053"}'

(7)JAVA 调用示例:

Token token = new Token("492f892459dce39286c04d27af7187a5");
DefaultYZClient yzClient = new DefaultYZClient();
YouzanTradeSelffetchcodeApply youzanTradeSelffetchcodeApply = new YouzanTradeSelffetchcodeApply();
//创建参数对象,并设置参数
YouzanTradeSelffetchcodeApplyParams youzanTradeSelffetchcodeApplyParams = new YouzanTradeSelffetchcodeApplyParams();
youzanTradeSelffetchcodeApplyParams.setCode("9909093033");
youzanTradeSelffetchcodeApplyParams.setExtraInfo("18257677878");
youzanTradeSelffetchcodeApply.setAPIParams(youzanTradeSelffetchcodeApplyParams);
try {
YouzanTradeSelffetchcodeApplyResult result = yzClient.invoke(youzanTradeSelffetchcodeApply, token, YouzanTradeSelffetchcodeApplyResult.class);

——线下核销自提订单后,通过哪个接口可以将订单标记为买家已签收?
(1)卖家标记签收:youzan.logistics.online.marksign.3.0.0
(2)链接地址:https://doc.youzanyun.com/doc#/content/API/1-316/detail/api/0/299 
(3)重要字段说明:
》》tid:订单号,需要标记为签收状态的订单号,可以通过接口:youzan.trades.sold.get.4.0.0
链接地址:https://doc.youzanyun.com/doc#/content/API/1-305/detail/api/0/157 获取;
(4)调用格式,通过(2)中链接访问后:
image.png

(5)HTTP 调用示例:

curl -X POST "https://open.youzanyun.com/api/youzan.logistics.online.marksign/3.0.0?access_token=c3220121ae0fc6c4e11123370e0d1b03" -H 'content-type: application/json' -d '{"tid":"E20190712183638080300053"}'

(6)JAVA 调用示例:

Token token = new Token("492f892459dce39286c04d27af7187a5");
DefaultYZClient yzClient = new DefaultYZClient();
YouzanLogisticsOnlineMarksign youzanLogisticsOnlineMarksign = new YouzanLogisticsOnlineMarksign();
//创建参数对象,并设置参数
YouzanLogisticsOnlineMarksignParams youzanLogisticsOnlineMarksignParams = new YouzanLogisticsOnlineMarksignParams();
youzanLogisticsOnlineMarksignParams.setTid("E20190712183638080300053");
youzanLogisticsOnlineMarksign.setAPIParams(youzanLogisticsOnlineMarksignParams);
YouzanLogisticsOnlineMarksignResult result = yzClient.invoke(youzanLogisticsOnlineMarksign, token, YouzanLogisticsOnlineMarksignResult.class);

三、使用 Postman 接口测试工具排查问题
      调用有赞 API 接口出现问题时,可以使用 Postman 接口调试工具对调用参数进行测试,以此来确定是否是调用参数的问题。
      Postman 接口测试工具下载地址:https://developers.youzanyun.com/article/1560842143144
      测试工具调用示例:获取单笔订单详情 -youzan.trade.get 
image.png