示例#1
0
        public int Init(int ChannelType, int LogId, int UbkId, int UserId, int PayRecordId)
        {
            PayCashier payc = new PayCashier();

            payc.ChannelType = ChannelType;
            payc.LogId       = LogId;
            payc.UbkId       = UbkId;
            payc.UserId      = UserId;
            payc.PayRecordId = PayRecordId;
            return(Insert(payc));
        }
示例#2
0
        public static respMasgetModel <respPayConfirmpayModel> PayConfirmpay(int PayId, string code, int Platform, Logic.ChannelType chanel)
        {
            string LogDic = "确认支付";

            int              TypeId = (int)chanel;
            PayCashier       pay    = payCashierDao.Single(PayId);
            respBackPayModel respBP = JsonConvert.DeserializeObject <respBackPayModel>(pay.Value);


            MasgetUser mUser = masgetUserDao.Single(" UserId=@UserId and TypeId=@TypeId", new { pay.UserId, TypeId });

            if (mUser == null)
            {
                Logs.WriteLog($"未查到用户:UserId:{pay.UserId},Platform:{Platform},PayId:{pay.ID}", MasgetLogDic, LogDic);
                return(new respMasgetModel <respPayConfirmpayModel>()
                {
                    ret = -9999, message = "用户未进件"
                });
            }
            Users user = usersDao.Single(pay.UserId);
            bool  flag = false;

            //获取请求流水号
            int requestId = yeepayLogDao.Init((int)Masget.Enums.MasgetType.确认支付, pay.UserId, Platform, pay.PayRecordId, (int)chanel);

            Logs.WriteLog($"获取请求流水号:UserId:{pay.UserId},Platform:{Platform},requestId:{requestId},keyId:{pay.PayRecordId}", MasgetLogDic, LogDic);

            reqPayConfirmpayModel model = new reqPayConfirmpayModel();

            model.authcode  = code;
            model.ordercode = respBP.ordercode;
            //model.accountrule = "1";
            string json = Order <reqPayConfirmpayModel>(model);
            var    resp = PostUrl <respPayConfirmpayModel>(requestId, "masget.pay.compay.router.confirmpay", json, LogDic, chanel, mUser.ID);

            if (resp.backState == 0)
            {
                //成功修改支付表状态
                pay.State = 1;
                pay.UTime = DateTime.Now;
                flag      = payCashierDao.Update(pay);
                Logs.WriteLog($"收银表状态修改:UserId:{pay.UserId},Platform:{Platform},requestId:{requestId},PayCashierId:{PayId},flag={flag}", MasgetLogDic, LogDic);
                var payRecord = payRecordDao.Single(pay.PayRecordId);
                payRecord.State = 5;//等待回调
                payRecord.UTime = DateTime.Now;
                flag            = payRecordDao.Update(payRecord);
                Logs.WriteLog($"收款记录修改:UserId:{pay.UserId},Platform:{Platform},requestId:{requestId},PayRecordId:{pay.PayRecordId},flag={flag}", MasgetLogDic, LogDic);
            }

            return(resp);
        }
示例#3
0
        public static ResultModelData <JObject> ValidateMobileCode(int payCId, int Platform, string tengGuid, string Code)
        {
            bool flag = false;
            ResultModelData <JObject> ret = new ResultModelData <JObject>();

            ret.backState = 0;
            ret.message   = "验证成功";
            string     LogDic = "验证收银短信";
            PayCashier payc   = payCashierDao.Single(payCId);
            //获取请求流水号
            int requestId = yeepayLogDao.Init((int)Teng.Enums.TengType.验证收银短信, payc.UserId, Platform, payc.PayRecordId, (int)Logic.ChannelType.腾付通);

            Logs.WriteLog($"获取请求流水号:UserId:{payc.UserId},Platform:{Platform},requestId:{requestId}", TengLogDic, LogDic);

            string mobileKey = ITOrm.Utility.Const.Constant.teng_mobile_code + tengGuid;

            if (!ITOrm.Utility.Cache.MemcachHelper.Exists(mobileKey))
            {
                ret.backState = -100;
                ret.message   = "验证码已过期";
            }
            JObject cacheMobileCode = JObject.Parse(ITOrm.Utility.Cache.MemcachHelper.Get(mobileKey).ToString());

            if (Code.Trim() != cacheMobileCode["code"].ToString())
            {
                ret.backState = -100;
                ret.message   = "手机验证码错误";
            }


            #region 日志处理
            //返回后日志记录
            yeepayLogParasDao.Init(requestId, JsonConvert.SerializeObject(ret), 1);
            //易宝日志状态更新
            flag = yeepayLogDao.UpdateState(requestId, ret.backState.ToString(), ret.message, ret.backState == 0 ? 1 : ret.backState);
            #endregion


            return(ret);
        }
示例#4
0
        public static respMasgetModel <respBackPayModel> BackPay(int UbkId, decimal Amount, int Platform, Logic.ChannelType chanel)
        {
            string LogDic = "订单支付";

            int             TypeId = (int)chanel;
            BankTreatyApply bta    = bankTreatyApplyDao.Single(" UbkId=@UbkId and ChannelType=@TypeId", new { UbkId, TypeId });

            MasgetUser mUser = masgetUserDao.Single(" UserId=@UserId and TypeId=@TypeId", new { bta.UserId, TypeId });

            if (mUser == null)
            {
                Logs.WriteLog($"未查到用户:UserId:{bta.UserId},Platform:{Platform},BtaId:{bta.ID}", MasgetLogDic, LogDic);
                return(new respMasgetModel <respBackPayModel>()
                {
                    ret = -9999, message = "用户未进件"
                });
            }
            Users user = usersDao.Single(bta.UserId);
            bool  flag = false;

            //获取请求流水号
            int keyId = payRecordDao.Init(UbkId, Amount, Platform, Ip.GetClientIp(), (int)chanel);

            //int keyId = payRecordDao.Init(bta.UserId, Amount, Platform, Ip.GetClientIp(), bta.BankCard);
            Logs.WriteLog($"创建支付记录:UserId:{bta.UserId},Platform:{Platform},keyId:{keyId},Amount={Amount}", MasgetLogDic, LogDic);

            int requestId = yeepayLogDao.Init((int)Masget.Enums.MasgetType.订单支付, bta.UserId, Platform, keyId, (int)chanel);

            Logs.WriteLog($"获取请求流水号:UserId:{bta.UserId},Platform:{Platform},requestId:{requestId},keyId:{keyId}", MasgetLogDic, LogDic);

            reqBackPayModel model = new reqBackPayModel();

            model.ordernumber   = requestId.ToString();
            model.body          = "SJ商品购买";
            model.amount        = (Amount * 100).ToString("F0");
            model.businesstype  = "1001";
            model.paymenttypeid = "25";
            model.backurl       = MasgetNoticeUrl + "backpayNotice";
            var ext = new PayExtraParamsModel();

            ext.password         = "";
            ext.authcode         = "";
            ext.treatycode       = bta.Treatycode;
            model.payextraparams = Order <PayExtraParamsModel>(ext);
            //model.accountrule = "1";
            string json = Order <reqBackPayModel>(model);
            var    resp = PostUrl <respBackPayModel>(requestId, "masget.pay.compay.router.back.pay", json, LogDic, chanel, mUser.ID);

            if (resp.backState == 0)
            {
                //添加收银记录表
                PayCashier payCash = new PayCashier();
                payCash.ChannelType = (int)chanel;
                payCash.Value       = JsonConvert.SerializeObject(resp.data);
                payCash.LogId       = requestId;
                payCash.State       = 0;
                payCash.UserId      = bta.UserId;
                payCash.PayRecordId = keyId;
                payCash.UbkId       = UbkId;
                int payCId = payCashierDao.Insert(payCash);
                Logs.WriteLog($"添加收银记录表:UserId:{bta.UserId},Platform:{Platform},requestId:{requestId},payCId:{payCId}", MasgetLogDic, LogDic);
                resp.url = $"{Constant.CurrentApiHost}itapi/pay/cashier?payid={payCId}";
            }

            return(resp);
        }
示例#5
0
 /// <summary>
 /// Delete,根据实体对象删除
 /// </summary>
 /// <returns>返回,成功:true,失败:false</returns>
 public bool Delete(PayCashier entity)
 {
     return(dal.Update(entity));
 }
示例#6
0
 /// <summary>
 /// 插入数据
 /// </summary>
 /// <returns>返回,成功:true,失败:false</returns>
 public int Insert(PayCashier entity)
 {
     return(dal.Insert(entity));
 }
示例#7
0
        public static ResultModelData <JObject> SendMsgCode(int payCId, int Platform, string tengGuid)
        {
            ResultModelData <JObject> ret = new ResultModelData <JObject>();

            ret.backState = -100;
            ret.message   = "发送失败";


            string       LogDic = "发送收银短信";
            PayCashier   payc   = payCashierDao.Single(payCId);
            PayRecord    pay    = payRecordDao.Single(payc.PayRecordId);
            UserBankCard ubk    = userBankCardDao.Single(payc.UbkId);
            int          typeId = (int)Teng.Enums.TengType.发送收银短信;
            int          cnt    = yeepayLogDao.Count(" UserId=@UserId and KeyId=@PayRecordId and ChannelType=@ChannelType and typeId=@typeId ", new { payc.UserId, payc.PayRecordId, payc.ChannelType, typeId });

            if (cnt > 4)
            {
                ret.message = "该订单短信发送次数超限";
                return(ret);
            }
            //获取请求流水号
            int requestId = yeepayLogDao.Init(typeId, payc.UserId, Platform, payc.PayRecordId, (int)Logic.ChannelType.腾付通);

            Logs.WriteLog($"获取请求流水号:payCId:{payCId},UserId:{payc.UserId},Platform:{Platform},tengGuid:{tengGuid},requestId:{requestId}", TengLogDic, LogDic);
            bool flag = false;

            //发送短信
            var     resultMsg = SystemSendMsg.Send(Logic.EnumSendMsg.腾付通收银短信, ubk.Mobile, pay.Amount);
            SendMsg model     = new SendMsg();

            model.UserId     = payc.UserId;
            model.TypeId     = (int)Logic.EnumSendMsg.腾付通收银短信;
            model.Context    = resultMsg.content;
            model.CTime      = DateTime.Now;
            model.IP         = ITOrm.Utility.Client.Ip.GetClientIp();
            model.Merchant   = resultMsg.Merchant;
            model.Mobile     = resultMsg.Mobile;
            model.Platform   = Platform;
            model.Service    = "teng";
            model.RelationId = resultMsg.relationId;
            model.State      = resultMsg.backState ? 2 : 1;
            model.UTime      = DateTime.Now;
            int result = sendMsgDao.Insert(model);

            if (resultMsg.backState && result > 0)
            {
                string key       = Constant.teng_mobile_code + tengGuid;
                var    cacheData = new JObject();
                cacheData["mobile"] = resultMsg.Mobile;
                cacheData["code"]   = resultMsg.code;
                MemcachHelper.Set(key, cacheData.ToString(), ITOrm.Utility.Const.Constant.mobile_code_expires);
                var data = new JObject();
                data["tengGuid"] = tengGuid;
                if (Constant.IsDebug)
                {
                    data["code"] = resultMsg.code;
                }
                ret.backState = 0;
                ret.message   = "发送成功";
                ret.Data      = data;
            }
            #region 日志处理
            //返回后日志记录
            yeepayLogParasDao.Init(requestId, JsonConvert.SerializeObject(ret), 1);
            //易宝日志状态更新
            flag = yeepayLogDao.UpdateState(requestId, ret.backState.ToString(), ret.message, ret.backState == 0 ? 1 : ret.backState);
            #endregion
            return(ret);
        }
示例#8
0
        public static respTengModel DebitPayment(int payCId, int Platform)
        {
            string LogDic = "支付接口";
            bool   flag   = false;

            PayCashier payCashier = payCashierDao.Single(payCId);
            PayRecord  pay        = payRecordDao.Single(payCashier.PayRecordId);

            //获取请求流水号
            int requestId = yeepayLogDao.Init((int)Teng.Enums.TengType.支付接口, pay.UserId, Platform, pay.ID, (int)Logic.ChannelType.腾付通);

            Logs.WriteLog($"获取请求流水号:UserId:{pay.UserId},Platform:{Platform},requestId:{requestId},payCId:{payCId}", TengLogDic, LogDic);
            var user     = usersDao.Single(payCashier.UserId);
            var withBank = userBankCardDao.Single(" TypeId=0 and UserId=@UserId ", new { pay.UserId });
            var payBank  = userBankCardDao.Single(payCashier.UbkId);
            reqTengDebitPaymentModel model = new reqTengDebitPaymentModel();

            model.orderId      = requestId.ToString();
            model.name         = user.RealName;
            model.idCardNo     = user.IdCard;
            model.phone        = pay.PayerPhone;
            model.txnAmt       = (pay.Amount * 100M).ToString("F0");
            model.settleAmt    = (pay.ActualAmount * 100M).ToString("F0");//清算金额
            model.notifyUrl    = TengNoticeUrl + "NoticePayTeng";
            model.bankCardNo   = pay.BankCard;
            model.lastThreeNo  = payBank.CVN2;
            model.cardExpYear  = payBank.ExpiresYear;
            model.cardExpMonth = payBank.ExpiresMouth;
            model.withdrawUrl  = TengNoticeUrl + "NoticeWithTeng";
            model.settleCardNo = pay.DrawBankCard;
            model.settlePhone  = withBank.Mobile;

            //model.accountrule = "1";
            JObject json = Order <reqTengDebitPaymentModel>(model);

            #region des签名对象

            JObject data    = new JObject();
            JObject reqData = JObject.Parse(json.ToString());
            data["ExpressData"]     = json;
            data["EncryptionData"]  = reqData;
            reqData["name"]         = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["name"].ToString());
            reqData["idCardNo"]     = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["idCardNo"].ToString());
            reqData["phone"]        = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["phone"].ToString());
            reqData["bankCardNo"]   = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["bankCardNo"].ToString());
            reqData["lastThreeNo"]  = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["lastThreeNo"].ToString());
            reqData["cardExpYear"]  = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["cardExpYear"].ToString());
            reqData["cardExpMonth"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["cardExpMonth"].ToString());
            reqData["settleCardNo"] = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["settleCardNo"].ToString());
            reqData["settlePhone"]  = ITOrm.Utility.Encryption.EncryptionHelper.DesEncrypt(reqMd5Key, reqData["settlePhone"].ToString());
            #endregion
            var resp = PostUrl <respTengModel>(requestId, "debitPayment.do", data, LogDic);
            if (resp.backState == 0)
            {
                //更新收款记录
                flag = payRecordDao.UpdateState(payCashier.PayRecordId, 1, resp.respMsg);
                Logs.WriteLog($"更新收款记录:UserId:{payCashier.UserId},Platform:{Platform},requestId:{requestId},PayRecordId:{payCashier.PayRecordId},flag:{flag}", TengLogDic, LogDic);
                //更新收银台
                payCashier.State = 2;
                payCashier.UTime = DateTime.Now;
                flag             = payCashierDao.Update(payCashier);
                Logs.WriteLog($"更新收银台:UserId:{payCashier.UserId},Platform:{Platform},requestId:{requestId},PayCId:{payCashier.ID},flag:{flag}", TengLogDic, LogDic);
            }
            else if (resp.respCode == "YH99")
            {
                int keyId = 10009;//腾付通通道记录ID
                //关闭通道
                KeyValue kv = keyValueDao.Single(keyId);
                kv.State  = -1;
                kv.UTime  = DateTime.Now;
                kv.Remark = $"{DateTime.Now}自动关闭";
                keyValueDao.Update(kv);
                MemcachHelper.Delete(Constant.list_keyvalue_key + (int)Logic.KeyValueType.支付通道管理);//清理缓存

                //添加定时任务记录
                var      stime    = JObject.Parse(kv.Value)["StartTime"];
                DateTime execTime = Convert.ToDateTime(DateTime.Now.ToString($"yyyy-MM-dd {stime}")).AddDays(1);

                JObject value = new JObject();
                value["keyId"]  = keyId;
                value["remark"] = "腾付通通道定时开启(自动创建)";
                timedTaskDao.Init(Logic.TimedTaskType.通道开启, execTime, value.ToString());
            }

            if (resp.backState != 0)
            {
                //更新收款记录
                flag = payRecordDao.UpdateState(payCashier.PayRecordId, -1, resp.respMsg);
                //更新收银台
                payCashier.State = -1;
                payCashier.UTime = DateTime.Now;
                flag             = payCashierDao.Update(payCashier);
            }
            return(resp);
        }