Index.cshtml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. @page
  2. @model Admin.Pages.Config.Payment.IndexModel
  3. @{
  4. ViewData["Title"] = "결제 설정";
  5. string KeyPlaceholder(bool isSet) => isSet ? "설정됨 — 변경할 때만 입력하세요" : "미설정 — 키를 입력하세요";
  6. }
  7. <div class="container">
  8. <h3>@ViewData["Title"]</h3>
  9. <hr />
  10. <div asp-validation-summary="ModelOnly" class="text-danger"></div>
  11. <partial name="_StatusMessage" />
  12. <form name="f_admin_write" id="fAdminWrite" class="mt-2" method="post" autocomplete="off" accept-charset="UTF-8">
  13. <!-- 토스페이먼츠 -->
  14. <details class="adm-section" open>
  15. <summary class="fs-5">토스페이먼츠 (Toss Payments)</summary>
  16. <div class="adm-section__body">
  17. <div class="form-text text-muted mb-3">
  18. 키는 저장 시 암호화됩니다. 이미 설정된 키는 화면에 표시되지 않으며, <strong>빈 칸으로 저장하면 기존 키가 유지</strong>됩니다.
  19. </div>
  20. <div class="row mb-2">
  21. <label asp-for="Input.Toss.TossPayMode" class="col-sm-2 col-form-label">결제 환경</label>
  22. <div class="col-sm-10">
  23. <select asp-for="Input.Toss.TossPayMode" class="form-select">
  24. <option value="">-- 선택 --</option>
  25. <option value="test">테스트 (Test)</option>
  26. <option value="live">운영 (Live)</option>
  27. </select>
  28. <span asp-validation-for="Input.Toss.TossPayMode" class="text-danger"></span>
  29. </div>
  30. </div>
  31. <div class="row mb-2">
  32. <label asp-for="Input.Toss.TestClientKey" class="col-sm-2 col-form-label">Test Client Key</label>
  33. <div class="col-sm-10">
  34. <input asp-for="Input.Toss.TestClientKey" type="text" class="form-control" autocomplete="off" placeholder="@KeyPlaceholder(Model.KeyState.HasTestClientKey)" />
  35. <span asp-validation-for="Input.Toss.TestClientKey" class="text-danger"></span>
  36. </div>
  37. </div>
  38. <div class="row mb-2">
  39. <label asp-for="Input.Toss.TestSecretKey" class="col-sm-2 col-form-label">Test Secret Key</label>
  40. <div class="col-sm-10">
  41. <input asp-for="Input.Toss.TestSecretKey" type="password" class="form-control" autocomplete="new-password" placeholder="@KeyPlaceholder(Model.KeyState.HasTestSecretKey)" />
  42. <span asp-validation-for="Input.Toss.TestSecretKey" class="text-danger"></span>
  43. </div>
  44. </div>
  45. <div class="row mb-2">
  46. <label asp-for="Input.Toss.LiveClientKey" class="col-sm-2 col-form-label">Live Client Key</label>
  47. <div class="col-sm-10">
  48. <input asp-for="Input.Toss.LiveClientKey" type="text" class="form-control" autocomplete="off" placeholder="@KeyPlaceholder(Model.KeyState.HasLiveClientKey)" />
  49. <span asp-validation-for="Input.Toss.LiveClientKey" class="text-danger"></span>
  50. </div>
  51. </div>
  52. <div class="row mb-2">
  53. <label asp-for="Input.Toss.LiveSecretKey" class="col-sm-2 col-form-label">Live Secret Key</label>
  54. <div class="col-sm-10">
  55. <input asp-for="Input.Toss.LiveSecretKey" type="password" class="form-control" autocomplete="new-password" placeholder="@KeyPlaceholder(Model.KeyState.HasLiveSecretKey)" />
  56. <span asp-validation-for="Input.Toss.LiveSecretKey" class="text-danger"></span>
  57. </div>
  58. </div>
  59. <br/>
  60. <div class="alert alert-info" role="alert">
  61. <div class="form-text text-muted">
  62. <ul class="mb-0">
  63. <li>Client Key 는 결제위젯 호출용으로 프론트엔드에 전달됩니다.</li>
  64. <li>Secret Key 는 승인/취소/조회 API 인증에 사용됩니다. 외부에 노출되지 않도록 주의하세요.</li>
  65. <li>키 발급: 토스페이먼츠 개발자센터 → 내 개발정보 → API 키</li>
  66. </ul>
  67. </div>
  68. </div>
  69. </div>
  70. </details>
  71. <div class="row">
  72. <div class="col text-center p-3">
  73. <button type="submit" class="btn btn-success">저장하기</button>
  74. </div>
  75. </div>
  76. <br />
  77. </form>
  78. </div>