Esempio n. 1
0
 public async Task <IActionResult> DefrayPay(DefrayPayCallbackQM qm)
 {
     logger.Info($"代付回调返回:{JsonConvert.SerializeObject(qm)}");
     jdService.VerifyDefrayPayCallback(qm);
     //todo 处理代付逻辑
     return(Content("ok", "text/plain"));
 }
Esempio n. 2
0
        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("签名不正确");
            }
        }