/// <summary> /// 判断交易单号是否存在 /// </summary> /// <param name="paymentHistoryInfo"></param> /// <returns></returns> public bool IsExistTransactionId(Business_PaymentHistory_Information paymentHistoryInfo) { using (var db = SugarDao_MsSql.GetInstance()) { return(db.Queryable <Business_PaymentHistory_Information>().Any(i => i.TransactionID == paymentHistoryInfo.TransactionID)); } }
/// <summary> /// 更新支付历史 /// </summary> /// <param name="paymentHistoryInfo">实体信息</param> /// <returns>返回成功与否</returns> public bool UpdatePaymentHistory(Business_Personnel_Information personInfo, Business_PaymentHistory_Information paymentHistoryInfo, Business_PaymentHistory_Information paymentHistoryInfoOld) { using (var db = SugarDao_MsSql.GetInstance()) { db.BeginTran(); try { var configInfo = db.Queryable <Master_Configuration>().Where(i => i.ID == 15).SingleOrDefault(); paymentHistoryInfo.CreateDate = paymentHistoryInfoOld.CreateDate; paymentHistoryInfo.CreateUser = paymentHistoryInfoOld.CreateUser; paymentHistoryInfo.ChangeDate = DateTime.Now; paymentHistoryInfo.ChangeUser = "******"; //插入操作日志表中 string logData = JsonHelper.ModelToJson(paymentHistoryInfo); _logLogic.SaveLog(18, 46, personInfo.UserID + " " + personInfo.Name, "大众出租租赁营收费用", logData); int revenueStauts = 2; if (paymentHistoryInfo.PaymentStatus == "1") { paymentHistoryInfo.PaymentAmount = paymentHistoryInfoOld.PaymentAmount; paymentHistoryInfo.RevenueReceivable = paymentHistoryInfoOld.RevenueReceivable; } paymentHistoryInfo.RevenueStatus = revenueStauts; db.DisableUpdateColumns = new[] { "RevenueType", "WeChatPush_VGUID" }; db.Update <Business_PaymentHistory_Information>(paymentHistoryInfo, i => i.Remarks == paymentHistoryInfoOld.Remarks); db.CommitTran(); return(true); } catch (Exception ex) { LogHelper.WriteLog(ex.ToString()); db.RollbackTran(); return(false); } } }
public JsonResult GetPaySign(string openid, string revenueFee, string totalFee, Guid personVguid, Guid pushContentVguid, int revenueType) { var revenueReceivable = decimal.Parse(revenueFee); //获取司机支付应付金额 var totalFeeDouble = double.Parse(totalFee); //double totalFeeInt = tatol + driverPayfee; //包含手续费的总钱数 var totalFeeInt = (int)Math.Round(totalFeeDouble * 100); string nonceStr = WxPayApi.GenerateNonceStr(); //随机字符串,不长于32位 string outTradeNo = WxPayApi.GenerateOutTradeNo(); //订单号:32个字符内、不得重复 string spbillCreateIp = WxPayConfig.GetIP(System.Web.HttpContext.Current); //用户端IP double total_fee = totalFeeInt; //订单金额(单位:分),整数 string trade_type = "JSAPI"; //JSAPI,NATIVE,APP,WAP #region 调用统一支付接口获得prepay_id(预支付交易会话标识) WxPayData wxPayData = new WxPayData(); wxPayData.SetValue("appid", WxPayConfig.APPID); //appid wxPayData.SetValue("body", WxPayConfig.BODY); //支付描述 wxPayData.SetValue("mch_id", WxPayConfig.MCHID); //商户id wxPayData.SetValue("nonce_str", nonceStr); //随机字符串 wxPayData.SetValue("notify_url", WxPayConfig.NOTIFY_URL); //回调地址 wxPayData.SetValue("openid", openid); //openid wxPayData.SetValue("out_trade_no", outTradeNo); //订单号 wxPayData.SetValue("spbill_create_ip", spbillCreateIp); //客户端ip地址 wxPayData.SetValue("total_fee", total_fee.ToString()); //订单金额(单位:分),整数 wxPayData.SetValue("trade_type", trade_type); //交易类型 wxPayData.SetValue("sign", wxPayData.MakeSign()); //签名 string data = wxPayData.ToXml(); string prepayId = WeChatTools.UnifiedOrder(data); #endregion #region 支付参数 string timeStamp = WxPayApi.GenerateTimeStamp(); nonceStr = WxPayApi.GenerateNonceStr(); WxPayData wxPaySign = new WxPayData(); wxPaySign.SetValue("appId", WxPayConfig.APPID); wxPaySign.SetValue("timeStamp", timeStamp); wxPaySign.SetValue("nonceStr", nonceStr); wxPaySign.SetValue("package", string.Format("prepay_id={0}", prepayId)); wxPaySign.SetValue("signType", "MD5"); string paysign = wxPaySign.MakeSign(); wxPaySign.SetValue("paySign", paysign); #endregion var paymentHistoryInfo = new Business_PaymentHistory_Information(); paymentHistoryInfo.RevenueReceivable = revenueReceivable; paymentHistoryInfo.PaymentPersonnel = personVguid; paymentHistoryInfo.PaymentAmount = decimal.Parse(totalFee); paymentHistoryInfo.VGUID = Guid.NewGuid(); paymentHistoryInfo.RevenueType = revenueType; paymentHistoryInfo.WeChatPush_VGUID = pushContentVguid; paymentHistoryInfo.Remarks = outTradeNo; //商户订单号 paymentHistoryInfo.CreateDate = DateTime.Now; paymentHistoryInfo.CreateUser = "******"; paymentHistoryInfo.PayDate = DateTime.Now; paymentHistoryInfo.PaymentStatus = "3"; bool addsuccess = _weChatRevenueLogic.AddPaymentHistory(paymentHistoryInfo); return(Json(new { success = addsuccess, data = wxPaySign.GetValues() }, JsonRequestBehavior.AllowGet)); }
/// <summary> /// 插入或者更新营收数据库表中的数据信息 /// </summary> /// <param name="paymentHistoryInfo">付款信息</param> /// <param name="personInfo">人员信息</param> /// <returns>返回cheng</returns> public bool InsertOrUpdateRevenue(Business_PaymentHistory_Information paymentHistoryInfo, Business_Personnel_Information personInfo, ref int revenueStatus) { using (var db = SugarDao_AliPaySql.GetInstance()) { try { bool isExist = db.Queryable <ThirdPartyPublicPlatformPayment>().Any(i => i.SerialNumber == paymentHistoryInfo.TransactionID); var driverInfo = GetDriverInfo(personInfo); //获取司机信息 revenueStatus = driverInfo.License == null ? 2 : 1; if (isExist) //存在就更新,不存在则插入 { db.Update <ThirdPartyPublicPlatformPayment>(new { DriverServiceNum = driverInfo.OperationNo, CarNo = driverInfo.License == null ? null : driverInfo.License.TrimStart('沪'), UnitCode = driverInfo.UnitCode, Identifier = driverInfo.License == null ? 2 : 0, }, i => i.SerialNumber == paymentHistoryInfo.TransactionID); } else { var id = db.Queryable <ThirdPartyPublicPlatformPayment>().Max(it => it.Id).ObjToInt(); var model = new ThirdPartyPublicPlatformPayment { Id = id + 1, SerialNumber = paymentHistoryInfo.TransactionID, PaymentDate = paymentHistoryInfo.PayDate, PaymentAmount = paymentHistoryInfo.PaymentAmount, PaymentSource = "1", //1-微信企业号 PaymentType = "1", //1-微信 CheckOutDate = paymentHistoryInfo.PayDate.AddHours(24), Identifier = driverInfo.License == null ? 2 : 0, DriverName = personInfo.Name, DriverPhoneNum = personInfo.PhoneNumber, DriverServiceNum = driverInfo.OperationNo, CarNo = driverInfo.License == null ? null : driverInfo.License.TrimStart('沪'), UnitCode = driverInfo.UnitCode }; db.Insert(model, false); } return(true); } catch (Exception ex) { throw new Exception(ex.ToString()); } } }
/// <summary> /// 添加支付信息到清算系统中 /// </summary> /// <param name="paymentHistoryInfo"></param> /// <param name="personInfo"></param> /// <returns></returns> public bool AddRevenuePayInfoToLiquidation(Business_PaymentHistory_Information paymentHistoryInfo, Business_Personnel_Information personInfo) { using (var db = SugarDao_ReckoningSql.GetInstance()) { try { var model = new Business_Revenuepayment_Information() { Name = personInfo.Name, Department = personInfo.OwnedFleet.ToString(), JobNumber = personInfo.JobNumber, ServiceNumber = personInfo.ServiceNumber, UserID = personInfo.UserID, PhoneNumber = personInfo.PhoneNumber, PaymentPersonnel = personInfo.Vguid, TransactionID = paymentHistoryInfo.TransactionID, PaymentType = paymentHistoryInfo.PaymentType, PaymentBrokers = paymentHistoryInfo.PaymentBrokers, Beneficiary = paymentHistoryInfo.Beneficiary, ReceiptAccount = paymentHistoryInfo.ReceiptAccount, Description = paymentHistoryInfo.Description, Remarks = paymentHistoryInfo.Remarks, PayDate = paymentHistoryInfo.PayDate, PaymentStatus = paymentHistoryInfo.PaymentStatus, CompanyAccount = paymentHistoryInfo.CompanyAccount, PaymentAmount = paymentHistoryInfo.PaymentAmount, ActualAmount = paymentHistoryInfo.ActualAmount, RevenueType = paymentHistoryInfo.RevenueType, RevenueStatus = paymentHistoryInfo.RevenueStatus, CreateUser = personInfo.Name, CreateDate = DateTime.Now, VGUID = Guid.NewGuid() }; db.Insert(model, false); return(true); } catch (Exception ex) { LogHelper.WriteLog(ex.ToString()); return(false); } } }
/// <summary> /// 新增支付历史 /// </summary> /// <param name="paymentHistoryInfo">实体信息</param> /// <returns>返回成功与否</returns> public bool AddPaymentHistory(Business_PaymentHistory_Information paymentHistoryInfo) { using (var db = SugarDao_MsSql.GetInstance()) { try { //var isExist = db.Queryable<Business_PaymentHistory_Information>().Any(i => i.PaymentPersonnel == paymentHistoryInfo.PaymentPersonnel && i.WeChatPush_VGUID == paymentHistoryInfo.WeChatPush_VGUID && i.PaymentStatus == "3"); //if (isExist) //{ // db.Delete<Business_PaymentHistory_Information>(i => i.PaymentPersonnel == paymentHistoryInfo.PaymentPersonnel && i.WeChatPush_VGUID == paymentHistoryInfo.WeChatPush_VGUID && i.PaymentStatus == "3"); //} db.Insert(paymentHistoryInfo, false); return(true); } catch (Exception ex) { LogHelper.WriteLog(ex.ToString()); return(false); } } }
public void SavePaymentHistory(string driverId, string revenueFee, Guid personVguid, Guid pushContentVguid, int revenueType, QRCodeRevenue cm) { //var cm = CacheManager<QRCodeRevenue>.GetInstance()[PubGet.GetUserKey + driverId]; var paymentHistoryInfo = new Business_PaymentHistory_Information(); paymentHistoryInfo.RevenueReceivable = decimal.Parse(revenueFee); paymentHistoryInfo.PaymentPersonnel = personVguid; paymentHistoryInfo.ActualAmount = decimal.Parse(cm.TotalAmount); paymentHistoryInfo.PaymentAmount = decimal.Parse(cm.PayDebtAmount); paymentHistoryInfo.VGUID = Guid.NewGuid(); paymentHistoryInfo.RevenueType = revenueType; paymentHistoryInfo.WeChatPush_VGUID = pushContentVguid; paymentHistoryInfo.Remarks = cm.BillNo; //商户订单号 paymentHistoryInfo.CreateDate = DateTime.Now; paymentHistoryInfo.CreateUser = "******"; paymentHistoryInfo.PayDate = cm.BillDate.TryToDate(); paymentHistoryInfo.PaymentStatus = "3";//待支付或未支付 bool addsuccess = _weChatRevenueLogic.AddPaymentHistory(paymentHistoryInfo); //return Json(new { success = addsuccess }, JsonRequestBehavior.AllowGet); }
/// <summary> /// 添加支付信息到AliPay表中 /// </summary> /// <param name="paymentHistoryInfo">支付信息</param> /// <param name="personInfo">人员信息</param> /// <param name="revenueStatus"></param> /// <returns></returns> public bool AddRevenuePayInfo(Business_PaymentHistory_Information paymentHistoryInfo, Business_Personnel_Information personInfo, ref int revenueStatus) { using (var db = SugarDao_AliPaySql.GetInstance()) { try { int id = db.Queryable <ThirdPartyPublicPlatformPayment>().Max(it => it.Id).ObjToInt(); var driverInfo = GetDriverInfo(personInfo); revenueStatus = driverInfo.License == null ? 2 : 1; var model = new ThirdPartyPublicPlatformPayment() { Id = id + 1, SerialNumber = paymentHistoryInfo.TransactionID, PaymentDate = paymentHistoryInfo.PayDate, PaymentAmount = paymentHistoryInfo.PaymentAmount, PaymentSource = "1", //1-微信企业号 PaymentType = "1", //1-微信 CheckOutDate = paymentHistoryInfo.PayDate.AddHours(24), Identifier = driverInfo.License == null ? 2 : 0, DriverName = personInfo.Name, DriverPhoneNum = personInfo.PhoneNumber, DriverServiceNum = driverInfo.OperationNo, CarNo = driverInfo.License == null ? null : driverInfo.License.TrimStart('沪'), UnitCode = driverInfo.UnitCode }; db.Insert(model, false); return(true); } catch (Exception ex) { LogHelper.WriteLog(ex.ToString()); return(false); // throw new Exception(ex.ToString()); } } }
/// <summary> /// 支付结果回调地址 /// </summary> /// <returns></returns> public string PayNotifyUrl() { WxPayData resultInfo = new WxPayData(); try { ResultNotify resultNotify = new ResultNotify(); WxPayData notifyData = resultNotify.GetNotifyData(); //获取微信返回的数据 string accessToken = WeChatTools.GetAccessoken(); var userInfoStr = WeChatTools.ConvertToUserIdByOpenid(accessToken, notifyData.GetValue("openid").ToString()); var userInfo = Common.JsonHelper.JsonToModel <U_WechatUserInfo>(userInfoStr); var userid = userInfo.userid; var personInfoModel = _wl.GetUserInfo(userid); //获取人员表信息 var paymentHistoryInfo = new Business_PaymentHistory_Information(); paymentHistoryInfo.PaymentPersonnel = personInfoModel.Vguid; //付款人vguid _weChatRevenueLogic.UpdatePaymentHistory(personInfoModel, paymentHistoryInfo, notifyData); if (notifyData.GetValue("return_code").ToString() == "SUCCESS" && notifyData.GetValue("result_code").ToString() == "SUCCESS") { resultInfo.SetValue("return_code", "SUCCESS"); resultInfo.SetValue("return_msg", "OK"); } else { resultInfo.SetValue("return_code", notifyData.GetValue("return_code").ToString()); resultInfo.SetValue("return_msg", notifyData.GetValue("return_msg").ToString()); } } catch (Exception ex) { LogHelper.WriteLog(ex.ToString()); resultInfo.SetValue("return_code", "FAIL"); resultInfo.SetValue("return_msg", "交易失败"); } return(resultInfo.ToXml()); }
/// <summary> /// 新增支付历史 /// </summary> /// <param name="paymentHistoryInfo">实体信息</param> /// <returns>返回成功与否</returns> public bool UpdatePaymentHistory(Business_Personnel_Information personInfoModel, Business_PaymentHistory_Information paymentHistoryInfo, WxPayData notifyData) { paymentHistoryInfo.PaymentBrokers = "微信"; paymentHistoryInfo.Beneficiary = "大众出租汽车分公司"; paymentHistoryInfo.Description = WxPayConfig.BODY; paymentHistoryInfo.Remarks = notifyData.GetValue("out_trade_no").ToString(); //商户单号 var paymentHistoryInfoOld = _weChatRevenueServer.GetPaymentHistory(paymentHistoryInfo.Remarks); if (notifyData.GetValue("return_code").ToString() == "SUCCESS" && notifyData.GetValue("result_code").ToString() == "SUCCESS") { paymentHistoryInfo.ReceiptAccount = notifyData.GetValue("mch_id").ToString(); //商户号 paymentHistoryInfo.TransactionID = notifyData.GetValue("transaction_id").ToString(); //微信支付订单号 paymentHistoryInfo.ActualAmount = decimal.Parse(notifyData.GetValue("total_fee").ToString()) / 100; //实际付款 string timeEnd = notifyData.GetValue("time_end").ToString(); string year = timeEnd.Substring(0, 4); string month = timeEnd.Substring(4, 2); string day = timeEnd.Substring(6, 2); string hour = timeEnd.Substring(8, 2); string minute = timeEnd.Substring(10, 2); string second = timeEnd.Substring(12, 2); paymentHistoryInfo.PayDate = DateTime.Parse(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second); //付款时间 paymentHistoryInfo.PaymentStatus = "1"; //支付成功 SynchronousReceivableSystem(personInfoModel, paymentHistoryInfo, paymentHistoryInfoOld); } else { paymentHistoryInfo.TransactionID = notifyData.GetValue("out_trade_no").ToString(); //商户单号 paymentHistoryInfo.PaymentAmount = 0; paymentHistoryInfo.PayDate = DateTime.Now; paymentHistoryInfo.PaymentStatus = "2"; //支付失败 paymentHistoryInfo.ErrorCode = notifyData.GetValue("result_code").ToString(); paymentHistoryInfo.ErrorDescription = notifyData.GetValue("return_msg").ToString(); } return(_weChatRevenueServer.UpdatePaymentHistory(personInfoModel, paymentHistoryInfo, paymentHistoryInfoOld)); }
/// <summary> /// 新增支付历史 /// </summary> /// <param name="paymentHistoryInfo">实体信息</param> /// <returns>返回成功与否</returns> public bool AddPaymentHistory(Business_PaymentHistory_Information paymentHistoryInfo) { return(_weChatRevenueServer.AddPaymentHistory(paymentHistoryInfo)); }
public void SynchronousReceivableSystem(Business_Personnel_Information personModel, Business_PaymentHistory_Information paymentHistoryInfo, Business_PaymentHistory_Information paymentHistoryInfoOld) { //获取司机ID和车辆ID try { var driverModel = _rl.GetDriverMsg(personModel); WebClient wc = new WebClient(); var data = "{" + "\"BillLable\":\"WX\"," + "\"DriverID\":\"{DriverID}\",".Replace("{DriverID}", driverModel.Id.ToString()) + "\"JobNumber\":\"{JobNumber}\",".Replace("{JobNumber}", driverModel.EmployeeNo) + "\"Name\":\"{Name}\",".Replace("{Name}", personModel.Name == null ? "" : personModel.Name) + "\"OriginalId\":\"{OriginalId}\",".Replace("{OriginalId}", driverModel.OriginalId.ToString()) + "\"OrganizationID\":\"{OrganizationID}\",".Replace("{OrganizationID}", driverModel.OrganizationID.ToString()) + "\"PayDate\":\"{PayDate}\",".Replace("{PayDate}", paymentHistoryInfo.PayDate.ToString("yyyy-MM-dd HH:mm:ss")) + "\"TransactionId\":\"{TransactionId}\",".Replace("{TransactionId}", paymentHistoryInfo.TransactionID) + "\"PaymentBrokers\":\"WeiChat\"," + "\"Channel_Id\":\"1465779302\"," + "\"SubjectId\":\"1465779302_{0}\",".Replace("{0}", driverModel.OrganizationID.ToString()) + "\"PaymentAmount\":{PaymentAmount}, ".Replace("{PaymentAmount}", paymentHistoryInfoOld.RevenueReceivable.ToString()) + "\"CopeFee\":{CopeFee},".Replace("{CopeFee}", (paymentHistoryInfo.ActualAmount * paymentHistoryInfoOld.RevenueReceivable).ToString()) + "\"ActualAmount\":{ActualAmount},".Replace("{ActualAmount}", paymentHistoryInfo.ActualAmount.ToString()) + "\"ReceiptCategory\":11," + "\"Remark\":\"WeiChat\"," + "\"CompanyAccount\":0" + "}"; wc.Headers.Clear(); wc.Headers.Add("Content-Type", "application/json;charset=utf-8"); wc.Encoding = System.Text.Encoding.UTF8; var result = wc.UploadString(new Uri(ConfigSugar.GetAppString("RevenueSytemSyncPath")), data); Common.LogHelper.LogHelper.WriteLog(string.Format("{0}-{1}:{2}", personModel.Name, paymentHistoryInfo.TransactionID, result)); } catch (Exception ex) { Common.LogHelper.LogHelper.WriteLog(string.Format("{0}-{1}:{2}", personModel.Name, paymentHistoryInfo.TransactionID, ex.ToString())); } }