← 질문 목록
#341깊이 0
남의 서버에 일이 생긴 것을 어떻게 아는가?
계속 물어보지 않고 상대가 알려 주게 한다. 받을 주소를 미리 등록해 둔다.
- 1. 내 서버에서 결제사로: 이 주소로 알려 달라고 등록한다
- 2. 결제사에서 내 서버로: 결제가 끝났다
- 3. 내 서버에서 결제사로: 받았다고 바로 답한다
답이 늦거나 없을 때 다시 보낼지는 상대의 정책에 달렸다. 다시 보내는 곳이 많으므로 같은 알림이 두 번 와도 결과가 같아야 한다.
알림에 고유한 값이 붙어 오면 그것으로 이미 처리했는지 본다. 안 붙는 곳이면 내용에서 겹치지 않을 열쇠를 정해 둔다.
그 주소는 누구나 부를 수 있다. 상대가 서명을 붙여 보내면 그것을 확인해 진짜인지 가린다. 확인 없이 믿으면 남이 결제 성공을 지어낼 수 있다.
받자마자 답하는 것이 좋다. 무거운 일을 그 자리에서 하면 상대의 제한 시간을 넘겨 다시 보내게 만든다. 큐에 넣고 먼저 답한다.
웹훅을 못 받은 구간을 다시 맞추는 경로가 필요하다. 우리 서버가 꺼져 있던 동안의 알림은 상대의 재시도 정책에 달렸고, 그것으로 안 되면 따로 조회해 맞춰야 한다.