Example #1
0
        /// <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);
        }
Example #2
0
        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);
            }
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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());
        }
Example #5
0
        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);
            }
        }