PG 사용 여부·샌드박스 스위치·간편결제 변경
PG를 켜거나 끄고(`enabled`), 샌드박스 스위치(`sandboxMode`)와 이 PG로 받는 간편결제사(`easyPayProviders`)를 바꾼다. 셋 중 하나 이상을 보낸다. 켠 간편결제사마다 스토어프론트 결제 옵션이 생긴다. 끈 PG는 새 결제에 쓰이지 않지만, 이미 그 PG로 승인된 결제의 취소·환불은 계속 그 PG로 처리된다. `sandboxMode: false`(라이브 전환)는 `liveGate.conditions`를 모두 충족해야 한다 — 테스트 키 연결 테스트 성공, 지금 테스트 키로 샌드박스 결제 1건 승인, 그 결제의 환불 1건 성공, 라이브 키 연결 테스트 성공, 플랫폼 실결제 허용. `sandboxMode: true`는 언제든 허용되고 바로 실결제가 멈춘다. 사용 중인 PG 중 하나라도 라이브면 구매자 결제는 라이브 PG로만 진행되고 샌드박스 PG는 쓰이지 않는다. 콘솔에 로그인한 **OWNER 전용**이다. ADMIN·STAFF, API 토큰(PAT), M2M 클라이언트, 3rd-party 앱이 위임받은 토큰은 스코프가 있어도 `403 INSUFFICIENT_ROLE`이다.
PG를 켜거나 끄고(enabled), 샌드박스 스위치(sandboxMode)와 이 PG로 받는 간편결제사(easyPayProviders)를 바꾼다. 셋 중 하나 이상을 보낸다. 켠 간편결제사마다 스토어프론트 결제 옵션이 생긴다. 끈 PG는 새 결제에 쓰이지 않지만, 이미 그 PG로 승인된 결제의 취소·환불은 계속 그 PG로 처리된다. sandboxMode: false(라이브 전환)는 liveGate.conditions를 모두 충족해야 한다 — 테스트 키 연결 테스트 성공, 지금 테스트 키로 샌드박스 결제 1건 승인, 그 결제의 환불 1건 성공, 라이브 키 연결 테스트 성공, 플랫폼 실결제 허용. sandboxMode: true는 언제든 허용되고 바로 실결제가 멈춘다. 사용 중인 PG 중 하나라도 라이브면 구매자 결제는 라이브 PG로만 진행되고 샌드박스 PG는 쓰이지 않는다. 콘솔에 로그인한 OWNER 전용이다. ADMIN·STAFF, API 토큰(PAT), M2M 클라이언트, 3rd-party 앱이 위임받은 토큰은 스코프가 있어도 403 INSUFFICIENT_ROLE이다.
Authorization
bearer userToken(계정 스코프) 또는 storeToken(스토어 스코프)
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
사용 여부. 켜려면 활성 환경(샌드박스면 TEST, 아니면 LIVE) 자격 증명이 모두 저장돼 있어야 한다(PAYMENT_PROVIDER_INCOMPLETE)
샌드박스 스위치. true면 새 결제에 TEST 세트를 쓴다(항상 허용). false(라이브 전환)는 라이브 개방 조건을 모두 충족해야 한다(LIVE_GATE_NOT_MET)
이 PG로 받는 간편결제사 — 통째로 바꾼다. PG 계약(포트원은 채널)에 추가한 간편결제만 켠다. 켠 간편결제사마다 스토어프론트 결제 옵션이 하나씩 생긴다(포트원은 간편결제를 받는 채널이 있어야 한다)
items <= 4Response Body
application/json
curl -X PATCH "https://example.com/v1/store/payment-providers/string" \ -H "Content-Type: application/json" \ -d '{}'{ "meta": { "status": 200, "code": "OK", "message": "OK", "isSuccess": true }, "data": { "provider": "tosspayments", "displayName": "string", "connected": true, "enabled": true, "priority": 0, "environment": "TEST", "publicConfig": { "clientKey": "string" }, "secrets": [ { "field": "string", "configured": true, "masked": "string" } ], "lastVerification": { "result": "SUCCESS", "message": "string", "checkedAt": "string" }, "updatedAt": "string", "sandboxMode": true, "credentialSets": { "TEST": { "environment": "TEST", "publicConfig": { "clientKey": "string" }, "secrets": [ { "field": "string", "configured": true, "masked": "string" } ], "lastVerification": { "result": "SUCCESS", "message": "string", "checkedAt": "string" }, "updatedAt": "string" }, "LIVE": { "environment": "TEST", "publicConfig": { "clientKey": "string" }, "secrets": [ { "field": "string", "configured": true, "masked": "string" } ], "lastVerification": { "result": "SUCCESS", "message": "string", "checkedAt": "string" }, "updatedAt": "string" } }, "liveGate": { "status": "LOCKED", "conditions": [ { "code": "TEST_CONNECTION", "met": true, "message": "string" } ], "openedAt": "string" }, "easyPayProviders": [ "string" ], "retiredCredentialCount": 0, "routingExclusion": null }, "error": null}포트원 연결·수정 PUT
포트원(V2) Store ID·채널·API Secret을 저장한다. 채널은 결제수단별로 여러 개 등록할 수 있고, 결제수단마다 그 결제수단을 받는 첫 채널이 쓰인다. 결제 요청의 결제수단을 받는 채널이 없으면 그 결제에서 포트원은 준비 장애로 처리된다. PG마다 `TEST`(샌드박스)·`LIVE`(실결제) 자격 증명 세트를 따로 저장한다. 요청의 `environment`는 **저장할 세트**이고, 어느 세트로 결제할지는 샌드박스 스위치(`PATCH …/{provider}`의 `sandboxMode`)가 정한다. 같은 가맹점(토스 클라이언트 키·포트원 Store ID)이면 그 세트를 갱신하고, 가맹점이 바뀌면 이전 세트를 **보관**한 뒤 새 세트를 만든다 (예전에 보관한 같은 가맹점 세트가 있으면 새로 만들지 않고 그 세트를 다시 쓴다). 보관된 세트는 새 결제에 쓰이지 않지만, 그 가맹점으로 이미 받은 결제의 취소·환불과 결제 확인에는 계속 쓰인다. 실결제 중(샌드박스 꺼짐)인 PG의 LIVE 세트를 저장하면 가맹점이 같아도 저장 전에 연결 테스트를 한다. 처음 연결하면 사용 중지·샌드박스 켜짐 상태로 만들어진다. 수정 시 `apiSecret`·`webhookSecret`을 생략하면 저장된 값을 유지한다. 콘솔에 로그인한 **OWNER 전용**이다. ADMIN·STAFF, API 토큰(PAT), M2M 클라이언트, 3rd-party 앱이 위임받은 토큰은 스코프가 있어도 `403 INSUFFICIENT_ROLE`이다.
PG 연결 해제 DELETE
PG 연결을 해제한다. 이 PG는 결제 설정에서 사라지고 새 결제에 쓰이지 않는다. 자격 증명은 삭제되지 않고 **보관**된다 — 이 PG로 이미 받은 결제의 취소·환불과 결제 확인은 보관된 자격 증명으로 계속 처리된다. 결제 이력이 있어도 해제할 수 있다. 콘솔에 로그인한 **OWNER 전용**이다. ADMIN·STAFF, API 토큰(PAT), M2M 클라이언트, 3rd-party 앱이 위임받은 토큰은 스코프가 있어도 `403 INSUFFICIENT_ROLE`이다.