Beispiel #1
0
        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);
        }
Beispiel #2
0
 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);
 }
Beispiel #3
0
        /// <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");
        }
Beispiel #4
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);
        }