/// <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 }); }
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); }