Beispiel #1
0
        /// <summary>
        /// نتیجه از سمت بیت پی
        /// </summary>
        /// <param name="trans_id"></param>
        /// <param name="id_get"></param>
        /// <returns></returns>
        public async Task <IActionResult> BitPayResponse(int trans_id, int id_get)
        {
            var userId = User.GetUserId();
            // زمانی که ازسمت بیت برگشت
            var payResult = await _payService.Checkout(trans_id, id_get);

            _transacionRepository.Update(new
                                         TransactionEditViewModel
            {
                id_get   = id_get,
                trans_id = trans_id,
                IsPaid   = payResult.IsSuccess
            });

            if (payResult.IsSuccess)
            {
                var accountGameId = _transacionRepository.GetAccountGameId(id_get);
                // یک رکورد در درخواست های کاربر میزنیم UserAccountGame
                _userAccountGameRepository.Create(new UserAccountGameCreateViewModel
                {
                    AccountGameId = accountGameId,
                    RequestTime   = DateTime.Now,
                    UserId        = userId
                });

                // کار اصلی
                var resultRequestBuy = _accountGameRepository.SetRequestBuy(accountGameId, userId);
                if (resultRequestBuy.IsOkay)
                {
                    // okay

                    // uppdate isSuc in Transaction
                    _transacionRepository.UpdateIsSuccess(id_get, true);
                }
                else
                {
                    // conflict
                }
            }
            else
            {
                // پرداختی صورت نگرفته است
                // نمایش ارور
            }
            return(RedirectToAction(nameof(Result)));
        }