Example #1
0
 /// <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));
     }
 }
Example #2
0
 /// <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));
        }
Example #4
0
        /// <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());
                }
            }
        }
Example #5
0
 /// <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);
         }
     }
 }
Example #6
0
 /// <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);
        }
Example #8
0
 /// <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());
        }
Example #10
0
        /// <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));
        }
Example #11
0
 /// <summary>
 /// 新增支付历史
 /// </summary>
 /// <param name="paymentHistoryInfo">实体信息</param>
 /// <returns>返回成功与否</returns>
 public bool AddPaymentHistory(Business_PaymentHistory_Information paymentHistoryInfo)
 {
     return(_weChatRevenueServer.AddPaymentHistory(paymentHistoryInfo));
 }
Example #12
0
        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()));
            }
        }