인공지능 에이전트의 멱등성 키가 이중 결제를 막지 못한 이유
운영 중인 가 같은 고객에게 두 번 결제했습니다. 첫 결제는 정상 처리됐지만, 약 1초 뒤 에 완료 기록을 남기기 전에 실행 중이던 프로그램이 멈췄습니다.
재시작한 에이전트는 완료 기록이 없자 결제가 아직 처리되지 않았다고 판단해 다시 요청했습니다. 도 저장되지 않은 같은 기록 안에서 새로 만들도록 설계되어 있어, 때 이전 키를 재사용하지 못했습니다.
결제 작업의 고정된 정보로 항상 같은 키를 만들었다면 결제사가 두 요청을 같은 작업으로 알아볼 수 있었습니다. 안전한 순서는 와 고정된 키를 에 먼저 저장한 뒤 결제를 실행하고, 모든 에서 그 키를 다시 사용하는 것입니다.
핵심 포인트
- 첫 결제 성공 후 약 1초 안에 프로그램이 멈춰 완료 기록이 남지 않았습니다.
- 에이전트는 재시작 후 결제가 끝나지 않았다고 판단해 같은 고객에게 다시 청구했습니다.
- 를 저장할 기록 자체가 없었기 때문에 에서 새 키가 사용됐습니다.
- 결제 작업에서 항상 같은 키를 만들면 결제사가 중복 요청을 구별할 수 있습니다.
- 결제를 실행하기 전에 와 키를 먼저 확실히 저장해야 합니다.