데브포일 홈
DEV MODE - 실서버 영향 없음 📦 배포 관리
토스페이먼츠 연동 (국내 결제)
+250 XP
LEVEL 56 QUEST

토스페이먼츠 연동 (국내 결제)

토스페이먼츠 결제 위젯부터 PHP 백엔드 승인 처리까지, 실제 결제 시스템을 완전히 구현합니다.

토스페이먼츠 개발자 등록 & API 키 발급

개발자센터 등록

토스페이먼츠 개발자센터에서 회원가입 후, 테스트용 API 키를 즉시 발급받을 수 있습니다. 실서비스 API 키는 가맹점 심사 통과 후 발급됩니다.

// config/payment.php - 결제 설정 파일 <?php return [ 'toss' => [ // 테스트 키 (개발 중 사용) 'client_key' => 'test_ck_D5GePWvyJnrK0W0k6q8gLzN97Eoq', 'secret_key' => 'test_sk_zXLkKEypNArWmo50nX3lmeaxYG5R', // 라이브 키 (심사 통과 후) // 'client_key' => 'live_ck_...', // 'secret_key' => 'live_sk_...', 'api_url' => 'https://api.tosspayments.com/v1', 'success_url' => 'https://mysite.com/payment/success', 'fail_url' => 'https://mysite.com/payment/fail', ] ];
API 키 보안 주의
- Client Key: 프론트엔드(JavaScript)에서 사용. 공개 가능.
- Secret Key: 백엔드(PHP)에서만 사용. 절대 노출 금지!
- .env 파일이나 환경변수에 저장하고 Git에 커밋하지 마세요.

payments 테이블 설계

-- 결제 정보를 저장하는 테이블 CREATE TABLE payments ( id INT AUTO_INCREMENT PRIMARY KEY, order_id VARCHAR(64) NOT NULL UNIQUE, -- 주문번호 (우리가 생성) payment_key VARCHAR(200) NULL, -- 토스 결제 키 user_id INT NOT NULL, -- 결제한 사용자 plan_id INT NOT NULL, -- 구매한 플랜 amount INT NOT NULL, -- 결제 금액 (원) currency VARCHAR(3) DEFAULT 'KRW', -- 통화 status ENUM('pending', 'approved', 'failed', 'cancelled', 'refunded') DEFAULT 'pending', method VARCHAR(20) NULL, -- 카드, 가상계좌, 간편결제 등 card_company VARCHAR(20) NULL, -- 카드사 이름 card_number VARCHAR(20) NULL, -- 마스킹된 카드번호 receipt_url VARCHAR(500) NULL, -- 영수증 URL approved_at DATETIME NULL, -- 승인 일시 failed_reason VARCHAR(200) NULL, -- 실패 사유 created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_user (user_id), INDEX idx_status (status), INDEX idx_created (created_at) );
order_id (주문번호) 우리 시스템에서 생성하는 고유 주문번호. 결제 요청 시 토스에 전달합니다. 형식 예: "ORD-20260307-ABC123"
payment_key (결제 키) 토스페이먼츠가 발급하는 결제 고유 식별자. 승인, 취소, 환불 시 이 키를 사용합니다.
🔒
여기까지는 미리보기입니다
토스페이먼츠 연동 (국내 결제)
무료 가입하면 이어서 볼 수 있고, 강의를 완료할 때마다 XP와 레벨이 쌓입니다.
Google로 3초 만에 시작 →🧵 Threads로 시작무료 공개 강의 둘러보기 (Lv.1~3)