Example #1
0
        public async Task UpdateStatusesAsync()
        {
            // Всички в EServicePaymentRequest, който имат Id от регистрация в сустемата на ел.плащане
            // и имат статус различен от ERROR, PAID, CANCELED, EXPIRED, SUSPENDED

            var exceptHash = new HashSet <string>(new List <string> {
                "ERROR", "PAID", "CANCELED", "EXPIRED", "SUSPENDED"
            });
            var entities = await _context.EservicePaymentRequest
                           .AsNoTracking()
                           .Where(x => x.AisPaymentId != null && x.StatusCode != null && !exceptHash.Contains(x.StatusCode))
                           .Select(x => new { x.AisPaymentId, x.StatusCode })
                           .ToListAsync();

            var ids = new HashSet <int>(entities.Where(x => x.AisPaymentId.HasValue).Select(x => x.AisPaymentId.Value));
            PaymentRequestStatusCheckResultModel checkResults = await _ePaymentService.PaymentRequestsStatusCheckAsync(ids.ToList());

            if (checkResults?.Statuses != null)
            {
                var toChage = checkResults.Statuses.Where(x => !entities.Any(e => e.AisPaymentId == x.Id && e.StatusCode.Equals(x.Status, StringComparison.OrdinalIgnoreCase)));
                foreach (PaymentRequestStatusChangeModel item in toChage)
                {
                    await _ePaymentService.ChangePaymentRequestStatusAsync(item);
                }
            }
        }
Example #2
0
        public async Task <IActionResult> PaymentRequestStatusChanged([FromBody] PaymentRequestStatusChangeModel model)
        {
            try
            {
                if (model == null)
                {
                    Log.Information($"IntegrationController/paymentRequestStatusChanged - empty model");
                    return(BadRequest("Empty model"));
                }

                await paymentService.ChangePaymentRequestStatusAsync(model);

                Log.Information($"IntegrationController/paymentRequestStatusChanged - changed request with Id: {model.Id} / {model.Status} / {model.ChangeTime}");
                return(Ok(new { success = true }));
            }
            catch (Exception ex)
            {
                Log.Error(ex, $"ERROR changing payment request status");
                return(BadRequest("Error changing payment request status"));
            }
        }