public async Task <IActionResult> DefrayPay(DefrayPayCallbackQM qm) { logger.Info($"代付回调返回:{JsonConvert.SerializeObject(qm)}"); jdService.VerifyDefrayPayCallback(qm); //todo 处理代付逻辑 return(Content("ok", "text/plain")); }
public void VerifyDefrayPayCallback(DefrayPayCallbackQM qm) { qm.NotNull("请求参数"); qm.sign_data.NotNull("签名"); qm.sign_type.NotNull("签名类型"); var pairs = new List <string>(); qm.GetType().GetProperties().OrderBy(w => w.Name).ToList().ForEach(prop => { if (!JdHelper.IGNORES.Contains(prop.Name)) { var val = Convert.ToString(prop.GetValue(qm)); if (!String.IsNullOrEmpty(val)) { pairs.Add($"{prop.Name}={val}"); } } }); var signSrc = String.Join("&", pairs); var sign = JdHelper.ComputeSha1(signSrc + jdConfig.Sha256SignKey); if (sign != qm.sign_data) { throw new BizException("签名不正确"); } }