/// <summary> /// 异步回执 /// </summary> /// <param name="requestStr">http请求信息</param> /// <returns></returns> /// <remarks>2015-10-12 杨浩 创建</remarks> public static Result NotifyReceipt(string requestStr) { var result = 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["ciqInfos"][0]; OrderStatus.支付申报国检状态 status = OrderStatus.支付申报国检状态.处理中; if (customsInfos["status"].ToString() == "SUCCESS") { status = OrderStatus.支付申报国检状态.成功; result.Status = true; result.Message = "异步报检成功!"; } else if (customsInfos["status"].ToString() == "FAILED") { status = OrderStatus.支付申报国检状态.失败; result.Status = false; result.Message = "异步报检失败!"; } BLL.Log.SysLog.Instance.Info(LogStatus.系统日志来源.后台, "订单编号:" + soOrder.SysNo + ",支付信息异步报检" + (result.Status == true?"成功":"失败"), LogStatus.系统日志目标类型.订单支付申报国检, soOrder.SysNo, 0); if ("PROCESSING" != customsInfos["status"].ToString()) { Hyt.BLL.Order.SoOrderBo.Instance.UpdateOrderApiStatus((int)status, 4, soOrder.SysNo); } } } catch (Exception ex) { result.Status = false; result.Message = ex.Message; BLL.Log.LocalLogBo.Instance.Write("报错!" + ex.Message, "NotifyReceiptCIPLog"); } return(result); }
/// <summary> /// 海关支付报关查询 /// </summary> /// <param name="orderId">订单编号</param> /// <returns></returns> /// <remarks>2016-12-26 周 创建</remarks> public static 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/ciq/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("ciqInfos") != null ? back["ciqInfos"][0] : back; OrderStatus.支付申报国检状态 status = OrderStatus.支付申报国检状态.失败; if (customsInfos["status"].ToString() == "SUCCESS") { result.Message = "支付推送国检成功"; 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, 4, 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); }