정부 포털용 WooCommerce 결제 게이트웨이를 구축했습니다 — AI가 어떻게 가능하게 했는지 소개합니다
요약
정부 포털용 커스텀 WooCommerce 결제 게이트웨이를 구축하며 Claude와 ChatGPT를 활용한 사례를 소개합니다. AI가 보일러플레이트 생성과 디버깅에는 효과적이었으나, 비표준 API 콜백 처리와 같은 복잡한 엔지니어링 영역에서는 한계가 있음을 보여줍니다.
핵심 포인트
- Claude를 활용해 WooCommerce 결제 게이트웨이의 기본 클래스 구조를 빠르게 생성
- ChatGPT를 통해 PHP 로직 오류 및 누락된 함수 호출을 효율적으로 디버깅
- 비표준 API 및 결제 콜백 처리는 AI보다 엔지니어의 직접적인 검증이 필수적
- 결제 데이터 처리 시 서버 측 트랜잭션 검증의 중요성 강조
서론 (Intro)
대부분의 WooCommerce 결제 게이트웨이(payment gateway) 튜토리얼은 Stripe나 Razorpay를 사용합니다. 이들은 문서화가 잘 되어 있고, SDK와 커뮤니티 지원이 어디에나 존재합니다. 하지만 제 프로젝트는 달랐습니다. 저는 정부 포털을 위한 커스텀 게이트웨이를 구축해야 했습니다. 문서화는 부족했고, 비표준 콜백(callback) 동작을 보였으며, Stack Overflow에 답변도 전혀 없었습니다.
이를 해결할 수 있었던 것은 4년 이상의 PHP/WordPress 경험과 두 가지 AI 도구인 Claude 및 ChatGPT의 조합이었습니다. 이 글에서는 제가 정확히 무엇을 구축했는지, AI가 진정으로 도움이 된 부분은 어디인지, 그리고 AI가 저를 실망시킨 부분은 어디인지 자세히 설명하겠습니다.
문제 (The problem)
클라이언트는 PSU의 정부 결제 인프라를 통해 결제를 수락해야 했습니다. 포털 콜백, 엄격한 서버 측 검증(server-side verification), 그리고 현대적인 결제 SDK와는 전혀 다르게 동작하는 API를 고려해야 했습니다. WooCommerce는 이에 대한 공식 지원이 없습니다. 기존 플러그인도 없었습니다. 저는 처음부터 직접 구축해야 했습니다.
요구 사항은 다음과 같았습니다:
- 결제 시 고객을 PSU 결제 포털로 리다이렉트(Redirect)
- PSU 서버로부터의 결제 콜백(성공/실패) 처리
- 주문 상태를 업데이트하기 전 서버 측에서 트랜잭션(transaction) 검증
- 이메일 확인 전송
- API 자격 증명을 위한 관리자 설정 패널
AI 활용 방식 — 그리고 활용하지 않은 방식 (How I used AI — and how I didn't)
저는 이 프로젝트 전반에 걸쳐 Claude와 ChatGPT를 모두 사용했습니다. 솔직한 분석은 다음과 같습니다.
보일러플레이트(Boilerplate) 및 아키텍처 (Boilerplate & architecture)
저는 Claude에게 WooCommerce 결제 게이트웨이 클래스 구조의 스캐폴딩(scaffold)을 요청했습니다. Claude는 WC_Payment_Gateway를 올바르게 확장한 깔끔한 시작점을 제공했습니다. 이는 제가 문서를 보고 직접 조립했다면 30분은 걸렸을 작업입니다.
PHP 로직 디버깅 (Debugging PHP logic)
잘못된 훅 우선순위(hook priority)나 주문 상태 미업데이트와 같은 로직 오류가 발생할 때마다, 관련 함수를 ChatGPT에 붙여넣었습니다. ChatGPT는 제가 2시간 동안 간과했던 wc_reduce_stock_levels() 호출 누락을 잡아냈습니다.
AI가 실패한 지점: 결제 콜백 (payment callbacks)
이 부분에서는 저 자신의 경험에 의존해야 했습니다. BSNL의 콜백은 표준 패턴을 따르지 않았습니다. 어떤 AI 도구도 이 API를 이전에 본 적이 없었습니다. 그들은 저에게 일반적인 답변만을 제공했습니다. 저는 포털의 PDF 문서를 한 줄씩 읽고, 실제 트랜잭션으로 테스트하며, 원시 POST 데이터 (raw POST data)를 직접 디버깅해야 했습니다. AI는 저를 60% 지점까지 데려다주었습니다. 나머지 40%는 순수한 엔지니어링이었습니다.
코드 스니펫 - 콜백 핸들러 (The callback handler)
다음은 결제 콜백 로직의 단순화된 버전입니다. 핵심 통찰은 이것입니다: 콜백 데이터를 신뢰하기 전에 항상 서버 측 (server-side)에서 트랜잭션을 검증하십시오.
public function payment_callback() {
$order_id = sanitize_text_field( $_POST['order_id'] ?? '' );
$txn_id = sanitize_text_field( $_POST['txn_id'] ?? '' );
...
verify_transaction() 메서드는 결제를 확인하기 위해 BSNL에 별도의 서버 대 서버 (server-to-server) API 호출을 수행합니다. 이것이 대부분의 튜토리얼이 생략하는 결정적인 단계입니다.
배운 점
- AI 도구는 스캐폴딩 (scaffolding) 및 보일러플레이트 (boilerplate) 작성에 탁월합니다. 이를 위해 AI를 공격적으로 사용하십시오.
- 문서화되지 않았거나 니치 (niche)한 API의 경우, AI는 환각 (hallucinate)을 일으킵니다. 항상 공식 문서를 통해 검증하십시오.
- 결제는 항상 서버 측에서 검증하십시오. 클라이언트 측 데이터나 콜백 데이터만으로는 절대 신뢰하지 마십시오.
- 정부 포털은 종종 특이한 동작을 보입니다. 개발 중에는 모든 것을 로그 (log)로 남기십시오.
- Claude는 아키텍처 결정에 더 뛰어났습니다. ChatGPT는 빠른 디버깅 스니펫 작성에 더 빨랐습니다.
맺음말
이것은 제가 출시한 플러그인 중 가장 도전적인 작업 중 하나였습니다. 코드가 복잡해서가 아니라 외부 시스템이 예측 불가능했기 때문입니다. AI는 저의 개발 시간을 크게 단축해 주었지만, 실제 작업은 여전히 저의 몫이었습니다. 문서를 읽고, 엣지 케이스 (edge cases)를 테스트하며, 모든 것을 연결할 수 있을 만큼 WooCommerce의 주문 생명주기 (order lifecycle)를 깊이 이해하는 작업 말입니다.
정부 포털이든 아니든, 커스텀 결제 게이트웨이를 구축하고 계신다면 댓글로 질문해 주세요. 기꺼이 답변해 드리겠습니다.
GitHub: github.com/singhdigvijay99
Portfolio: singhdigvijay99.github.io/portfolio
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기