하위 프로젝트에 설정된 결제수단을 모두 돌려준다. 켜진 것과 꺼 둔 것이 함께 나온다. 결제수단을 붙이거나 끄고 켜는 것은 PG 리소스 갱신 으로 한다.
핵심 요약
status 가 1 이면 켜짐(결제창에 나온다), 0 이면 꺼짐이다. 꺼 둔 결제수단도 연동 값과 기록이 그대로 남아 있어 다시 켤 수 있다.
resource 는 키 이름은 그대로, 값은 가린 값이다(앞 5자 + *****, 10자보다 짧은 값은 앞 절반 + *****). PG 가맹점 키 원문은 어떤 리셀러 API 응답에도 나오지 않는다.
sandbox_mode 가 true 면 테스트 모드다.
cert_expire_at 은 인증서가 필요한 결제수단(예: KCP 휴대폰 자동결제)의 가장 이른 인증서 만료 시각이다. 인증서가 없으면 null 이다.
- 프로젝트를 만들 때 함께 붙는 부트페이 기본 결제수단(테스트 모드)도 목록에 나온다.
payment_setting_lock 은 이 프로젝트의 결제 설정 잠금 상태다(가맹점 잠금 seller_locked · 리셀러 잠금 reseller_locked). 잠금과 상관없이 리셀러 API 로는 결제수단을 바꿀 수 있다 — 결제 설정 잠금
API 정보
GEThttps://api.bootpay.co.kr/v2/reseller/seller/app/:app_id/payment-methodsBasic Auth (리셀러 계정 키)
요청 파라미터
| 파라미터 |
타입 |
필수 |
설명 |
app_id |
String |
필수 |
하위 프로젝트의 app_id (URL 경로) |
코드 예제
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-methods`, {
headers: { 'Authorization': RESELLER_AUTH }
})
const { list } = await res.json()
console.log(list.filter(pm => pm.status === 1).map(pm => `${pm.pg_alias}/${pm.method_alias}`))javascript
import base64, os, requests
auth = 'Basic ' + base64.b64encode(
f"{os.environ['BOOTPAY_RESELLER_CLIENT_KEY']}:{os.environ['BOOTPAY_RESELLER_SECRET_KEY']}".encode()
).decode()
res = requests.get('https://api.bootpay.co.kr/v2/reseller/seller/app/65a1c0ab8f1b5b00367a0010/payment-methods', headers={'Authorization': auth})
print(res.json())python
RESELLER_AUTH=$(printf '%s' "$BOOTPAY_RESELLER_CLIENT_KEY:$BOOTPAY_RESELLER_SECRET_KEY" | base64)
curl "https://api.bootpay.co.kr/v2/reseller/seller/app/65a1c0ab8f1b5b00367a0010/payment-methods" \
-H "Authorization: Basic $RESELLER_AUTH"bash
응답
{
"app_id": "65a1c0ab8f1b5b00367a0010",
"list": [
{
"payment_resource_id": "65a1c0ab8f1b5b00367a0015",
"pg_id": "6098a1b2c3d4e5f600000101",
"pg_name": "나이스페이먼츠",
"pg_alias": "nicepay",
"method_id": "6098a1b2c3d4e5f600000201",
"method_name": "카드",
"method_alias": "card",
"resource_mode": null,
"sandbox_mode": false,
"easypay": false,
"updated_at": "2026-10-27T10:00:00+09:00",
"status": 1,
"resource": {
"mid": "nicep*****",
"mkey": "EYzu8*****"
},
"cert_expire_at": null
}
],
"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 |
필수 |
프로젝트 식별자 |
list |
Array |
필수 |
결제수단 목록 |
payment_resource_id |
String |
필수 |
프로젝트에 붙은 결제수단 식별자 |
pg_id / pg_name / pg_alias |
String |
필수 |
PG 식별자·이름·심볼 |
method_id / method_name / method_alias |
String |
필수 |
결제수단 식별자·이름·심볼 |
resource_mode |
String |
선택 |
PG 연동 방식(일부 PG 만) |
sandbox_mode |
Boolean |
필수 |
테스트 모드 여부 |
easypay |
Boolean |
필수 |
간편결제 여부 |
updated_at |
String |
선택 |
마지막 변경 시각 |
status |
Number |
필수 |
1 켜짐, 0 꺼짐 |
resource |
Object |
필수 |
연동 값. 키는 그대로, 값은 가린 값. 빈 값은 빈 값 그대로 |
cert_expire_at |
String |
선택 |
인증서 만료 시각. 인증서가 없으면 null |
payment_setting_lock |
Object |
필수 |
결제 설정 잠금 상태 |
seller_locked |
Boolean |
필수 |
가맹점이 자기 화면에서 켠 잠금 |
seller_changed_at |
String |
선택 |
가맹점 잠금을 마지막으로 바꾼 시각 |
reseller_locked |
Boolean |
필수 |
리셀러 잠금. 켜져 있으면 가맹점이 결제수단·테스트 모드·연동 값을 못 바꾼다 |
reseller_changed_at |
String |
선택 |
리셀러 잠금을 마지막으로 바꾼 시각 |
에러 코드
| 코드 |
메시지 |
대처 방법 |
API_ONLY_RESELLER (601) |
리셀러만 이용이 가능한 API 다 |
리셀러 권한 계정 키로 호출한다 |
API_SCOPE_INVALID |
허용되지 않은 API 권한의 키다 (HTTP 401) |
키에 이 API 의 리셀러 스코프 를 주거나 전체 권한(supervisor) 키로 호출한다 |
APP_NOT_FOUND (200) |
프로젝트를 찾지 못했다 (HTTP 404) |
app_id 가 올바른지 확인한다 |
APP_NOT_PERMIT (201) |
본인 하위 프로젝트가 아니다 (HTTP 401) |
app_id 가 본인 리셀러 하위 셀러의 프로젝트인지 확인한다 |