/// <summary> /// CPS返佣支付接口 /// </summary> /// <param name="request"></param> /// <returns></returns> private static async Task <bool> CpsSendPayAsync(CpsSendPayRequest request) { var result = false; try { using (var client = new PayClient()) { var response = await client.CpsSendPayAsync(request); if (!response.Success) { Logger.Info($"{request.OutBizNo} CPS返佣支付请求Pay服务失败"); } else { result = response.Result.Success; Logger.Info($"{request.OutBizNo} CPS返佣支付请求Pay服务成功"); } } } catch (Exception ex) { Logger.Error($"{request.OutBizNo} CPS返佣支付请求Pay服务失败异常;异常信息:{ex.Message};堆栈信息:{ex.StackTrace}"); } return(result); }
/// <summary> /// 返佣佣金计算 /// </summary> /// <param name="model"></param> /// <param name="orderRecordProductNumber">下单记录的商品数量</param> private static async Task CalculateCommission(CalculateCommissionModel model) { var commissionFlowCount = await DalTuboAlliance.GetCommissionFlowRecordDal("" + model.OrderItem.OrderId, nameof(CpsEnum.CpsRunningType.VALUEADDED), model.OrderItem.OrderListId, ""); //防止重复请求,每个订单下的商品只能存在一条流水记录 if (commissionFlowCount <= 0) { //获取商品的佣金比例 var cpsProductListModel = await DalTuboAlliance.GetCpsProductDal(model.CpsId); if (cpsProductListModel != null) { var outBizNo = model.OrderItem.OrderId + "_" + (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000; var actutalAmount = (model.OrderItem.PayPrice * model.OrderItem.Num) * (cpsProductListModel.CommissionRatio / 100); var minuteActutalAmount = actutalAmount * 100; //转换为单位分 //向下取整,总是舍去小数 minuteActutalAmount = Math.Floor(minuteActutalAmount); var requestNo = Guid.NewGuid(); var cpsCommissionFlowRecordModel = new CpsCommissionFlowRecordModel(); cpsCommissionFlowRecordModel.CommissionFlowRecordNo = outBizNo; cpsCommissionFlowRecordModel.OrderId = "" + model.OrderItem.OrderId; cpsCommissionFlowRecordModel.OrderItemPKID = model.OrderItem.OrderListId; cpsCommissionFlowRecordModel.CpsId = model.CpsId; cpsCommissionFlowRecordModel.DarenID = model.DarenId; cpsCommissionFlowRecordModel.Pid = model.Pid; cpsCommissionFlowRecordModel.PayPrice = model.OrderItem.PayPrice; cpsCommissionFlowRecordModel.Number = model.Number; cpsCommissionFlowRecordModel.CommissionRatio = cpsProductListModel.CommissionRatio; cpsCommissionFlowRecordModel.ActutalAmount = minuteActutalAmount; cpsCommissionFlowRecordModel.Type = nameof(CpsEnum.CpsRunningType.VALUEADDED); cpsCommissionFlowRecordModel.RequestNo = requestNo; cpsCommissionFlowRecordModel.Status = nameof(CpsEnum.CpsRunningStatus.NOTSENT); int cpsCreateRunningCount = await DalTuboAlliance.CpsCommissionFlowRecordDal(cpsCommissionFlowRecordModel); if (cpsCreateRunningCount > 0) { var cpsSendPayRequest = new CpsSendPayRequest(); cpsSendPayRequest.OutBizNo = outBizNo; cpsSendPayRequest.OrderDesc = $"订单返佣:{model.OrderItem.OrderId};" + model.OrderItem.Remark; cpsSendPayRequest.Amount = minuteActutalAmount; cpsSendPayRequest.ProductName = $"订单返佣:{model.OrderItem.OrderId};"; cpsSendPayRequest.RequestNo = "" + requestNo; cpsSendPayRequest.UserId = "" + model.DarenId; await CpsSendPayAsync(cpsSendPayRequest); } else { Logger.Info($"CommodityRebateManager -->CalculateCommission:【outBizNo:{outBizNo}】支付流水创建失败"); } } else { Logger.Info($"CommodityRebateManager -->CalculateCommission:【CpsId:{model.CpsId}】佣金ID不存在"); } } else { Logger.Info($"CommodityRebateManager -->CalculateCommission:【OrderId:{model.OrderItem.OrderId}】" + $"【OrderItemPKID:{model.OrderItem.OrderListId}】支付流水已经存在"); } }