Пример #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public Respbase <GetThridPayhisDto> GetThridPayhis(GetThridPayhisReq req)
        {
            TpcnThirdPartner partner = db.TpcnThirdPartnerSet.FirstOrDefault(x => x.Accesskeyid == req.SecretKey);

            if (partner == null)
            {
                return(new Respbase <GetThridPayhisDto> {
                    Result = -1, Message = "secretkey不存在"
                });
            }
            string Signature = Md5.SignString(req.SecretKey + req.Orderno + req.Timestamp + partner.Accesssecret);

            if (Signature != req.Signature)
            {
                return(new Respbase <GetThridPayhisDto> {
                    Result = -1, 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 <GetThridPayhisDto> {
                    Result = -6, Message = "订单号已存在,orderno:" + req.Orderno
                });
            }
            var payHis = new GetThridPayhisDto {
                amount = payhis.Amount, body = payhis.Body, orderpcn = payhis.Hisid, createtime = payhis.Createtime, orderno = payhis.Orderno, paystatus = payhis.Paystatus, paytype = payhis.Paytype, subject = payhis.Subject
            };

            return(new Respbase <GetThridPayhisDto> {
                Result = 1, Message = "验证成功", Data = payHis
            });
        }
Пример #2
0
        public bool ExecuteCore()
        {
            payHis = db.TpcnThirdPayhisSet.FirstOrDefault(x => x.Hisid == Hisid);
            if (!(Hisid > 0 && payHis != null))
            {
                log.Info($"{nameof(Hisid)}={Hisid}:支付历史不存在");
                return(false);
            }
            if (payHis.Storequest != 0)
            {
                log.Info($"{nameof(Hisid)}={Hisid}:通知已成功送达");
                return(false);
            }
            partner = db.TpcnThirdPartnerSet.FirstOrDefault(x => x.Id == payHis.Partnerid);
            if (partner == null)
            {
                log.Info($"签名id={payHis.Partnerid}: PCN签名信息不存在");
                return(false);
            }

            Dictionary <string, string> immutableMap = BuildMap();
            //签名
            string timestamp = DateTime.Now.ToString("yyyyMMddHHmmssffff");

            immutableMap.Add("timestamp", timestamp);
            string Signature = Md5.SignString(partner.Accesskeyid + payHis.Orderno + timestamp + partner.Accesssecret);

            immutableMap.Add("signature", Signature);
            string queryString = ConcatQueryString(immutableMap);

            log.Info("req-url=" + payHis.Notifyurl);
            log.Info("req-cnt=" + queryString);
            string result = Try(PostReqeust, payHis.Notifyurl, queryString);

            log.Info("post的结果" + result);
            if ("OK".Equals(result, StringComparison.OrdinalIgnoreCase))
            {
                payHis.Storequest        = 2;
                payHis.Notifyfailnumber += 1;
            }
            else
            {
                payHis.Notifyfailnumber += 1;
                payHis.Nextnotifytime    = DateTime.Now.AddSeconds(GetNextnotifytime(payHis.Notifyfailnumber));
            }
            if (db.SaveChanges() <= 0)
            {
                return(false);
            }
            return(true);
        }