Exemple #1
0
        /// <summary>
        /// 异步回执
        /// </summary>
        /// <param name="requestStr">http请求信息</param>
        /// <returns></returns>
        /// <remarks>2015-10-12 杨浩 创建</remarks>
        public override Result NotifyReceiptDZ30(string requestStr)
        {
            //{"customsInfos":[{"amount":"2940","customsChannel":"GUANGZHOUSP","freight":"0","goodsAmount":"1750","status":"SUCCESS","tax":"1190"}],"hmac":"32e08a6bd21d00b73f7e9ec4c95b7364","merchantId":"120140856","paySerialNumber":"03d47f0ab0834d9693ee60a32f832be9"}
            var result = base.NotifyReceiptDZ30(requestStr);

            try
            {
                string key = config.EhkingKey;

                var    back            = JObject.Parse(requestStr);
                string paySerialNumber = back["paySerialNumber"].ToString();

                //BLL.Log.LocalLogBo.Instance.Write("异步是否执到行此步骤:" + paySerialNumber, "NotifyReceiptDZ30Log1");

                var onlinePayment = Hyt.BLL.Finance.FinanceBo.Instance.GetOnlinePaymentByVoucherNo(paySerialNumber);
                if (onlinePayment == null)
                {
                    result.Status  = false;
                    result.Message = "支付信息不存在!";
                    return(result);
                }
                var soOrder = BLL.Order.SoOrderBo.Instance.GetEntity(onlinePayment.SourceSysNo);


                if (soOrder != null)
                {
                    var customsInfos          = back["customsInfos"][0];
                    OrderStatus.支付报关状态 status = OrderStatus.支付报关状态.处理中;
                    if (customsInfos["status"].ToString() == "SUCCESS")
                    {
                        status         = OrderStatus.支付报关状态.成功;
                        result.Status  = true;
                        result.Message = "报关成功!";
                        BLL.Log.SysLog.Instance.Info(LogStatus.系统日志来源.后台, "订单编号:" + soOrder.SysNo + ",支付信息报关成功!", LogStatus.系统日志目标类型.订单支付报关, soOrder.SysNo, 0);
                    }
                    else if (customsInfos["status"].ToString() == "FAILED")
                    {
                        status         = OrderStatus.支付报关状态.失败;
                        result.Status  = false;
                        result.Message = "报关失败!";
                    }

                    if ("PROCESSING" != customsInfos["status"].ToString())
                    {
                        Hyt.BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)status, 0, soOrder.SysNo);
                    }
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
                BLL.Log.SysLog.Instance.Info(LogStatus.系统日志来源.后台, "支付信息报关失败:" + ex.Message, LogStatus.系统日志目标类型.订单支付报关, 0, 0);

                BLL.Log.LocalLogBo.Instance.Write("报错!" + ex.Message, "NotifyReceiptDZ30Log2");
            }

            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 异步回执
        /// </summary>
        /// <param name="requestStr">http请求信息</param>
        /// <returns></returns>
        /// <remarks>2015-10-12 杨浩 创建</remarks>
        public override Result NotifyReceipt(string requestStr)
        {
            var result = base.NotifyReceipt(requestStr);

            try
            {
                string key = config.EhkingKey;

                var    back            = JObject.Parse(requestStr);
                string paySerialNumber = back["paySerialNumber"].ToString();


                var onlinePayment = Hyt.BLL.Finance.FinanceBo.Instance.GetOnlinePaymentByVoucherNo(paySerialNumber);
                if (onlinePayment == null)
                {
                    result.Status  = false;
                    result.Message = "支付信息不存在!";
                    return(result);
                }
                var soOrder = BLL.Order.SoOrderBo.Instance.GetEntity(onlinePayment.SourceSysNo);


                if (soOrder != null)
                {
                    var customsInfos          = back["customsInfos"][0];
                    OrderStatus.支付报关状态 status = OrderStatus.支付报关状态.失败;
                    if (customsInfos["status"].ToString() == "SUCCESS")
                    {
                        status         = OrderStatus.支付报关状态.成功;
                        result.Status  = true;
                        result.Message = "报关成功!";
                        BLL.Log.SysLog.Instance.Info(LogStatus.系统日志来源.前台, "订单编号:" + soOrder.SysNo + ",支付信息报关成功!", LogStatus.系统日志目标类型.订单支付报关, soOrder.SysNo, 0);
                    }
                    else if (customsInfos["status"].ToString() == "FAILED")
                    {
                        status         = OrderStatus.支付报关状态.失败;
                        result.Status  = false;
                        result.Message = "报关失败!";
                    }

                    if ("PROCESSING" != customsInfos["status"].ToString())
                    {
                        Hyt.BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)status, 0, soOrder.SysNo);
                    }
                }
            }
            catch (Exception ex)
            {
                result.Status  = false;
                result.Message = ex.Message;
                BLL.Log.LocalLogBo.Instance.Write("报错!" + ex.Message, "NotifyReceiptLog");
            }

            return(result);
        }
Exemple #3
0
        /// <summary>
        /// 海关支付报关查询
        /// </summary>
        /// <param name="orderId">订单编号</param>
        /// <returns></returns>
        /// <remarks>2015-12-31 杨浩 创建</remarks
        public override Result CustomsQuery(int orderId)
        {
            Result result = new Result()
            {
                Status = false
            };

            var order = BLL.Order.SoOrderBo.Instance.GetEntity(orderId);

            var ehkingMerchantId = config.EhkingMerhantId;
            var ehkingKey        = config.EhkingKey;

            var warehouse = BLL.Warehouse.WhWarehouseBo.Instance.GetWarehouse(order.DefaultWarehouseSysNo);

            if (warehouse != null && warehouse.WarehouseType == (int)Model.WorkflowStatus.WarehouseStatus.仓库类型.门店)
            {
                var dealer = BLL.Stores.StoresBo.Instance.GetStoreByWarehouseId(warehouse.SysNo);
                if (dealer != null)
                {
                    var dealerPayType = BLL.Stores.StoresBo.Instance.GetStorePayType(dealer.SysNo);
                    if (!string.IsNullOrWhiteSpace(dealerPayType.AppKey) && !string.IsNullOrWhiteSpace(dealerPayType.AppSecret) && dealerPayType.PaymentTypeSysNo == (int)Model.CommonEnum.PayCode.易宝)
                    {
                        ehkingMerchantId = dealerPayType.AppKey;
                        ehkingKey        = dealerPayType.AppSecret;
                    }
                }
            }

            var onlinePaymentFilter = new ParaOnlinePaymentFilter()
            {
                OrderSysNo = orderId,
                Id         = 1
            };
            var onlinePayments = Hyt.BLL.Finance.FinanceBo.Instance.GetOnlinePayments(onlinePaymentFilter).Rows;

            if (onlinePayments.Count() <= 0)
            {
                result.Status  = false;
                result.Message = "订单没有支付信息!";
            }
            else
            {
                string responsestr = "";
                string data        = "";
                try
                {
                    string     serialNumber = onlinePayments.First().VoucherNo;
                    string     url          = "https://api.ehking.com/customs/query";//查询网关
                    string     hmac         = Digest.HmacSign(ehkingMerchantId + serialNumber, ehkingKey);
                    HttpClient client       = new HttpClient(url);
                    data        = "{\"merchantId\":\"" + ehkingMerchantId + "\",\"paySerialNumber\":\"" + serialNumber + "\",\"hmac\":\"" + hmac + "\"}";
                    responsestr = client.Post(data);

                    var back                  = JObject.Parse(responsestr);
                    var customsInfos          = back.Property("customsInfos") != null ? back["customsInfos"][0] : back;
                    OrderStatus.支付报关状态 status = OrderStatus.支付报关状态.失败;
                    if (customsInfos["status"].ToString() == "SUCCESS")
                    {
                        result.Message = "SUCCESS";
                        result.Status  = true;
                        status         = OrderStatus.支付报关状态.成功;
                    }
                    else if ("PROCESSING" == customsInfos["status"].ToString())
                    {
                        result.Message = "海关正在审核...,稍后再查询!";
                        status         = OrderStatus.支付报关状态.处理中;
                    }
                    else
                    {
                        //BLL.Log.LocalLogBo.Instance.Write("失败!" + responsestr, "CustomsQueryLog");
                        result.Message = "易宝返回状态:" + customsInfos["status"].ToString() + "(" + (back.Property("customsInfos") == null?customsInfos["error"].ToString():"") + ")";
                    }


                    Hyt.BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)status, 0, orderId);
                }
                catch (Exception ex)
                {
                    result.Status  = false;
                    result.Message = "系统异常!";
                    BLL.Log.LocalLogBo.Instance.Write("\r\n报错!" + ex.Message + ";responsestr=" + responsestr + ";data=" + data, "CustomsQuery");
                }
            }

            return(result);
        }