예제 #1
0
        /// <summary>
        /// 出票通知
        /// </summary>
        /// <param name="result"></param>
        /// <returns></returns>
        private async Task <bool> TicketNoticing(string result)
        {
            JObject jarr = JObject.Parse(result);

            if (jarr.HasValues)
            {
                foreach (var json in jarr["notifyList"])
                {
                    string Status  = json["status"].ToString();
                    string orderid = json["orderId"].ToString();
                    var    order   = await _orderingApplicationService.FindOrderAsync(orderid);

                    if (order.Status == 2000)
                    {
                        if (Status.IsIn("0", "1"))
                        {
                            return(false);
                        }
                        else if (Status.Equals("2"))
                        {
                            string   ticketId   = json["tickSn"].ToString();
                            DateTime tickettime = DateTime.Now;
                            LotteryTicketingTypes lotteryTicketingType = LotteryTicketingTypes.Success;
                            await _lotteryNoticingMessagePublisher.PublishAsync($"LotteryOrdering.Ticketed.{order.LdpVenderId}", new NoticeMessage <LotteryTicketed>(orderid, order.LdpVenderId, new LotteryTicketed
                            {
                                LvpMerchanerId = order.LdpVenderId,
                                LvpOrderId = order.LvpOrderId,
                                TicketingType = lotteryTicketingType,
                            }));

                            return(true);
                        }
                        else
                        {
                            LotteryTicketingTypes lotteryTicketingType = LotteryTicketingTypes.Success;
                            await _lotteryNoticingMessagePublisher.PublishAsync($"LotteryOrdering.Ticketed.{order.LdpVenderId}", new NoticeMessage <LotteryTicketed>(orderid, order.LdpVenderId, new LotteryTicketed
                            {
                                LvpMerchanerId = order.LdpVenderId,
                                LvpOrderId = order.LvpOrderId,
                                TicketingType = lotteryTicketingType,
                            }));

                            return(true);
                        }
                    }
                }
            }
            return(false);
        }
예제 #2
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");
        }