|
|
|
|
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<bool, string> 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<bool, string>(true, "分账信息修改成功");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
logger.Error(ex, "分账信息修改异常");
|
|
|
|
|
return new Tuple<bool, string>(false, "分账信息修改异常");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return new Tuple<bool, string>(false, "分账信息修改失败");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private Dictionary<string, object> BuilderUploadObject(SplitStorePayEntity splitPay)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
var uploadObject = new Dictionary<string, object>();
|
|
|
|
|
////上传订单
|
|
|
|
|
//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<bool, EntityResponse<UploadResult>> Uploading(string jsonString)
|
|
|
|
|
{
|
|
|
|
|
Tuple<bool, EntityResponse<UploadResult>> result = null;
|
|
|
|
|
|
|
|
|
|
var isTest = false;
|
|
|
|
|
|
|
|
|
|
#region 模拟上传操作
|
|
|
|
|
if (isTest)
|
|
|
|
|
{
|
|
|
|
|
logger.Debug("开始构建上传成功模拟数据......");
|
|
|
|
|
//构建上传成功模拟数据
|
|
|
|
|
var resp2 = new EntityResponse<UploadResult>();
|
|
|
|
|
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<bool, EntityResponse<UploadResult>>(false, resp2);
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
logger.Debug("开始更新营业分账数据......");
|
|
|
|
|
|
|
|
|
|
OpenApi api = OpenApiUtils.Instance.NextApi(ApiType.Business);
|
|
|
|
|
SortedList<string, string> 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<string>();
|
|
|
|
|
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<EntityResponse<UploadResult>>(response);
|
|
|
|
|
|
|
|
|
|
if (status.Status == 1)
|
|
|
|
|
{
|
|
|
|
|
logger.Info(status.Message);
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, EntityResponse<UploadResult>>(true, status);
|
|
|
|
|
}
|
|
|
|
|
else if (status.Status == 2)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
logger.Info(status.Message);
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, EntityResponse<UploadResult>>(false, status);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string message = string.Format("<{0}>-{1}-{2}", status.ErrCode, status.ErrMessage, status.Message);
|
|
|
|
|
|
|
|
|
|
logger.Error(string.Format("调用接口<upload.business.splitorder>上传出错:{0}", message));
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, EntityResponse<UploadResult>>(false, status);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
string errorMessage = PaserErrors(response);
|
|
|
|
|
|
|
|
|
|
logger.Error(string.Format("报文<{0}>解析出错:{1}", response, errorMessage));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//构建错误信息
|
|
|
|
|
var resp = new EntityResponse<UploadResult>();
|
|
|
|
|
resp.Status = 0;
|
|
|
|
|
resp.Message = errorMessage;
|
|
|
|
|
resp.ErrCode = string.Empty;
|
|
|
|
|
resp.ErrMessage = string.Empty;
|
|
|
|
|
|
|
|
|
|
resp.Data = null;
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, EntityResponse<UploadResult>>(false, resp);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
catch (Exception ex)
|
|
|
|
|
{
|
|
|
|
|
string message = string.Format("更新分账数据发生异常");
|
|
|
|
|
|
|
|
|
|
logger.Error(ex, message);
|
|
|
|
|
|
|
|
|
|
//构建异常错误
|
|
|
|
|
var resp = new EntityResponse<UploadResult>();
|
|
|
|
|
resp.Status = 0;
|
|
|
|
|
resp.Message = message;
|
|
|
|
|
resp.ErrCode = string.Empty;
|
|
|
|
|
resp.ErrMessage = string.Empty;
|
|
|
|
|
|
|
|
|
|
resp.Data = null;
|
|
|
|
|
|
|
|
|
|
result = new Tuple<bool, EntityResponse<UploadResult>>(false, resp);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|