샌드박스에서 라이브로 전환하기
라이브 전환 조건 5개와 실결제를 열기까지의 절차
PG는 샌드박스 모드로 시작합니다. 결제·환불을 샌드박스에서 확인한 뒤 PG별로 라이브로 전환합니다.
샌드박스 결제는 돈이 오가지 않고 주문에 테스트 결제가 붙습니다.
준비
- 소유자 권한
- PG와 맺은 계약과 테스트 키·라이브 키
- 결제 설정에서 연결한 PG
상점 플랫폼에서 설정 › 결제로 이동합니다(소유자만).
- 전환할 PG 카드의 **[상세]**를 누릅니다.
- 라이브 전환 카드에서 조건과 할 일을 봅니다.
전환 조건
PG마다 다섯 조건을 모두 채워야 합니다. 라이브 전환 카드에 라이브 전환 조건 n/5 충족과 조건별 할 일이 보입니다.
| 조건 | 채우는 방법 |
|---|---|
| 테스트 키 연결 테스트 | 지금 등록된 테스트 키로 연결 테스트 성공 |
| 샌드박스 결제 | 지금 등록된 테스트 키로 결제해 주문까지 만든 결제 1건 |
| 샌드박스 환불 | 그 결제의 환불 1건. 부분 취소도 인정 |
| 라이브 키 연결 테스트 | 지금 등록된 라이브 키로 연결 테스트 성공 |
| 플랫폼 실결제 허용 | 플랫폼이 허용해야 함. 셀러가 할 일 없음 |
키를 바꾸면 그 키의 연결 테스트 결과가 지워집니다. 테스트 키의 가맹점을 바꾸면 샌드박스 결제·환불도 다시 해야 합니다.
절차
- PG와 계약하고 테스트 키·라이브 키를 받습니다. 토스페이먼츠는 API 개별 연동 키를 받습니다.
- 테스트 키를 등록하고 연결 테스트한 뒤 결제에 사용을 켭니다. 결제 설정 참고.
- **[상점 열기]**로 내 상점에서 주문·결제를 1건 합니다. 결제 연동은 결제 연동 참고.
- **[테스트 결제 주문 보기]**로 그 주문을 열고 **[판매자 취소]**를 합니다. 구매자 취소 요청 승인도 인정됩니다.
- 라이브 키 카드에서 키를 등록하고 **[연결 테스트]**를 누릅니다.
- 다섯 조건이 채워지면 **[라이브로 전환]**을 누릅니다. 새 결제부터 실결제입니다.
샌드박스 모드 스위치를 꺼도 이 카드로 이동할 뿐 바로 전환되지 않습니다. 전환하면 PG 카드의 환경 배지가 라이브가 됩니다.
전환 전에 결제 도메인 등록을 권장합니다(조건은 아님).
전환한 뒤
상점 결제는 한 환경만 씁니다. 전환하면 샌드박스인 다른 PG는 결제 제외가 됩니다. 함께 쓰려면 그 PG도 전환하십시오.
- 라이브 결제 중에 라이브 키를 수정하면 저장 전에 연결 테스트를 하고, 실패하면 저장하지 않습니다.
- 샌드박스 모드는 언제든 다시 켤 수 있습니다. 다시 끌 때 조건을 다시 보고, 그사이 키를 바꾸지 않았으면 채운 조건이 유지됩니다.
테스트 결제 주문
샌드박스 주문도 재고 차감, 발송·구매확정·클레임, 웹훅이 실주문과 같습니다. 다른 점은 다음뿐입니다.
- 상점 플랫폼 주문에
테스트 결제배지가 붙고, API 주문 응답과 웹훅data에testPayment: true가 들어갑니다. - 구매자가 리뷰를 쓸 수 없습니다.
- 매출 리포트 기본 조회에서 빠집니다. 결제 구분으로 포함할 수 있습니다.
테스트 결제 주문은 삭제할 수 없습니다. 발송하지 않을 주문은 판매자 취소로 정리하십시오.
API
전환 조건은 GET /store/payment-settings 응답의 PG마다 liveGate에 있습니다.
{
"status": "LOCKED",
"conditions": [
{ "code": "TEST_CONNECTION", "met": true, "message": "테스트 키 연결 테스트에 성공했습니다" },
{ "code": "SANDBOX_PAYMENT", "met": false, "message": "지금 등록된 테스트 키로 샌드박스 결제를 1건 해주십시오" },
{ "code": "SANDBOX_REFUND", "met": false, "message": "샌드박스 결제한 주문을 취소해 환불을 1건 확인해주십시오" },
{ "code": "LIVE_CONNECTION", "met": false, "message": "라이브 키를 먼저 등록해주십시오" },
{ "code": "PLATFORM_LIVE_ENABLED", "met": true, "message": "실결제를 열 수 있습니다" }
],
"openedAt": null
}status가 OPEN이면 전환할 수 있습니다. message는 바뀔 수 있으니 분기는 code·met로 하십시오. openedAt은 마지막 전환 시각입니다.
전환은 PATCH /store/payment-providers/{provider}에 { "sandboxMode": false }입니다. 조건이 모자라면 409 LIVE_GATE_NOT_MET,
플랫폼 허용만 모자라면 409 LIVE_PAYMENTS_DISABLED이고 error.details.conditions에 위 형태가 담깁니다.
{ "sandboxMode": true }는 조건 없이 적용됩니다. Store SDK는 paymentSettings.setSandboxMode(provider, false)이고,
거부 사유는 liveGateErrorDetailsSchema로 ApiError.details를 읽습니다.