using POSV.Entity; using POSV.HttpResponse; using POSV.Utils; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace POSV.HttpApi { public class SplitPayApi : BaseApi { protected static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger(); public Tuple UpdateSplitPay(SplitStorePayEntity splitPay) { try { var uploadObject = BuilderUploadObject(splitPay); string jsonString = JsonUtils.Serialize(uploadObject); var uploadResult = Uploading(jsonString); if (uploadResult.Item1) { logger.Debug($"分账信息修改成功:{jsonString}。"); return new Tuple(true, "分账信息修改成功"); } } catch (Exception ex) { logger.Error(ex, "分账信息修改异常"); return new Tuple(false, "分账信息修改异常"); } return new Tuple(false, "分账信息修改失败"); } private Dictionary BuilderUploadObject(SplitStorePayEntity splitPay) { try { var uploadObject = new Dictionary(); ////上传订单 //splitPay.isUpLoadTicket = true; //uploadObject["Id"] = splitPay.Id; //租户ID uploadObject["tenantId"] = splitPay.TenantId; //前台系统ID uploadObject["clientId"] = splitPay.Id; //设置ID if (string.IsNullOrEmpty(splitPay.ProgramId)) { uploadObject["programId"] = "-1"; } else { uploadObject["programId"] = splitPay.ProgramId; } //门店ID uploadObject["storeId"] = splitPay.StoreId; //分店ID uploadObject["splitStoreId"] = splitPay.SplitStoreId; //门店编号 uploadObject["storeNo"] = splitPay.StoreNo; //付款单号 uploadObject["payNo"] = splitPay.PayNo; //销售单号 uploadObject["busNo"] = splitPay.BusNo; //付款方式编号 uploadObject["payTypeNo"] = splitPay.PayTypeNo; //付款方式 uploadObject["payType"] = splitPay.PayType; //实收金额 uploadObject["paid"] = splitPay.Paid; //找零金额 uploadObject["rchange"] = splitPay.Rchange; //已收金额 uploadObject["money"] = splitPay.Money; //溢出金额 uploadObject["overAmount"] = splitPay.OverAmount; //凭证号 uploadObject["voucherNo"] = splitPay.VoucherNo; //付款时间 uploadObject["payDate"] = splitPay.PayDate; //付款卡号 uploadObject["cardNo"] = splitPay.CardNo; //是否实收 uploadObject["incomeFlag"] = splitPay.IncomeFlag; //第三方扣费类型 uploadObject["otherRateType"] = splitPay.OtherRateType; //第三方扣费值 uploadObject["otherRateValue"] = splitPay.OtherRateValue; //第三方扣费 uploadObject["otherRate"] = splitPay.OtherRate; //支付客户端类型 uploadObject["payClientType"] = splitPay.PayClientType; //支付渠道 uploadObject["payChannel"] = splitPay.PayChannel; //扣率 uploadObject["deductionRate"] = splitPay.DeductionRate; //扣款 uploadObject["chargeBack"] = splitPay.ChargeBack; //备注 uploadObject["memo"] = splitPay.Memo; uploadObject["isInvalid"] = splitPay.IsInvalid; uploadObject["createUser"] = splitPay.CreateUser; uploadObject["createDate"] = splitPay.CreateDate; uploadObject["ticketId"] = splitPay.TicketId; uploadObject["fromBizUserId"] = splitPay.FromBizUserld; uploadObject["refundAmount"] = splitPay.RefundAmount; uploadObject["orderType"] = splitPay.OrderType.ToString(); uploadObject["isRefund"] = splitPay.IsRefund; uploadObject["tableNo"] = splitPay.TableNo; uploadObject["people"] = splitPay.People; uploadObject["workNo"] = splitPay.WorkerNo; uploadObject["unitPrice"] = splitPay.UnitPrice; uploadObject["goodid"] = splitPay.ProductId; uploadObject["number"] = splitPay.Quantity; uploadObject["rnumber"] = splitPay.RefundQuantity; uploadObject["fee"] = splitPay.fee * 100; return uploadObject; } catch (Exception ex) { logger.Error(ex, "组装营业分账更新数据异常:"); return null; } } private Tuple> Uploading(string jsonString) { Tuple> result = null; var isTest = false; #region 模拟上传操作 if (isTest) { logger.Debug("开始构建上传成功模拟数据......"); //构建上传成功模拟数据 var resp2 = new EntityResponse(); resp2.Status = 1; resp2.Message = "模拟上传"; resp2.ErrCode = string.Empty; resp2.ErrMessage = string.Empty; resp2.Data = new UploadResult { TicketId = "11112211", UploadDate = DateTime.Now }; logger.Info("模拟上传返回结果:{0}", resp2); result = new Tuple>(false, resp2); return result; } #endregion try { logger.Debug("开始更新营业分账数据......"); OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business); SortedList parameters = OpenApiUtils.Instance.NewParameters(api); parameters.Add("method", "update.business.splitorder"); parameters.Add("storeId", Global.Instance.Authc.StoreId); parameters.Add("jsonString", jsonString); var ignore = new List(); ignore.Add("jsonString"); parameters.Add("sign", OpenApiUtils.Instance.Sign(api, parameters, ignore)); string response = HttpClientUtils.PostAsync(api, api.Url, parameters); logger.Info("上传返回结果:{0}", response); if (Constant.IsSuccessful(response)) { var status = JsonUtils.Deserialize>(response); if (status.Status == 1) { logger.Info(status.Message); result = new Tuple>(true, status); } else if (status.Status == 2) { logger.Info(status.Message); result = new Tuple>(false, status); } else { string message = string.Format("<{0}>-{1}-{2}", status.ErrCode, status.ErrMessage, status.Message); logger.Error(string.Format("调用接口上传出错:{0}", message)); result = new Tuple>(false, status); } } else { string errorMessage = PaserErrors(response); logger.Error(string.Format("报文<{0}>解析出错:{1}", response, errorMessage)); //构建错误信息 var resp = new EntityResponse(); resp.Status = 0; resp.Message = errorMessage; resp.ErrCode = string.Empty; resp.ErrMessage = string.Empty; resp.Data = null; result = new Tuple>(false, resp); } } catch (Exception ex) { string message = string.Format("更新分账数据发生异常"); logger.Error(ex, message); //构建异常错误 var resp = new EntityResponse(); resp.Status = 0; resp.Message = message; resp.ErrCode = string.Empty; resp.ErrMessage = string.Empty; resp.Data = null; result = new Tuple>(false, resp); } return result; } } }