/// <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); }
/// <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); }
/// <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); }