Files
Gnuboard7/plugins/_bundled/sirsoft-pay_nicepayments/resources/lang/ko.json
T
HeuJung 1e89335258 fix(core,extensions): 동적 스크립트 주입 경로 전부에 출처 게이트 적용
레이아웃 scripts[] 에만 있던 원격 스크립트 차단 게이트가 다른 주입 경로에는
없어, 저장측(SafeLayoutExpressions·NoExternalUrls)이 외부 URL 저장을 422 로
막아도 런타임 디스패치 한 번으로 임의 원격 코드가 로드됐다. 저장 검증이
통째로 무의미해지는 상태였고 오류도 경고도 남지 않았다.

판정식을 support/scriptSrcPolicy.ts 로 분리해 런타임 SSoT 를 하나로 두고,
loadScript 액션 · 확장 핸들러 재로드 · 편집기 프리뷰 · 편집기 자산 매니페스트 ·
G7Core.asset.loadScript · PG 플러그인 SDK 주입이 모두 그것을 경유하게 했다.
사본을 두지 않은 이유는 차집합이 그대로 우회로가 되기 때문이다.

- 게이트는 캐시 검사보다 앞에 둔다 (뒤에 두면 이미 로드된 미신뢰 스크립트가
 캐시 히트로 통과한다)
- NoExternalUrls 순회를 9키로 확대 — 번들 레이아웃 601개 사전 스캔으로
 정당한 외부 URL 0건을 확인한 뒤 넓혔다 (저장 회귀 없음)
- callExternal 은 생성자를 참조 동일성으로 거부하고(별칭 전역 포함),
 프로토타입 경로 세그먼트를 읽기·매핑 키 양쪽에서 차단한다
- PG SDK 는 서비스 SDK 라 자체 호스팅이 불가능하므로 manifest 선언 +
 주입 직전 호스트 확인이 게이트다. tosspayments SDK URL 은 확장자가 없어
 정적 검사에 걸리지 않아 그 런타임 확인이 유일한 게이트다
- 함께 드러난 결함: 동시 loadScript 가 로드 전에 완료 처리되던 문제,
 확장 재로드에서 script 기존재가 CSS 까지 건너뛰던 문제, loadCSS 의
 in-flight 미공유
2026-09-02 21:43:13 +09:00

160 lines
9.8 KiB
JSON

{
"editor": {
"data_source": {
"nicepay_easy_pay_config": "간편결제 설정",
"nicepay_escrow": "에스크로",
"nicepay_status": "결제 상태",
"nicepay_test_mode_status": "테스트 모드 상태",
"nicepay_test_map": "테스트 결제 맵",
"settings": "결제 설정",
"vbank_info": "가상계좌 정보"
}
},
"settings": {
"title": "나이스페이먼츠 설정",
"description": "나이스페이먼츠 PG 연동 설정",
"test_mode": "테스트 모드",
"test_mode_hint": "테스트 모드에서도 실제 카드 승인/출금 알림이 발생할 수 있으며, 테스트 계정 결제는 당일 23:30경 일괄 자동 취소됩니다.",
"section_test_keys": "테스트 키 설정",
"test_mid": "테스트 가맹점 ID (MID)",
"test_mid_hint": "나이스페이먼츠 공용 테스트 MID입니다. 테스트 전용이며 변경하지 않아도 됩니다.",
"test_merchant_key": "테스트 가맹점 키",
"test_merchant_key_hint": "나이스페이먼츠 공용 테스트 키입니다. 테스트 전용이며 변경하지 않아도 됩니다.",
"section_live_keys": "라이브 키 설정",
"live_mid": "라이브 가맹점 ID (MID)",
"live_mid_hint": "나이스페이먼츠 상점관리자 > 가맹점정보 > KEY관리에서 확인. 'SR'을 제외한 나머지만 입력하세요.",
"live_mid_example": "예) 상점ID가 SRpaytestm이면 paytestm만 입력 → 완성: SRpaytestm",
"live_merchant_key": "라이브 가맹점 키",
"live_merchant_key_hint": "외부에 노출되지 않도록 주의하세요.",
"live_mode_warning_title": "라이브 모드 활성화",
"live_mode_warning_body": "현재 실제 결제가 처리됩니다. 라이브 MID와 가맹점 키가 올바르게 설정되어 있는지 확인하세요.",
"section_vbank_notify": "가상계좌 입금통보 URL",
"vbank_notify_hint": "가상계좌 사용 시 아래 URL을 나이스페이먼츠 가맹점관리자 → 가맹점정보 설정에 등록하세요. 입금이 완료되면 이 주소로 자동 통보됩니다.",
"vbank_notify_copied": "URL이 클립보드에 복사되었습니다.",
"copy": "복사",
"section_redirect": "리다이렉트 URL",
"redirect_success_url": "결제 성공 리다이렉트 URL",
"redirect_success_url_hint": "{shopBase}는 상점 주소 설정을 따라 자동으로 채워집니다. 전체 URL(https://...)을 직접 넣어도 됩니다. {orderId}는 주문번호로 자동 치환됩니다.",
"redirect_fail_url": "결제 실패 리다이렉트 URL",
"redirect_fail_url_hint": "상대 경로 또는 전체 URL 모두 가능합니다. 오류 정보는 쿼리 파라미터로 자동 추가됩니다.",
"use_escrow": "에스크로 결제 사용",
"use_escrow_hint": "실물 상품 판매 시 구매자 보호를 위한 에스크로 결제를 활성화합니다. 에스크로 결제 후 배송 등록이 필요합니다.",
"section_easy_pay": "간편결제 설정",
"section_easy_pay_hint": "사용할 간편결제 서비스를 선택하세요. 나이스페이먼츠 가맹점 계약이 완료된 서비스만 활성화하세요.",
"easy_pay_naverpay": "네이버페이",
"easy_pay_naverpay_hint": "테스트 모드에서도 사용 가능",
"easy_pay_kakaopay": "카카오페이",
"easy_pay_samsungpay": "삼성페이",
"easy_pay_applepay": "애플페이",
"easy_pay_applepay_hint": "Safari 및 Apple 기기에서만 사용 가능",
"easy_pay_payco": "PAYCO",
"easy_pay_skpay": "11pay (SK페이)",
"easy_pay_ssgpay": "SSG페이",
"easy_pay_lpay": "L.pay",
"easy_pay_allow_with_other_pg": "타 PG와 사용가능함",
"easy_pay_allow_with_other_pg_hint": "활성화하면, 다른 PG사가 기본 결제수단으로 설정된 경우에도 체크아웃 페이지에 나이스페이 간편결제 버튼이 표시됩니다."
},
"admin": {
"transaction_query_title": "TID 거래 조회",
"transaction_query_description": "나이스페이먼츠 거래 ID(TID)로 결제 상태를 직접 조회합니다.",
"transaction_tid_label": "거래 ID (TID)",
"transaction_query_button": "조회",
"transaction_query_error": "조회 실패",
"transaction_result_title": "조회 결과",
"result_tid": "거래 ID (TID)",
"result_order_id": "주문번호 (Moid)",
"result_amount": "결제 금액",
"result_status": "결제 상태",
"result_method": "결제 수단",
"result_auth_code": "승인번호",
"result_auth_date": "승인일시",
"result_result_code": "결과 코드",
"order_verify_title": "나이스페이먼츠 결제 검증",
"order_verify_description": "나이스페이먼츠 서버에서 실시간으로 결제 상태를 조회합니다.",
"order_verify_button": "결제 조회",
"order_verify_error": "조회 실패",
"pay_status_approved": "승인",
"pay_status_cancelled": "취소",
"pay_status_unknown": "미확인",
"vbank_noti_title": "가상계좌 입금통보 이력",
"vbank_noti_description": "NicePay 입금통보 수신 기록 (자동 누적)",
"vbank_noti_count": "통보 횟수",
"vbank_noti_first_at": "첫 통보 수신",
"vbank_noti_last_at": "마지막 통보 수신",
"vbank_noti_deposited_at": "입금완료 통보 시각",
"vbank_noti_cancelled_at": "입금취소 통보 시각",
"vbank_noti_depositor": "입금자명 (마지막)",
"vbank_noti_history": "통보 이력 (시간순)",
"vbank_noti_type_deposited": "입금완료",
"vbank_noti_type_cancelled": "입금취소",
"vbank_noti_type_other": "기타 통보",
"vbank_noti_query_button": "통보 이력 조회",
"vbank_noti_loading": "조회 중...",
"vbank_noti_not_loaded": "조회 버튼을 누르면 NicePay 입금통보 이력을 확인할 수 있습니다.",
"vbank_noti_empty": "수신된 입금통보가 없습니다.",
"vbank_noti_load_error": "입금통보 이력 조회 중 오류가 발생했습니다.",
"escrow_badge": "에스크로",
"result_escrow": "에스크로 여부",
"escrow_yes": "에스크로 결제",
"escrow_no": "일반 결제",
"escrow_payment_notice": "에스크로 결제입니다. 배송 등록 후 구매자 구매확정이 필요합니다.",
"escrow_delivery_title": "에스크로 배송 등록",
"escrow_delivery_company": "택배사명",
"escrow_delivery_company_placeholder": "예: CJ대한통운",
"escrow_tracking_number": "운송장번호",
"escrow_tracking_number_placeholder": "운송장 번호 입력",
"escrow_buyer_address": "배송지 주소",
"escrow_register_name": "등록자 이름",
"escrow_register_button": "배송 등록",
"escrow_register_success": "에스크로 배송이 등록되었습니다.",
"escrow_register_error": "에스크로 배송 등록에 실패했습니다.",
"test_mode_badge": "테스트 결제",
"test_mode_order_notice": "테스트 결제로 처리된 주문입니다. 실제 카드 승인/출금 알림이 발생할 수 있으나, 나이스페이먼츠 테스트 계정 결제는 당일 23:30경 일괄 자동 취소됩니다. 배송 전 운영 결제 여부를 확인하세요.",
"test_mode_settings_warning_plugin": "나이스페이먼츠",
"test_mode_settings_warning_title": "(주의!) 나이스페이먼츠 결제 설정이 현재 테스트결제로 되어 있습니다.",
"test_mode_settings_warning_body": "테스트결제 시 실제 결제가 되지 않으므로, 쇼핑몰 운영 중이면 반드시 실결제로 설정하여 운영하세요.",
"test_mode_settings_warning_action": "실결제로 설정",
"test_mode_orders_in_list": "테스트 결제 주문 포함"
},
"easy_pay": {
"section_title": "간편결제"
},
"user": {
"receipt_label": "영수증",
"view_receipt": "영수증 보기",
"view_cash_receipt": "현금영수증 조회",
"easy_pay_label": "간편결제 서비스",
"test_mode_badge": "테스트 결제",
"tax_breakdown_title": "세금 상세",
"supply_amount": "공급가액",
"vat_amount": "부가세",
"tax_free_amount": "면세금액",
"vbank_deposit_info": "가상계좌 입금 안내",
"vbank_bank": "은행",
"vbank_account": "계좌번호",
"vbank_holder": "예금주",
"vbank_amount": "입금 금액",
"vbank_due": "입금 기한",
"vbank_notice": "입금 기한 내에 입금이 완료되지 않으면 주문이 자동 취소됩니다."
},
"messages": {
"refund": {
"missing_tid": "결제 거래번호(TID)가 없습니다.",
"default_reason": "관리자 환불"
},
"payment": {
"auth_failed": "결제 인증에 실패했습니다.",
"mid_mismatch": "가맹점 ID가 일치하지 않습니다.",
"signature_mismatch": "결제 서명 검증에 실패했습니다.",
"order_not_found": "주문을 찾을 수 없습니다.",
"amount_mismatch": "결제 금액이 일치하지 않습니다.",
"authorize_failed": "결제 승인에 실패했습니다."
}
},
"payment": {
"error": {
"sdk_url_untrusted": "결제 모듈 주소가 올바르지 않아 결제를 진행할 수 없습니다. 관리자에게 문의해 주세요."
}
}
}