POPBill Developers
가이드

Webhook 개요

Webhook을 적용하여 팝빌에서 발생하는 상태 변경 이벤트를 프로그램사 공급사가 설정한 콜백 URL로 실시간 POST 요청을 전달합니다. API 호출없이 이벤트 시점에 자동으로 상태 확인이 가능하여 불필요한 리소스 낭비를 줄이고, 보다 효율적인 시스템 연동과 운영이 가능합니다.

팝빌 웹훅 프로세스

개발 가이드

팝빌 Webhook 메시지 수신을 Django 프레임워크를 통해 구현한 View 함수 예제코드입니다.
수신 URL에 대한 Django URL 매핑 설정은 연동사 환경에 따라 상이할 수 있습니다.
Webhook 이벤트 메시지의 추가적인 항목은 하단의 [Webhook 메시지 구성]을 참조하시기 바랍니다.

import json

from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from config import settings

@csrf_exempt
def connect(request):

    received_json_data = json.loads(request.body.decode("utf-8"))

    print(received_json_data['eventDT']) # 이벤트 실행일시
    print(received_json_data['eventType']) # 이벤트 유형

    # 추가적인 항목은 [Webhook 메시지 구성] 참조

    # Response 성공 처리.
    return JsonResponse({
        'result' : 'OK'
    })

응답결과

프로그램 공급사는 Webhook 수신 후 "성공" 응답결과를 반환해야만 팝빌에서 완료 처리가 가능합니다. 응답결과를 반환하지 않은 경우 팝빌은 Webhook 수신이 실패된 것으로 간주하여 Retry를 실행하기 때문에, 프로그램 공급사는 중복 데이터를 수신하지 않도록 예외처리 하여야 합니다.

성공

Response Body를 String 또는 JSON 타입 중 선택하여 아래와 같이 반환합니다.

유형 String 타입 JSON 타입
Response Body "OK" {"result":"OK"}

실패 및 재시도

응답결과 미반환, Response Body 형식 불일치, HTTP 통신 오류 등의 사유로 Webhook 수신 실패가 발생합니다. 실패 건은 팝빌 운영 정책에 의하여 자동으로 총 3회 재실행됩니다.

  1. 1) 팝빌은 실패한 Webhook Event에 대하여 5분 간격으로 3회 재실행 합니다.
  2. 2) 최종 실패된 Webhook은 팝빌 전담인력이 모니터링하여 프로그램 공급사에 다양한 채널(유선,메일)로 안내합니다.
  3. 3) 프로그램 공급사는 조치 이후 팝빌 사이트에서 재실행하여 Webhook 수신을 완료합니다. [팝빌 Webhook 실행내역]