public async Task <bool> DispatchAsync(LotteryAwarded message) { try { Merchanter merchanter = _lotteryMerchanters.GetOrAdd(message.LvpMerchanerId, (merchanterId) => { return(_lotteryMerchanterApplicationService.FindMerchanterAsync(merchanterId).GetAwaiter().GetResult()); }); if (merchanter.IsNotice == false) { return(true); } return(await _policy.ExecuteAsync(async() => { HttpResponseMessage responseMessage = (await _client.PostAsync(merchanter.NoticeAddress, new ByteArrayContent(_serializer.Serialize(new { OrderId = message.LvpOrderId, Amount = message.BonusAmount, Status = (int)message.AwardingType })))).EnsureSuccessStatusCode(); byte[] bytes = await responseMessage.Content.ReadAsByteArrayAsync(); Handle result = _serializer.Deserialize <Handle>(bytes); _logger.LogInformation("Notice {0} result:{1}", message.LvpOrderId, result); return true; })); } catch (Exception ex) { _logger.LogError(ex, "Notice error! {0}", message.LvpOrderId); } return(false); }
public async Task <bool> DispatchAsync(LotteryTicketed message) { try { Merchanter merchanter = _lotteryMerchanters.GetOrAdd(message.LvpMerchanerId, (merchanterId) => { return(_lotteryMerchanterApplicationService.FindMerchanterAsync(merchanterId).GetAwaiter().GetResult()); }); if (merchanter.IsNotice == false) { return(true); } await _policy.ExecuteAsync(async() => { HttpResponseMessage responseMessage = (await _client.PostAsync(merchanter.TicketAddress, new ByteArrayContent(_serializer.Serialize(new { OrderId = message.LvpOrderId, TicketOdds = message.TicketedOdds ?? string.Empty, Status = (int)message.TicketingType })))).EnsureSuccessStatusCode(); byte[] bytes = await responseMessage.Content.ReadAsByteArrayAsync(); _logger.LogInformation("Notice {0} Response:{1}", message.LvpOrderId, Encoding.UTF8.GetString(bytes)); Handle result = _serializer.Deserialize <Handle>(bytes); return(result != null && result.Ret == 0); }); } catch (Exception ex) { _logger.LogError(ex, "Notice error! {0}", message.LvpOrderId); } return(true); }
/// <summary> /// xAgent=3821&xAction=501&xSign=dfa62fc1b09d94fca897a3462a928545&xValue=D200900067_2003,D200900054_2003 /// </summary> /// <param name="httpContext"></param> /// <returns></returns> public async Task Invoke(HttpContext httpContext) { try { var xAgent = httpContext.Request.Form["xAgent"].ToString(); var xAction = httpContext.Request.Form["xAction"].ToString(); var xSign = httpContext.Request.Form["xSign"].ToString(); var xValue = httpContext.Request.Form["xValue"].ToString(); var merchanter = await _lotteryMerchanterApplicationService.FindMerchanterAsync(xAgent); string str = $"{xAgent}{xAction}{xValue}{merchanter.SecretKey}"; if (str.VerifyMd5(xSign)) { string[] items = xValue.Split(","); foreach (var item in items) { string[] values = item.Split("_"); var order = await _orderingApplicationService.FindOrderAsync(values[0]); if (order.Status < 4000) { LotteryTicketingTypes lotteryTicketingType = values[1] == "1" ? LotteryTicketingTypes.Success : LotteryTicketingTypes.Failure; _logger.LogTrace($"{order.Id} Ticketed: {lotteryTicketingType}"); await _lotteryNoticingMessagePublisher.PublishAsync($"LotteryOrdering.Ticketed.{xAgent}", new NoticeMessage <LotteryTicketed>(values[0], xAgent, new LotteryTicketed { LvpMerchanerId = order.LdpVenderId, LvpOrderId = order.LvpOrderId, TicketingType = lotteryTicketingType, })); } else { _logger.LogWarning($"{order.Id} {order.Status}"); } } await httpContext.Response.WriteAsync("1"); } } catch (Exception ex) { _logger.LogError(ex.Message); } await httpContext.Response.WriteAsync("0"); }
/// <summary> /// /// </summary> /// <param name="httpContext"></param> /// <returns></returns> public async Task Invoke(HttpContext httpContext) { ResContent rescon = new ResContent(); try { var result = string.Empty; using (var reader = new StreamReader(httpContext.Request.Body, Encoding.UTF8)) { result = await reader.ReadToEndAsync(); ReqContent reqcon = JsonConvert.DeserializeObject <ReqContent>(result); string apicode = reqcon.apiCode; string partnerid = reqcon.partnerId; string messageid = reqcon.messageId; string hmac = reqcon.hmac; rescon.version = "1.0"; rescon.content = string.Empty; rescon.partnerId = partnerid; rescon.resCode = "1"; rescon.resMsg = ""; rescon.apiCode = apicode; rescon.messageId = messageid; string s = string.Format("{0}{1}{2}{3}", apicode, reqcon.content, messageid, partnerid); var merchanter = await _lotteryMerchanterApplicationService.FindMerchanterAsync(partnerid); string sign = s.hmac_md5(merchanter.SecretKey.Substring(0, 16)).ToLower(); if (sign == reqcon.hmac) { string CipherText = _crypter.Decrypt(reqcon.content, merchanter.SecretKey); if (apicode == "300002") { if (await TicketNoticing(CipherText)) { rescon.resCode = "0"; } } if (apicode == "300003") { if (await AwardNoticing(CipherText)) { rescon.resCode = "0"; } } } else { rescon.resMsg = "签名错误"; } } } catch (Exception ex) { _logger.LogError(ex.Message); } string json = JsonExtensions.ToJsonString(rescon); //HttpContent content = new StringContent(json, Encoding.UTF8, "application/json"); await httpContext.Response.WriteAsync(json); }