토스쇼핑 Open API 개발기 6편 – 상품 데이터를 WordPress DB에 저장하기

토스쇼핑 Open API 개발기 6편에서는 지금까지 조회 테스트에 그쳤던 상품 데이터를 WordPress DB에 실제로 저장하고, 동일 상품을 다시 조회했을 때 중복 레코드 없이 기존 데이터가 UPDATE되는지를 검증했다. 플러그인은 v1.3.0에서 v1.4.0으로 확장되었고, tacaItemId를 기준으로 신규 저장과 업데이트가 분기되는 구조가 실제 서버에서 정상 동작했다.

지금까지의 개발 과정과 이번 6편의 위치

토스쇼핑 Open API 연동 개발기는 1편에서 API 사용 승인과 키 발급 과정을 다룬 뒤, 2편에서 발급받은 인증 정보로 OAuth 인증과 Health API 연결을 테스트하는 순서로 진행됐다. 기본적인 연결이 확인된 이후 3편에서는 베스트 상품 목록 API로 실제 토스쇼핑 상품을 조회했고, 4편에서는 3편에서 확보한 tacaItemId를 이용해 상품 상세 정보를 조회했다. 그다음 5편에서는 상품을 조회하는 것에서 한 단계 나아가 실제 쉐어링크 발급까지 테스트를 마쳤다.

이번 6편은 이렇게 확보한 상품 정보를 실제 WordPress DB에 저장하고, 같은 상품을 반복 조회했을 때 데이터가 어떻게 관리되는지를 검증하는 단계다. 상품 추천이나 홍보 목적의 글이 아니라, 실제 개발 과정과 테스트 결과를 기록하는 DevLog이며, 아직 구현하지 않은 기능은 완성된 것처럼 표현하지 않는다.

WordPress DB 저장 기능 추가

기존 v1.3.0 플러그인을 확장해 v1.4.0을 만들었다. v1.4.0에서 새로 추가된 첫 번째 기능은 토스쇼핑 베스트 상품 1건을 조회한 뒤, 그 결과를 WordPress DB에 저장하는 기능이다. 이번 단계에서는 상품 데이터를 저장하기 위한 전용 WordPress DB 테이블을 추가했으며, 이 테이블의 목적은 API에서 조회한 상품 정보를 장기적으로 관리하고 재사용할 수 있도록 하는 것이다.

저장되는 주요 데이터 항목

  • tacaItemId, tacaId
  • 상품명, 판매가, 정가, 할인율
  • 품절 여부, 평점, 리뷰 수
  • 썸네일 URL, 상품 URL, 카테고리 정보
  • 최초 확인 시각, 마지막 확인 시각

첫 번째 저장 테스트

테스트 대상 상품은 이전 편에서도 다뤘던 스파클 생수, 무라벨, 2L, 24개(tacaItemId 90382271)다. 이 상품을 조회한 뒤 저장 기능을 처음 실행한 결과는 다음과 같다.

항목결과
처리 결과저장 성공 — 신규 저장(INSERT)
DB ID1
tacaItemId90382271
API HTTP Status200
API resultTypeSUCCESS
최초 확인 시각2026-09-26 11:26:07
마지막 확인 시각2026-09-26 11:26:07

두 번째 저장 테스트

같은 상품에 대해 저장 기능을 다시 실행했다. 새로운 레코드가 생성되는지, 아니면 기존 레코드가 갱신되는지가 이번 테스트의 핵심이었다.

항목결과
처리 결과저장 성공 — 기존 상품 업데이트(UPDATE)
DB ID1 (변화 없음)
tacaItemId90382271
API HTTP Status200
API resultTypeSUCCESS
최초 확인 시각2026-09-26 11:26:07 (변화 없음)
마지막 확인 시각2026-09-26 11:27:00 (갱신됨)

INSERT와 UPDATE가 어떻게 구분되는가

이번 단계의 핵심은 tacaItemId를 기준으로 상품을 식별하는 구조다. 개념적으로 정리하면 다음과 같다.

토스쇼핑 상품 조회 → tacaItemId 확인 → DB에서 동일 tacaItemId 검색 → 없으면 신규 INSERT, 있으면 기존 데이터 UPDATE

이를 데이터 처리 로직 개념으로 단순화하면 다음과 같은 흐름이다.

if tacaItemId exists in DB:
    update existing product record
else:
    insert new product record

실제 테스트에서는 tacaItemId 90382271에 대해 첫 호출은 신규 저장, 두 번째 호출은 기존 상품 업데이트로 정상 분기되었다. DB ID는 1에서 1로 그대로 유지됐고, 최초 확인 시각도 변하지 않았다. 반면 마지막 확인 시각만 11:26:07에서 11:27:00으로 갱신됐다. 즉, 같은 상품을 반복 조회해도 중복 데이터가 쌓이지 않고 기존 레코드가 갱신되는 구조가 정상적으로 동작함을 확인했다.

이번 단계에서 아직 하지 않은 것

이번 6편에서 검증한 것은 단일 상품 1건에 대한 저장 및 업데이트 동작뿐이다. 다음 기능들은 아직 구현되지 않았으며, 현재 동작하는 기능처럼 표현하지 않는다.

  • 상품 상세 API 결과를 DB 저장과 연결하는 기능
  • 여러 상품을 한꺼번에 상세 조회하는 기능
  • 상품 선별 점수 자동 계산 및 AI 기반 자동 선별
  • 쉐어링크 자동 발급 workflow 전체 연결, 발급된 쉐어링크 자동 재사용
  • 성과 데이터 자동 수집, Jukebox 자동 게시, SNS 콘텐츠 자동 생성
  • 여러 상품에 대한 완전한 자동 처리

다음 개발 방향

현재까지는 상품 조회 → DB 저장까지 완료한 상태다. 다음 단계에서는 저장된 상품을 대상으로 상품 상세 API를 조회해 DB 정보를 보강하고 갱신하는 구조를 추가할 예정이다. 그 이후에는 상품 수집 → 상세 정보 보강 → 상품 선별 → 쉐어링크 발급 및 재사용 → 결과 관리 형태로 단계적으로 확장할 계획이다.

자주 묻는 질문

같은 상품을 여러 번 조회하면 DB에 중복 데이터가 쌓이나요?

아니다. tacaItemId를 기준으로 기존 레코드가 있는지 먼저 확인하기 때문에, 동일 상품을 다시 조회해도 새 레코드가 생성되지 않고 기존 레코드(DB ID 1)의 정보만 갱신된다.

이번 단계에서 상품 상세 정보 보강까지 자동으로 이루어지나요?

아니다. 이번 6편에서 검증한 것은 조회한 상품 1건을 저장하고 업데이트하는 기본 구조뿐이며, 상품 상세 API와 DB 저장을 연결하는 작업은 다음 단계에서 진행할 예정이다.

이번 테스트에서 여러 상품을 동시에 처리했나요?

아니다. 이번 테스트는 tacaItemId 90382271 단일 상품에 대해서만 진행됐으며, 여러 상품을 일괄 처리하는 기능은 아직 구현되지 않았다.

댓글 남기기