package com.ruoyi.web.controller.yuncang.api.trade;
|
|
import com.alibaba.fastjson2.JSON;
|
import com.alibaba.fastjson2.JSONObject;
|
import com.ruoyi.common.core.exception.ServiceException;
|
import com.ruoyi.common.utils.DateUtils;
|
import com.ruoyi.system.model.TErpProcurement;
|
import com.ruoyi.system.model.TErpProcurementGoods;
|
import com.ruoyi.web.controller.yuncang.utils.WdtClient;
|
import lombok.extern.slf4j.Slf4j;
|
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
@Slf4j
|
public class TradePush {
|
|
/**
|
* 推送erp订单
|
* @param sid 卖家账号,接口请求的公共参数sid
|
* @param appkey 接口账号,接口请求的公共参数appkey
|
* @param appsecret 接口秘钥,接口请求的参数appsecret ,用于计算签名
|
* @param url 接口地址,接口请求的公共参数url
|
* @param erpProcurement 采购单
|
* @param erpProcurementGoods 采购单商品
|
* @param trade_status 平台订单状态较多且涉及变更,详情介绍单击这里
|
* @param clinicName 采购单所属诊所名称
|
* @param status 平台子订单状态,子订单状态可以和主订单不一样,比如其中一个子订单退款完成,其状态是80,但主订单仍然是待发货,可选值同trade_status
|
* @param refund_status 0:无退款,1:取消退款,2:已申请退款,3:等待退货,4:等待收货,5:退款成功。本字段在售前退款的时候,根据不同的场景填写不同的值,eg:申请退款值为2,取消退款值为1……
|
* @param shop_no 代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置,查看路径ERP→设置→基本设置→店铺→店铺列表),用于创建指定店铺单据信息,测试环境店铺编号信息同接口账号。ERP内shop_no对应的“店铺平台”必须为“自有/其它”。正式环境店铺创建成功后ERP会自动授权,如果自动授权失败,在ERP店铺界面(路径ERP→设置→基本设置→店铺→店铺列表)选中授权失败的店铺,点击店铺界面提供的店铺授权按钮重新授权。
|
*/
|
public static JSONObject tradePush(String sid, String appkey, String appsecret, String url,
|
TErpProcurement erpProcurement, List<TErpProcurementGoods> erpProcurementGoods,
|
Integer trade_status,String clinicName,Integer status,Integer refund_status,String shop_no) {
|
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/
|
|
List<Map<String, Object>> trade_list = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> order_list = new ArrayList<Map<String, Object>>();
|
for (TErpProcurementGoods erpProcurementGood : erpProcurementGoods) {
|
Map<String, Object> order_1 = new HashMap<String, Object>();
|
order_1.put("oid", erpProcurementGood.getId());
|
order_1.put("num", erpProcurementGood.getPurchaseCount());
|
order_1.put("price", erpProcurementGood.getPurchasePrice());
|
order_1.put("status", status);
|
order_1.put("refund_status", refund_status);
|
order_1.put("goods_id", "18344");
|
order_1.put("spec_id", "18656");
|
order_1.put("goods_no", "ghs2");
|
order_1.put("spec_no", "ghs201812070212123");
|
order_1.put("goods_name", erpProcurementGood.getGoodsName());
|
order_1.put("discount", 0); //子订单折扣
|
order_1.put("adjust_amount", 0); //手工调整,特别注意:正的表示加价,负的表示减价
|
order_1.put("share_discount", 0);
|
order_list.add(order_1);
|
}
|
|
Map<String, Object> trade_1 = new HashMap<String, Object>();
|
trade_1.put("tid", erpProcurement.getProcurementCode());
|
trade_1.put("trade_status", trade_status);
|
trade_1.put("pay_status", "2");
|
trade_1.put("delivery_term", 1);
|
trade_1.put("trade_time", DateUtils.localDateTimeToDate(erpProcurement.getCreateTime()));
|
trade_1.put("pay_time", DateUtils.localDateTimeToDate(erpProcurement.getPayTime()));
|
trade_1.put("buyer_nick", clinicName);
|
trade_1.put("receiver_name", "123");
|
trade_1.put("receiver_province", "河南省");
|
trade_1.put("receiver_city", "周口市");
|
trade_1.put("receiver_district", "川汇区");
|
trade_1.put("receiver_address", "123");
|
trade_1.put("receiver_mobile", "26283920011");
|
// trade_1.put("logistics_type", 4);
|
trade_1.put("post_amount", 0);
|
trade_1.put("cod_amount", 0);
|
trade_1.put("ext_cod_fee", 0);
|
trade_1.put("other_amount", 0);
|
trade_1.put("paid", erpProcurement.getPayMoney());
|
trade_1.put("order_list", order_list);
|
trade_list.add(trade_1);
|
|
String trade_list_json = JSON.toJSONString(trade_list);
|
|
Map<String, String> params = new HashMap<String, String>();
|
params.put("shop_no", shop_no);
|
params.put("trade_list", trade_list_json);
|
try {
|
String response = client.execute("trade_push.php", params);
|
log.info("推送erp订单结果:{}", response);
|
JSONObject jsonObject = JSONObject.parseObject(response);
|
if (jsonObject.getIntValue("code") == 0) {
|
log.info("推送erp订单成功");
|
return jsonObject;
|
} else {
|
log.info("推送erp订单失败");
|
throw new ServiceException(jsonObject.getString("message"));
|
}
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
public static void main(String[] args) {
|
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/
|
|
List<Map<String, Object>> trade_list = new ArrayList<Map<String, Object>>();
|
List<Map<String, Object>> order_list = new ArrayList<Map<String, Object>>();
|
|
Map<String, Object> order_1 = new HashMap<String, Object>();
|
order_1.put("oid", "ghsTest121101");
|
order_1.put("num", 1);
|
order_1.put("price", 12);
|
order_1.put("status", 30);
|
order_1.put("refund_status", 0);
|
order_1.put("goods_id", "18344");
|
order_1.put("spec_id", "18656");
|
order_1.put("goods_no", "ghs2");
|
order_1.put("spec_no", "ghs201812070212123");
|
order_1.put("goods_name", "123");
|
order_1.put("discount", 0); //子订单折扣
|
order_1.put("adjust_amount", 0); //手工调整,特别注意:正的表示加价,负的表示减价
|
order_1.put("share_discount", 0);
|
|
|
order_list.add(order_1);
|
|
Map<String, Object> trade_1 = new HashMap<String, Object>();
|
trade_1.put("tid", "AT201812110002");
|
trade_1.put("trade_status", 20);
|
trade_1.put("pay_status", "1");
|
trade_1.put("delivery_term", 2);
|
trade_1.put("trade_time", "2018-12-11 14:21:00");
|
trade_1.put("buyer_nick", "三国杀");
|
trade_1.put("receiver_province", "河南省");
|
trade_1.put("receiver_city", "周口市");
|
trade_1.put("receiver_district", "川汇区");
|
trade_1.put("receiver_mobile", "26283920011");
|
trade_1.put("receiver_name", "123");
|
trade_1.put("receiver_address", "123");
|
trade_1.put("logistics_type", 4);
|
trade_1.put("post_amount", 12);
|
trade_1.put("cod_amount", 2);
|
trade_1.put("ext_cod_fee", 0);
|
trade_1.put("other_amount", 1);
|
trade_1.put("paid", 0);
|
trade_1.put("order_list", order_list);
|
|
|
trade_list.add(trade_1);
|
|
String trade_list_json = JSON.toJSONString(trade_list);
|
//System.out.println(purchase_info_json);
|
|
Map<String, String> params = new HashMap<String, String>();
|
params.put("shop_no", "ghs2test");
|
params.put("trade_list", trade_list_json);
|
try {
|
String response = client.execute("trade_push.php", params);
|
System.out.println(response);
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
|
}
|