private void CheckResponseSign <T>(IAlipayRequest <T> request, string responseBody, bool isError, IAlipayParser <T> parser, AlipayOptions options) where T : AlipayResponse { var signItem = parser.GetSignItem(request, responseBody); if (signItem == null) { throw new AlipayException("sign check fail: Body is Empty!"); } if (!isError || isError && !string.IsNullOrEmpty(signItem.Sign)) { var rsaCheckContent = AlipaySignature.RSACheckContent(signItem.SignSourceDate, signItem.Sign, options.AlipayPublicKey, options.SignType); if (!rsaCheckContent) { if (!string.IsNullOrEmpty(signItem.SignSourceDate) && signItem.SignSourceDate.Contains("\\/")) { var srouceData = signItem.SignSourceDate.Replace("\\/", "/"); var jsonCheck = AlipaySignature.RSACheckContent(srouceData, signItem.Sign, options.AlipayPublicKey, options.SignType); if (!jsonCheck) { throw new AlipayException("sign check fail: check Sign and Data Fail JSON also"); } } else { throw new AlipayException("sign check fail: check Sign and Data Fail!"); } } } }
private void CheckResponseSign <T>(IAlipayRequest <T> request, string responseBody, bool isError, IAlipayParser <T> parser, RSAParameters parameters, string signType) where T : AlipayResponse { try { logger?.LogDebug($"{DateTime.Now} 支付宝CheckResponseSign"); var signItem = parser.GetSignItem(request, responseBody); if (signItem == null) { throw new Exception("sign check fail: Body is Empty!"); } if (!isError || (isError && !string.IsNullOrEmpty(signItem.Sign))) { var rsaCheckContent = AlipaySignature.RSACheckContent(signItem.SignSourceDate, signItem.Sign, parameters, signType); if (!rsaCheckContent) { if (!string.IsNullOrEmpty(signItem.SignSourceDate) && signItem.SignSourceDate.Contains("\\/")) { var srouceData = signItem.SignSourceDate.Replace("\\/", "/"); var jsonCheck = AlipaySignature.RSACheckContent(srouceData, signItem.Sign, parameters, signType); if (!jsonCheck) { throw new Exception("sign check fail: check Sign and Data Fail JSON also"); } } else { throw new Exception("sign check fail: check Sign and Data Fail!"); } } } } catch (Exception ex) { logger?.LogError($"{DateTime.Now} 支付宝CheckResponseSign报错", ex.Message); } }