마켓플레이스

결제 설정 잠금

리셀러가 맞춰 둔 PG 연동을 가맹점이 실수로 바꾸지 못하게 잠근다.

하위 프로젝트의 결제 설정을 리셀러가 잠그거나 푼다. 잠기면 가맹점은 부트페이 관리자 화면에서 결제수단을 켜고 끄거나, 테스트 모드(샌드박스)를 바꾸거나, 연동 값(MID 등)을 저장할 수 없다.

핵심 요약

  • 잠금은 프로젝트(app_id) 하나에 걸린다. 그 프로젝트의 모든 결제수단에 적용된다.
  • 가맹점은 이 잠금을 풀 수 없다. 가맹점 화면에는 "리셀러가 잠가 둔 결제 설정"이라고 보이고, 바꾸려면 리셀러에게 문의하라고 안내된다.
  • 가맹점도 자기 화면에서 따로 잠글 수 있다(가맹점 잠금). 두 잠금은 서로 다른 값이다 — 이 API 는 리셀러 잠금만 바꾸고, 가맹점 잠금이 켜져 있어도 리셀러 잠금을 바꿀 수 있다.
  • 리셀러 API 는 두 잠금과 상관없이 동작한다. PG 리소스 갱신(결제수단 추가·연동 값 갱신·켜기·끄기)은 리셀러 잠금이나 가맹점 잠금이 켜져 있어도 그대로 된다.
  • 지금 잠금 상태는 결제수단 목록·프로젝트 조회 응답의 payment_setting_lock 으로도 볼 수 있다.
  • 리셀러 관리자 콘솔의 하위 가맹점 상세 화면에서도 프로젝트마다 잠그고 풀 수 있다.

API 정보

PUThttps://api.bootpay.co.kr/v2/reseller/seller/app/:app_id/payment-lockBasic Auth (리셀러 계정 키)

요청 파라미터

파라미터 타입 필수 설명
app_id String 필수 하위 프로젝트의 app_id (URL 경로)
locked Boolean 필수 true 잠금, false 풀기. 다른 값은 PARAMS_INVALID

코드 예제

import fetch from 'node-fetch'

const RESELLER_AUTH = 'Basic ' + Buffer
  .from(`${process.env.BOOTPAY_RESELLER_CLIENT_KEY}:${process.env.BOOTPAY_RESELLER_SECRET_KEY}`)
  .toString('base64')

const appId = '65a1c0ab8f1b5b00367a0010'
const res = await fetch(`https://api.bootpay.co.kr/v2/reseller/seller/app/${appId}/payment-lock`, {
    method:  'PUT',
    headers: { 'Authorization': RESELLER_AUTH, 'Content-Type': 'application/json' },
    body:    JSON.stringify({ locked: true })
})
const { payment_setting_lock } = await res.json()
console.log(payment_setting_lock.reseller_locked) // truejavascript

응답

{
  "app_id": "65a1c0ab8f1b5b00367a0010",
  "payment_setting_lock": {
    "seller_locked":       false,
    "seller_changed_at":   null,
    "reseller_locked":     true,
    "reseller_changed_at": "2026-10-29T15:00:00+09:00"
  }
}json
필드 타입 필수 설명
app_id String 필수 프로젝트 식별자
payment_setting_lock Object 필수 결제 설정 잠금 상태
seller_locked Boolean 필수 가맹점이 자기 화면에서 켠 잠금. 이 API 로는 바뀌지 않는다
seller_changed_at String 선택 가맹점 잠금을 마지막으로 켜거나 끈 시각
reseller_locked Boolean 필수 리셀러 잠금. 이 API 로 바꾼다
reseller_changed_at String 선택 리셀러 잠금을 마지막으로 켜거나 끈 시각

잠기면 가맹점 화면에서 막히는 것

가맹점 관리자 화면 동작 리셀러 잠금 가맹점 잠금
결제수단 켜기·끄기(모두 켜기·끄기 포함) 막힘 막힘
테스트 모드(샌드박스) 켜기·끄기 막힘 막힘
연동 값(MID·가맹점 키 등) 저장 막힘 막힘
잠금 풀기 리셀러만 가맹점 프로젝트 관리자(비밀번호 확인)

막힌 동작을 가맹점이 시도하면 PM_RESELLER_SETTING_LOCKED(8220, "리셀러가 잠가 둔 결제 설정이에요. 바꾸려면 리셀러에게 문의해 주세요.")로 거절된다. 리셀러 API 와 부트페이 운영팀의 처리는 막지 않는다.

에러 코드

코드 메시지 대처 방법
API_ONLY_RESELLER (601) 리셀러만 이용이 가능한 API 다 리셀러 권한 계정 키로 호출한다
API_SCOPE_INVALID 허용되지 않은 API 권한의 키다 (HTTP 401) 키에 reseller:app:write 리셀러 스코프 를 주거나 전체 권한(supervisor) 키로 호출한다
PARAMS_INVALID (-33) locked 는 true 또는 false 로 보내야 한다 (HTTP 400) locked 를 불리언으로 보낸다
APP_NOT_FOUND (200) 프로젝트를 찾지 못했다 (HTTP 404) app_id 가 올바른지 확인한다
APP_NOT_PERMIT (201) 본인 하위 프로젝트가 아니다 (HTTP 401) app_id 가 본인 리셀러 하위 셀러의 프로젝트인지 확인한다

함께 보기