Example #1
0
        public Respbase <ThridPayDto> ThridPartyPay(ThridPayReq req)
        {
            ThridPayFacade facade = new ThridPayFacade();
            var            result = facade.ThridPartyPay(req);

            return(result);
        }
Example #2
0
        /// <summary>
        /// 第三方支付接口
        /// </summary>
        public Respbase <ThridPayDto> ThridPartyPay(ThridPayReq req)
        {
            TnetReginfo reginfo = HttpContext.Current.GetRegInfo();

            if (string.IsNullOrEmpty(reginfo.UserpwdBak))
            {
                log.Info("未设置支付密码,nodeid=" + reginfo.Nodeid);
                return(new Respbase <ThridPayDto> {
                    Result = -5, Message = "支付密码未设置"
                });
            }

            var partner = db.TpcnThirdPartnerSet.FirstOrDefault(x => x.Accesskeyid == req.SecretKey);

            if (partner == null)
            {
                return(new Respbase <ThridPayDto> {
                    Result = -2, Message = "secretkey不存在"
                });
            }
            byte[] c   = Convert.FromBase64String(req.Pwd);
            string pwd = System.Text.Encoding.UTF8.GetString(c);

            if (!UserPwd.Check(pwd, reginfo.UserpwdBak, reginfo.Nodeid, reginfo.Nodecode))
            {
                log.Info("支付密码不正确,nodeid=" + reginfo.Nodeid);
                return(new Respbase <ThridPayDto> {
                    Result = -5, Message = "支付密码不正确"
                });
            }

            var payhis = db.TpcnThirdPayhisSet.FirstOrDefault(x => x.Orderno == req.Orderno);

            if (payhis != null && payhis.Hisid > 0)
            {
                log.Info("订单号已存在,orderno:" + req.Orderno);
                return(new Respbase <ThridPayDto> {
                    Result = -6, Message = "订单号已存在,orderno:" + req.Orderno
                });
            }
            db.BeginTransaction();
            //添加历史
            payhis             = InitPcnThirdPayhis();
            payhis.Nodeid      = reginfo.Nodeid;
            payhis.Partnerid   = partner.Id; //-------------------------
            payhis.Amount      = req.Amount; //人民币
            payhis.Orderno     = req.Orderno;
            payhis.Paytype     = req.PayType;
            payhis.Body        = req.Body;
            payhis.Subject     = req.Subject;
            payhis.Notifyurl   = req.Noticeurl;
            payhis.Transferids = "0";//transferids.ToString();
            db.TpcnThirdPayhisSet.Add(payhis);
            if (db.SaveChanges() <= 0)
            {
                log.Info("写支付历史失败:" + db.Message + ",payhis:" + JsonConvert.SerializeObject(payhis));
                db.Rollback();
                return(new Respbase <ThridPayDto> {
                    Result = -8, Message = "写支付历史失败"
                });
            }
            int transferids = 0;

            //开启转账
            BeginTransfer();
            if (req.PayType == 3000)
            {
                //SV-相信
                if (!Transfer_SV(reginfo.Nodecode, req.Amount, req.Subject))
                {
                    db.Rollback();
                    EndTransfer(false);
                    return(new Respbase <ThridPayDto> {
                        Result = -1, Message = PromptInfo.Message
                    });
                }
                //string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                //string sign = Md5.SignString(time + AppConfig.AppSecurityString);
                //PurseFacade facade = new PurseFacade();
                //var ret = facade.ThridPartyPay_Pro(new ThridPartyPayReq { Nodecode = reginfo.Nodecode, Amount = req.Amount, Subject = req.Subject, ReqTime = time, Sign = sign });
                //if (ret.Result <= 0)
                //{
                //    db.Rollback();
                //    EndTransfer(false);
                //    return new Respbase<ThridPayDto> { Result = -1, Message = ret.Message };
                //}
                else
                {
                    transferids = TransferId;
                    //transferids = ret.Data.TransferId;
                }
            }
            else if (req.PayType == 3001)
            {
                //SV-V点
                if (!Transfer_VD(reginfo.Nodecode, req.Amount, req.Subject))
                {
                    db.Rollback();
                    EndTransfer(false);
                    return(new Respbase <ThridPayDto> {
                        Result = -1, Message = PromptInfo.Message
                    });
                }
                else
                {
                    transferids = TransferId;
                }
            }
            else
            {
                db.Rollback();
                EndTransfer(false);
                return(new Respbase <ThridPayDto> {
                    Result = -1, Message = "参数错误"
                });
            }

            payhis.Transferids = transferids.ToString();
            if (db.SaveChanges() <= 0)
            {
                log.Info("修改支付历史失败:" + db.Message + ",payhis:" + JsonConvert.SerializeObject(payhis));
                db.Rollback();
                EndTransfer(false);
                return(new Respbase <ThridPayDto> {
                    Result = -8, Message = "修改支付历史失败"
                });
            }

            EndTransfer();
            db.Commit();
            ThridPayDto dto = new ThridPayDto
            {
                Orderno  = req.Orderno,
                OrderPcn = payhis.Hisid.ToString()
            };

            PxinSerivce.EnqueueNotice(payhis.Hisid);

            return(new Respbase <ThridPayDto> {
                Result = 1, Message = "支付成功", Data = dto
            });
        }