// TODO: // 이 로직은 비지니스 로직을 담고 있습니다. // 비즈니스 레이어로 옮기는 것이 좋습니다. private async Task RefreshPaymentAsync(AspNetCore.Models.Payment payment) { var iamportPayment = await paymentsApi.GetByTransactionIdAsync(payment.TransactionId); if (iamportPayment == null) { throw new InvalidOperationException("Failed to get payment information from Iamport."); } // 기존 상태(payment.State)와 최신 상태(iamportPayment.Status)를 비교합니다. switch (iamportPayment.Status) { case PaymentStatus.Ready: if (iamportPayment.Method == PaymentMethod.VirtualBank && !string.IsNullOrEmpty(iamportPayment.VirtualBankAccount)) { payment.SetAwatingForVirtualBank( iamportPayment.IamportId, iamportPayment.PaymentGatewayTransactionId, iamportPayment.VirtualBankName, iamportPayment.VirtualBankAccount, iamportPayment.VirtualBankAccountHolder); } else { payment.SetInProgress(iamportPayment.IamportId); } break; case PaymentStatus.Paid: switch (iamportPayment.Method) { case PaymentMethod.CreditCard: payment.SetPaidForCreditCard( iamportPayment.IamportId, iamportPayment.PaidAtUtc, iamportPayment.PaymentGatewayTransactionId, iamportPayment.ApplyNumber, iamportPayment.CreditCardCompanyName, iamportPayment.InstallmentPlanPeriod); break; case PaymentMethod.VirtualBank: payment.SetPaiedForVirtualBank( iamportPayment.IamportId, iamportPayment.PaidAtUtc, iamportPayment.PaymentGatewayTransactionId, iamportPayment.VirtualBankName, iamportPayment.VirtualBankAccount, iamportPayment.VirtualBankAccountHolder); break; case PaymentMethod.Transfer: case PaymentMethod.Mobile: case PaymentMethod.CultureLand: case PaymentMethod.SmartCulture: case PaymentMethod.HappyMoney: default: payment.SetPaidForOthers( iamportPayment.IamportId, iamportPayment.PaidAtUtc, iamportPayment.PaymentGatewayTransactionId); break; } break; case PaymentStatus.Cancelled: payment.SetCancelled( iamportPayment.IamportId, iamportPayment.CancelledAtUtc, iamportPayment.CancelledReason, iamportPayment.CancelledAmount); break; case PaymentStatus.Failed: payment.SetFailed( iamportPayment.IamportId, iamportPayment.FailedAtUtc, iamportPayment.FailedReason); break; default: break; } paymentRepository.Update(payment); }
private static async Task<string> SendAndGetCookie(AspNetCore.TestHost.TestServer server, string uri) { var request = new HttpRequestMessage(HttpMethod.Get, uri); var response = await server.CreateClient().SendAsync(request); if (response.Headers.Contains("Set-Cookie")) { return response.Headers.GetValues("Set-Cookie").ToList().First(); } return null; }
private static async Task<IList<string>> SendAndGetCookies(AspNetCore.TestHost.TestServer server, string uri) { var request = new HttpRequestMessage(HttpMethod.Get, uri); var response = await server.CreateClient().SendAsync(request); if (response.Headers.Contains("Set-Cookie")) { IList<string> cookieHeaders = new List<string>(); foreach (var cookie in SetCookieHeaderValue.ParseList(response.Headers.GetValues("Set-Cookie").ToList())) { cookieHeaders.Add(cookie.Name + "=" + cookie.Value); } return cookieHeaders; } return null; }