public async Task <T> ExecuteAsync <T>(HttpRequest request) where T : LianLianPayNotifyResponse { if (request.HasFormContentType) { var parameters = await GetParametersAsync(request); var query = LianLianPayUtility.BuildQuery(parameters); Logger?.LogTrace(0, "Request:{query}", query); var parser = new LianLianPayDictionaryParser <T>(); var rsp = parser.Parse(parameters); CheckNotifySign(parameters); return(rsp); } else if (request.HasTextJsonContentType()) { var body = await new StreamReader(request.Body).ReadToEndAsync(); Logger?.LogTrace(0, "Request:{body}", body); var parser = new LianLianPayJsonParser <T>(); var rsp = parser.Parse(body); CheckNotifySign(rsp.Parameters); return(rsp); } else { throw new Exception("content type is not supported"); } }
public async Task <T> ExecuteAsync <T>(HttpRequest request, string optionsName) where T : LianLianPayNotify { var options = _optionsSnapshotAccessor.Get(optionsName); if (request.HasFormContentType) { var parameters = await GetParametersAsync(request); var query = LianLianPayUtility.BuildQuery(parameters); _logger.Log(options.LogLevel, "Request:{query}", query); var parser = new LianLianPayDictionaryParser <T>(); var rsp = parser.Parse(parameters); CheckNotifySign(parameters, options); return(rsp); } if (request.HasTextJsonContentType()) { var body = await new StreamReader(request.Body).ReadToEndAsync(); _logger.Log(options.LogLevel, "Request:{body}", body); var parser = new LianLianPayJsonParser <T>(); var rsp = parser.Parse(body); CheckNotifySign(rsp.Parameters, options); return(rsp); } throw new LianLianPayException("content type is not supported"); }
public Task <T> PageExecuteAsync <T>(ILianLianPayRequest <T> request, string reqMethod) where T : LianLianPayResponse { var txtParams = new LianLianPayDictionary(request.GetParameters()) { { OID_PARTNER, Options.OidPartner }, { SIGN_TYPE, Options.SignType }, { BUSI_PARTNER, Options.BusiPartner }, { TIMESTAMP, DateTime.Now }, }; // 添加签名 var signContent = LianLianPaySecurity.GetSignContent(txtParams); txtParams.Add(SIGN, MD5WithRSA.SignData(signContent, Options.PrivateKey)); var body = string.Empty; if (reqMethod.ToUpper() == "GET") { //拼接get请求的url var tmpUrl = request.GetRequestUrl(); if (txtParams != null && txtParams.Count > 0) { if (tmpUrl.Contains("?")) { tmpUrl = tmpUrl + "&" + LianLianPayUtility.BuildQuery(txtParams); } else { tmpUrl = tmpUrl + "?" + LianLianPayUtility.BuildQuery(txtParams); } } body = tmpUrl; Logger?.LogTrace(0, "Request Url:{body}", body); } else { //输出post表单 body = BuildHtmlRequest(request.GetRequestUrl(), txtParams); Logger?.LogTrace(0, "Request Html:{body}", body); } var parser = new LianLianPayJsonParser <T>(); var rsp = parser.Parse(body); return(Task.FromResult(rsp)); }