/// <summary> /// 海关报关 /// </summary> /// <param name="order"></param> /// <returns></returns> public override Model.Result ApplyToCustoms(Model.SoOrder order) { IList <FnOnlinePayment> list = FinanceBo.Instance.GetOnlinePaymentList(order.SysNo); var result = new Result(); return(result); }
public override Model.Result ApplyToCustoms(Model.SoOrder order) { Result result = new Result(); try { IList <FnOnlinePayment> list = FinanceBo.Instance.GetOnlinePaymentList(order.SysNo); var receiveAddress = Hyt.BLL.Order.SoOrderBo.Instance.GetOrderReceiveAddress(order.ReceiveAddressSysNo); FnOnlinePayment payment = null; if (list.Count > 0) { payment = list[0]; } string param = ""; SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("sign_type", "0"); sParaTemp.Add("service_version", "1.0"); sParaTemp.Add("input_charset", "UTF-8"); sParaTemp.Add("request_id", payment != null ? payment.BusinessOrderSysNo : order.SysNo.ToString()); sParaTemp.Add("notify_url", "http://admin.xrcmall.com"); sParaTemp.Add("mcht_id", config3.MarId); sParaTemp.Add("mcht_customs_code", config3.EbcCode); sParaTemp.Add("mcht_customs_name", config3.EbcName); sParaTemp.Add("currency", "156"); sParaTemp.Add("amount", ((int)(order.OrderAmount * 100)).ToString()); sParaTemp.Add("customs_type", config3.CusCode); sParaTemp.Add("id_type", "01"); sParaTemp.Add("id_no", receiveAddress.IDCardNo); sParaTemp.Add("id_name", receiveAddress.Name); sParaTemp.Add("is_split", "Y"); sParaTemp.Add("sub_order_no", payment != null ? payment.BusinessOrderSysNo : order.SysNo.ToString()); sParaTemp.Add("sub_order_time", DateTime.Now.ToString("yyyyMMddHHmmss")); foreach (var key in sParaTemp.Keys) { if (!string.IsNullOrEmpty(param)) { param += "&"; } param += key + "=" + sParaTemp[key]; } string md5Key = GetMD5(param + "&key=" + config3.MD5Key); param += "&sign_msg=" + md5Key; string txt = MyHttp.GetResponse(url, param, "UTF-8"); return(result); } catch { result.Status = false; return(result); } }
/// <summary> /// 支付宝海关报关 /// </summary> /// <param name="order"></param> /// <returns></returns> public override Model.Result ApplyToCustoms(Model.SoOrder order) { IList <FnOnlinePayment> list = FinanceBo.Instance.GetOnlinePaymentList(order.SysNo); Result result = new Result(); if (list.Count > 0) { result = AliAcquireCustomsBackData(list[0], order); } else { result.Status = false; result.Message = "未找到支付单,请核实支付订单号有效"; } return(result); }
/// <summary> /// 生成订单的xml信息 /// </summary> /// <param name="companyInfo">公司的信息集合</param> /// <param name="order">订单实体</param> /// <returns>内容信息</returns> public String GetOrderXmlStr(Dictionary <string, string> companyInfo, Model.SoOrder order) { ///商品详情信息 IList <Hyt.Model.SoOrderItem> items = Hyt.BLL.Order.SoOrderBo.Instance.GetOrderItemsByOrderId(order.SysNo); IList <int> proIdList = new List <int>(); foreach (Hyt.Model.SoOrderItem mod in items) { proIdList.Add(mod.SysNo); } IList <Hyt.Model.CBPdProduct> proList = Hyt.BLL.Product.PdProductBo.Instance.GetProductInfoList(proIdList); ///国家列表 List <Hyt.Model.Origin> originList = Hyt.BLL.Basic.OriginBo.Instance.GetOrigin(); ///地址信息,省 市 区/县 Hyt.Model.BsArea cityArea; Hyt.Model.BsArea area; Hyt.Model.BsArea provinceArea = Hyt.BLL.Basic.BasicAreaBo.Instance.GetProvinceEntity(order.ReceiveAddress.AreaSysNo, out cityArea, out area); ///付款方式 Hyt.Model.BsPaymentType payType = Hyt.BLL.Basic.PaymentTypeBo.Instance.GetEntity(order.PayTypeSysNo); ///在线付款商品编号 Hyt.Model.FnOnlinePayment onlinePayment = Hyt.BLL.Finance.FinanceBo.Instance.GetOnlinePaymentBySourceSysNo(Hyt.Model.WorkflowStatus.FinanceStatus.网上支付单据来源.销售单, order.SysNo); ///获取商品的物流信息数据 Hyt.Model.LgDeliveryType deliveryType = Hyt.BLL.Logistics.DeliveryTypeBo.Instance.GetDeliveryType(order.DeliveryTypeSysNo); ///物流编号数据 Hyt.Model.CrossBorderLogisticsOrder logisticsOrderMod = Hyt.BLL.CrossBorderLogistics.CrossBorderLogisticsOrderBo.Instance.GetEntityByOrderSysNo(order.SysNo); ///报文数据 StringBuilder orderXmlSb = new StringBuilder(); orderXmlSb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); orderXmlSb.Append("<Order>\n"); orderXmlSb.Append(" <OrderHead>\n"); orderXmlSb.Append(" <ecCode>" + companyInfo["ecCode"] + "</ecCode>\n"); orderXmlSb.Append(" <cbeCode>" + companyInfo["cbeCode"] + "</cbeCode>\n"); orderXmlSb.Append(" <ecName>" + companyInfo["ecName"] + "</ecName>\n"); orderXmlSb.Append(" <cbeName>" + companyInfo["cbeName"] + "</cbeName>\n"); orderXmlSb.Append(" <ecpCodeCiq>" + companyInfo["ecpCodeCiq"] + "</ecpCodeCiq>\n"); orderXmlSb.Append(" <ecpCodeCus>" + companyInfo["ecpCodeCus"] + "</ecpCodeCus>\n"); orderXmlSb.Append(" <ecpNameCiq>" + companyInfo["ecpNameCiq"] + "</ecpNameCiq>\n"); orderXmlSb.Append(" <ecpNameCus>" + companyInfo["ecpNameCus"] + "</ecpNameCus>\n"); orderXmlSb.Append(" <orderNo>" + order.SysNo + "</orderNo>\n"); orderXmlSb.Append(" <charge>" + order.OrderAmount + "</charge>\n"); orderXmlSb.Append(" <goodsValue>" + (order.ProductAmount - order.ProductDiscountAmount - order.ProductChangeAmount) + "</goodsValue>\n"); orderXmlSb.Append(" <freight>" + order.FreightAmount + "</freight>\n"); orderXmlSb.Append(" <other></other>\n"); orderXmlSb.Append(" <tax>" + order.TaxFee + "</tax>\n"); orderXmlSb.Append(" <customer>" + order.Customer.Name + "</customer>\n"); orderXmlSb.Append(" <shipper>" + Shipper + "</shipper>\n"); orderXmlSb.Append(" <shipperAddress>" + ShipperAddress + "</shipperAddress>\n"); orderXmlSb.Append(" <shipperTelephone>" + ShipperTelephone + "</shipperTelephone>\n"); orderXmlSb.Append(" <shipperCountryCiq>" + ShipperCountryCiq + "</shipperCountryCiq>\n"); orderXmlSb.Append(" <shipperCountryCus>" + ShipperCountryCus + "</shipperCountryCus>\n"); orderXmlSb.Append(" <consignee>" + order.ReceiveAddress.Name + "</consignee>\n"); orderXmlSb.Append(" <consigneeProvince>" + provinceArea.AreaName + "</consigneeProvince>\n"); orderXmlSb.Append(" <consigneeCity>" + cityArea.AreaName + "</consigneeCity>\n"); orderXmlSb.Append(" <consigneeZone>" + area.AreaName + "</consigneeZone>\n"); orderXmlSb.Append(" <consigneeAddress>" + order.ReceiveAddress.StreetAddress + "</consigneeAddress>\n"); orderXmlSb.Append(" <consigneeTelephone>" + order.ReceiveAddress.MobilePhoneNumber + "</consigneeTelephone>\n"); orderXmlSb.Append(" <consigneeCountryCiq>" + ShipperCountryCiq + "</consigneeCountryCiq>\n"); orderXmlSb.Append(" <consigneeCountryCus>" + ShipperCountryCus + "</consigneeCountryCus>\n"); orderXmlSb.Append(" <idType>1</idType>\n"); orderXmlSb.Append(" <idNumber>" + order.ReceiveAddress.IDCardNo + "</idNumber>\n"); orderXmlSb.Append(" <ieType>I</ieType>\n"); orderXmlSb.Append(" <stockFlag>2</stockFlag>\n"); orderXmlSb.Append(" <batchNumbers>LY20150504001</batchNumbers>\n"); orderXmlSb.Append(" <totalLogisticsNo>" + logisticsOrderMod.ExpressNo + "</totalLogisticsNo>\n"); orderXmlSb.Append(" <tradeCountryCiq>156</tradeCountryCiq>\n"); orderXmlSb.Append(" <tradeCountryCus>142</tradeCountryCus>\n"); orderXmlSb.Append(" <agentCodeCiq></agentCodeCiq>\n"); orderXmlSb.Append(" <agentCodeCus></agentCodeCus>\n"); orderXmlSb.Append(" <agentNameCiq></agentNameCiq>\n"); orderXmlSb.Append(" <agentNameCus></agentNameCus>\n"); orderXmlSb.Append(" <packageTypeCiq>4M</packageTypeCiq>\n"); orderXmlSb.Append(" <packageTypeCus>2</packageTypeCus>\n"); orderXmlSb.Append(" <modifyMark>1</modifyMark>\n"); orderXmlSb.Append(" <note></note>\n"); orderXmlSb.Append(" </OrderHead>\n"); //--商品列表报文 orderXmlSb.Append(" <OrderList>\n"); foreach (Hyt.Model.CBPdProduct pro in proList) { Hyt.Model.SoOrderItem tempItem = items.First(p => p.ProductSysNo == pro.SysNo); orderXmlSb.Append(" <itemNoCiq>" + pro.CIQGoodsNo + "</itemNoCiq>\n"); orderXmlSb.Append(" <itemNoCus>" + pro.CUSGoodsNo + "</itemNoCus>\n"); orderXmlSb.Append(" <goodsNo>" + pro.ErpCode + "</goodsNo>\n"); orderXmlSb.Append(" <shelfGoodsName>" + pro.ProductName + "</shelfGoodsName>\n"); orderXmlSb.Append(" <goodsName>" + pro.EasName + "</goodsName>\n"); orderXmlSb.Append(" <describe></describe>\n"); orderXmlSb.Append(" <codeTs></codeTs>\n"); orderXmlSb.Append(" <ciqCode></ciqCode>\n"); orderXmlSb.Append(" <goodsModel></goodsModel>\n"); orderXmlSb.Append(" <taxCode></taxCode>\n"); orderXmlSb.Append(" <price>" + Convert.ToDecimal((tempItem.SalesAmount + tempItem.ChangeAmount) / tempItem.Quantity).ToString("0.0000") + "</price>\n"); orderXmlSb.Append(" <currencyCiq>156</currencyCiq>\n"); orderXmlSb.Append(" <currencyCus>142</currencyCus>\n"); orderXmlSb.Append(" <quantity>" + tempItem.Quantity + "</quantity>\n"); orderXmlSb.Append(" <priceTotal>" + (tempItem.SalesAmount + tempItem.ChangeAmount).ToString("0.0000") + "</priceTotal>\n"); orderXmlSb.Append(" <unitCiq>122</unitCiq>\n"); orderXmlSb.Append(" <unitCus>122</unitCus>\n"); orderXmlSb.Append(" <discount></discount>\n"); orderXmlSb.Append(" <giftsFlag></giftsFlag>\n"); orderXmlSb.Append(" <originCountryCiq>" + (originList.Find(p => p.SysNo == pro.OriginSysNo).CIQOriginNO) + "</originCountryCiq>\n"); orderXmlSb.Append(" <originCountryCus>" + (originList.Find(p => p.SysNo == pro.OriginSysNo).CusOriginNO) + "</originCountryCus>\n"); orderXmlSb.Append(" <usage></usage>\n"); orderXmlSb.Append(" <wasteMaterials>1</wasteMaterials>\n"); orderXmlSb.Append(" <wrapTypeCiq></wrapTypeCiq>\n"); orderXmlSb.Append(" <wrapTypeCus></wrapTypeCus>\n"); orderXmlSb.Append(" <packNum></packNum>\n"); } orderXmlSb.Append(" </OrderList>\n"); //--物流报文 orderXmlSb.Append(" <OrderPaymentLogistics>\n"); orderXmlSb.Append(" <paymentCode>" + payType.CusPaymentCode + "</paymentCode>\n"); orderXmlSb.Append(" <paymentName>" + payType.CusPaymentName + "</paymentName>\n"); orderXmlSb.Append(" <paymentType></paymentType>\n"); orderXmlSb.Append(" <paymentNo>" + onlinePayment.VoucherNo + "</paymentNo>\n"); orderXmlSb.Append(" <logisticsCodeCiq>" + deliveryType.CIQLogisticsNo + "</logisticsCodeCiq>\n"); orderXmlSb.Append(" <logisticsCodeCus>" + deliveryType.CUSLogisticsNo + "</logisticsCodeCus>\n"); orderXmlSb.Append(" <logisticsNameCiq>" + deliveryType.CIQLogisticsName + "</logisticsNameCiq> \n"); orderXmlSb.Append(" <logisticsNameCus>" + deliveryType.CUSLogisticsName + "</logisticsNameCus>\n"); orderXmlSb.Append(" <totalLogisticsNo>" + logisticsOrderMod.ExpressNo + "</totalLogisticsNo>\n"); orderXmlSb.Append(" <subLogisticsNo></subLogisticsNo>\n"); orderXmlSb.Append(" <logisticsNo></logisticsNo>\n"); orderXmlSb.Append(" <trackNo></trackNo>\n"); orderXmlSb.Append(" <trackStatus></trackStatus>\n"); orderXmlSb.Append(" <crossFreight></crossFreight>\n"); orderXmlSb.Append(" <supportValue></supportValue>\n"); orderXmlSb.Append(" <weight>906</weight>\n"); orderXmlSb.Append(" <netWeight></netWeight>\n"); orderXmlSb.Append(" <quantity>3</quantity>\n"); orderXmlSb.Append(" <deliveryWay></deliveryWay>\n"); orderXmlSb.Append(" <transportationWay>4</transportationWay>\n"); orderXmlSb.Append(" <shipCode>32</shipCode>\n"); orderXmlSb.Append(" <shipName></shipName>\n"); orderXmlSb.Append(" <destinationPort></destinationPort>\n"); orderXmlSb.Append(" </OrderPaymentLogistics>\n"); orderXmlSb.Append("</Order>\n"); return(orderXmlSb.ToString()); }
public override Model.Result ApplyToCustoms(Model.SoOrder order) { Result result = new Result(); try { var list = FinanceBo.Instance.GetOnlinePaymentList(order.SysNo); FnOnlinePayment payment; if (list.Count > 0) { payment = list[0]; } else { result.Status = false; result.Message = "付款单信息无效,请核实订单是否付款?"; return(result); } var baoguanArray = new Object[1]; baoguanArray[0] = new { no_order = payment.BusinessOrderSysNo, //商户网站的订单号;如果是拆单报关模式,填写:子订单号 e_commerce_code = config.EbcCode, e_commerce_name = config.EbcName, pay_amount = order.OrderAmount, //支付金额,拆分后的支付金额之和不能超过订单金额 goods_amount = order.ProductAmount, //报关货款 tax_amount = order.TaxFee, //报关税款 freight = order.FreightAmount, //报关运费 biz_type_code = "2", //业务类型:直购进口:1,网购保税进口:2 baojian = config.ICPType, //留空表示不报检,如果需要报检,请传报检地 如:nansha baojian_no = config.ICPCode, //报检时必填,商户网站在报检局取得的备案号 baojian_name = config.ICPName, //报检时必填,商户网站在报检局备案的企业名称 app_type = "1", //报送类型,1表示新增,2表示变更 channel = config.EbcType //报送通道,1表示总署版 }; JavaScriptSerializer serializer = new JavaScriptSerializer(); string baoguan = Convert.ToBase64String(System.Text.Encoding.UTF8.GetBytes(serializer.Serialize(baoguanArray))); SortedDictionary <string, string> sParaTemp = new SortedDictionary <string, string>(); sParaTemp.Add("partner_id", config.Partner); sParaTemp.Add("charset_name", config.Charset_name.ToLower()); sParaTemp.Add("sign_type", config.Sign_type); sParaTemp.Add("url_custom", config.Server_BackUrl); sParaTemp.Add("no_order", payment.BusinessOrderSysNo); sParaTemp.Add("baoguan", baoguan); result.Message = new Submit().BuildRequest(sParaTemp, "baoguan"); QDResult qdresult = Hyt.Util.Serialization.JsonUtil.ToObject <QDResult>(result.Message); if (qdresult == null) { result.Status = false; return(result); } //-554代表 订单重复,无法新增报关 if (qdresult.ret_code == 0 || qdresult.ret_code == -554) { Hyt.BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus(10, 0, order.SysNo); result.Status = true; } else { result.Status = false; result.Message = qdresult.ret_message; } return(result); } catch (Exception e) { result.Status = false; result.Message = e.Message; return(result); } }