示例#1
0
        private TpcnThirdPayhis InitPcnThirdPayhis()
        {
            TpcnThirdPayhis payhis = new TpcnThirdPayhis();

            payhis.Createtime     = DateTime.Now;
            payhis.Paystatus      = 1;
            payhis.Storequest     = 0;
            payhis.Nextnotifytime = DateTime.Now;
            return(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);
        }
示例#3
0
        /// <summary>
        ///
        /// </summary>
        public void Execute()
        {
            string guidStr = Guid.NewGuid().ToString();

            log.Info($"开始调用通知{guidStr}");

            if (Try(ExecuteCore))
            {
                log.Info($"调用通知成功-结束{guidStr}");
            }
            else
            {
                log.Info($"调用通知失败-结束{guidStr}");
            }
            Hisid  = 0;
            payHis = null;
        }
示例#4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="payHis"></param>
 public void Execute(TpcnThirdPayhis payHis)
 {
     this.payHis = payHis;
     Execute();
 }
示例#5
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="payHis"></param>
 public NoticeService(TpcnThirdPayhis payHis)
 {
     this.payHis = payHis;
 }