1편에서 토스쇼핑 Open API 키를 발급받고, 2편에서 OAuth 인증과 Health API 연결을 확인하고, 3편에서 베스트 상품 조회에 성공했습니다. 이번 4편에서는 3편에서 확보한 상품 ID를 이용해 상품 상세 조회 API까지 실제로 연동하고 테스트에 성공한 과정을 기록합니다.
지난 개발기 요약
지금까지의 흐름은 다음과 같습니다.
- 1편 — 토스쇼핑 Open API 키 발급: API 사용 신청, 승인, 서버 출발지 IP 확인, API 키 발급까지 진행했습니다.
- 2편 — OAuth 및 Health API 연결 테스트: OAuth 토큰 발급에 성공하고, Health API 호출로 HTTP 200과
resultType: SUCCESS를 확인했습니다. - 3편 — 토스쇼핑 Open API 연동 테스트: 테스트 플러그인을 업데이트해 OAuth 인증과 Health 확인을 거친 뒤, 베스트 상품 API로 실제 상품 1건을 조회하고
tacaItemId와tacaId를 확보했습니다.
3편에서 확보한 상품 ID는 스파클 생수(무라벨, 2L, 24개) 상품의 tacaItemId 90382271이었습니다. 이번 4편은 이 ID를 그대로 이용해 상품 상세 조회까지 진행한 후속 개발기입니다.
1. 베스트 상품 조회 다음 단계
3편에서 베스트 상품 API는 “어떤 상품을 조회할 것인가”를 확인하는 단계였습니다. 상품 ID를 확보했다는 것은 곧 그 상품의 더 자세한 정보를 가져올 수 있는 열쇠를 손에 넣었다는 뜻이기도 합니다. 그래서 이번에는 확보한 tacaItemId를 이용해 개별 상품의 상세 데이터를 직접 조회해보기로 했습니다.
2. 기존 테스트 플러그인 1.2.0 업데이트
이번에도 새로운 플러그인을 따로 만들지 않고, 기존에 쓰던 테스트 플러그인 Jukebox – Toss Sharelink API Connection Test를 계속 확장하는 방식을 택했습니다. 지금까지 이 플러그인은 다음 흐름을 검증해왔습니다.
OAuth 인증 → Health 확인 → 베스트 상품 조회
여기에 상품 상세 조회 단계를 추가해 버전을 1.2.0으로 올렸습니다. 새 기능이 생길 때마다 별도 플러그인을 늘리지 않고, 하나의 테스트 플러그인이 단계적으로 커지고 있다는 점이 이 개발기 시리즈의 특징이기도 합니다.
OAuth 인증 → Health 확인 → 베스트 상품 조회 → 상품 상세 조회
3. 상품 상세 조회 API 연결
3편에서 확인한 tacaItemId 90382271을 파라미터로 넘겨 상품 상세 조회 API를 호출하도록 플러그인에 요청 로직을 추가했습니다. 요청과 응답의 핵심 구조만 간단히 정리하면 다음과 같습니다.
GET /product-detail?tacaItemId={tacaItemId}
Authorization: Bearer {OAuth Access Token}
Response
{
"resultType": "SUCCESS",
"data": {
"tacaItemId": "90382271",
"tacaId": "56199215",
"name": "...",
"salePrice": 7400,
"regularPrice": 20000,
"discountRate": 63,
"soldOut": false,
"rating": 4.8,
"reviewCount": 65445,
"thumbnailUrl": "...",
"mainImageUrls": ["..."],
"productUrl": "...",
"description": {
"detailImageUrls": ["..."],
"noticeImageUrl": "...",
"htmlUrl": ""
}
}
}
실제 API Key와 OAuth Access Token 값은 보안상 코드와 화면 어디에도 노출하지 않았습니다.
4. 상품 상세 조회 성공
테스트 결과 HTTP 상태 코드는 200, resultType은 SUCCESS로 정상 응답을 받았습니다.
플러그인 화면에서 상품 상세 조회 버튼을 눌렀을 때 성공 응답이 그대로 표시되는 것을 확인했고, 이 부분은 실제 스크린샷을 삽입하기 좋은 위치입니다.
5. 어떤 데이터를 가져올 수 있었나
이번 조회 대상은 3편과 동일한 상품인 스파클 생수(무라벨, 2L, 24개)였습니다. 실제로 반환된 상세 데이터를 정리하면 다음과 같습니다.
| 항목 | 값 |
|---|---|
| tacaItemId | 90382271 |
| tacaId | 56199215 |
| 상품명 | 스파클 생수, 무라벨, 2L, 24개 |
| 판매가 | 7,400원 |
| 정가 | 20,000원 |
| 할인율 | 63% |
| 품절 여부 | 판매 중 |
| 평점 | 4.8 |
| 리뷰 수 | 65,445건 |
평점과 리뷰 수는 API가 실제로 반환한 값을 그대로 기록한 것이며, 이 수치 자체를 상품의 품질이나 인기에 대한 판단 근거로 사용하지는 않았습니다.
6. 이미지 정보도 반환됐다
상품 상세 조회 응답에는 이미지 관련 필드도 함께 포함되어 있었습니다.
thumbnailUrl— 상품 썸네일 이미지mainImageUrls— 메인 이미지 목록productUrl— 상품 페이지 URLdescription.detailImageUrls— 상세 페이지 이미지 목록description.noticeImageUrl— 상품 고지 이미지
다만 이번 테스트에서 description.htmlUrl은 빈 값으로 반환되었습니다. 이 부분은 API가 상품마다 다르게 응답할 가능성이 있어 보이는데, 어떤 조건에서 값이 채워지는지는 아직 [확인 필요]한 상태입니다.
이 필드들은 이미지 URL을 API가 제공해준다는 사실만 확인된 것이고, 이미지 내용 자체를 API가 분석해서 텍스트로 알려주는 기능은 아닙니다.
7. Jukebox 자동화에 어떤 의미가 있을까
3편의 베스트 상품 조회는 “어떤 상품을 조회할 것인가”를 확인하는 단계였고, 이번 4편의 상품 상세 조회는 “선택한 상품에 어떤 상세 데이터가 있는가”를 확인하는 단계였습니다. 즉 이번 업데이트로 API 활용 흐름이 다음과 같이 한 단계 더 확장되었습니다.
상품 발견 → 상품 ID 확보 → 개별 상품 상세 정보 조회
이 흐름이 정상 동작한다는 것은 향후 Jukebox의 토스쇼핑 상품 콘텐츠 자동화에 활용할 수 있는 기반이 마련되었다는 뜻입니다. 다만 지금 시점에 실제로 완성된 것은 상품 상세 조회 API 테스트 성공까지이며, 상품 선별이나 콘텐츠 자동 생성 같은 다음 단계는 아직 구현되지 않았습니다.
8. 아직 남은 과제
현재 시점에서 구현되지 않은 부분을 명확히 정리해두겠습니다.
- 여러 상품을 한 번에 조회하는 일괄 조회 기능
- 상품 선별 자동화
- 상품 데이터를 Jukebox 선별 기준에 자동으로 전달하는 로직
- 상품 상세 데이터를 이용한 콘텐츠 자동 생성
- X / Threads / Facebook 콘텐츠 자동 생성
- WordPress 자동 발행
이 항목들은 앞으로 검토할 대상일 뿐, 지금 완성된 기능은 아닙니다.
마무리
1편에서 API 사용 기반을 만들고, 2편에서 OAuth와 연결 상태를 확인하고, 3편에서 실제 상품을 조회했습니다. 그리고 이번 4편에서는 3편에서 확인한 상품 ID를 이용해 상품 상세 정보까지 API로 가져오는 데 성공했습니다. 다음 개발기에서는 여러 상품을 다루는 방법이나 Jukebox 선별 기준과의 연동을 다뤄볼 예정입니다.