[샵바이] 웹훅(webhook) 가이드

샵바이에서 제공되는 다양한 웹훅 가이드를 안내 드립니다.

목차


이해하기

  • 웹훅(Webhook)이란 서버에서 특정 이벤트 발생했을 때 다른 서비스나 응용프로그램으로 알림을 보내는 기능입니다.

  • 이를 사용하면 특정 이벤트가 발생했을 때 지정한 callback URL로 관련 이벤트 정보를 수신할 수 있습니다.

  • 주기적으로 데이터를 조회하지 않고 원하는 이벤트에 대한 정보만 수신할 수 있어서 webhook은 리소스나 통신 측면에서 효율적입니다.

  • 어떠한 이벤트가 발생했을 때 정보를 수신할 수 있는지는 제공 이벤트 항목 내용을 참고해 주시기 바랍니다.

웹훅 이벤트는 앱이 설치된 쇼핑몰에서 발생하는 이벤트 정보를 수신할 수 있으며, 장애가 발생하여 발생한 이벤트에 대해 웹훅(Webhook)을 수신하지 못하는 경우 웹훅이 재 전송되지 않습니다. 단, 수신하지 못한 웹훅은 실패한 웹훅 조회하기 API로 조회할 수 있습니다.


웹훅(Webhook) 설정 방법

워크스페이스>셀러어드민에서 앱 등록/수정 시 개발 정보 탭에서 설정할 수 있습니다. 지원 가능한 method : POST / PUT

  1. 워크스페이스에 로그인하여 셀러어드민>상품>앱>[T]개발 정보 화면에 접속합니다.

  2. 사용할 웹훅(Webhook) 이벤트를 사용함으로 설정합니다.

  3. method 및 이벤트 발생 시 웹훅(Webhook)을 수신할 URL을 설정합니다.

  4. 설정된 내용을 [저장] 합니다.

웹훅 설정 이후 앱이 쇼핑몰에 설치되어야 이벤트 정보를 수신할 수 있습니다.

웹훅(Webhook)을 설정할 때는 관련된 server API의 권한이 있는 이벤트 항목만 사용할 수 있으며,

보유한 server API 권한을 삭제할 때는 관련 이벤트 항목의 웹훅(Webhook) 설정도 '사용 안 함'으로 설정해 주셔야 합니다.

판매앱의 정보를 변경하는 경우 심사 요청 후 심사가 승인되어야 변경된 정보가 반영됩니다.


제공 이벤트 항목


이벤트별 샘플 데이터와 코드 정의

1. 앱 관련

// 샘플 데이터 및 파라미터 정의
{
    "eventType": "CHANGE_APP_STATUS", // 이벤트명
    "currentStatus": "ACTIVE", // 앱상태
    "appNo": 12345, // 앱일련번호
    "mallNo": 12345, // 쇼핑몰번호
    "appInstalledNo": 12345, // 앱설치번호
}

2. 전시 관련

// 샘플 데이터 및 파라미터 정의
{
    "eventType": "PRODUCT_INQUIRY_ADDED", //이벤트명
    "mallNo": 12345, //쇼핑몰번호
    "inquiryNo" : 12345 //상품문의번호
}

3. 운영 관련

[적립금]

// 샘플 데이터 및 파라미터 정의
{
    "eventType": "ACCUMULATION_ADDED", //이벤트명
    "mallNo": 12345, //쇼핑몰번호
    "memberNo": 135375046, //회원번호
    "amount": 1000, //적립 또는 차감금액
    "accumulationReserveReason": "ADD_MANUAL", // 적립 또는 차감 사유
    "reasonDetail": "테스트 지급", // 상세
    "orderNo": null, //주문번호
    "orderOptionNo": "0", //주문옵션번호
    "registerAdminNo": 4099, //운영자번호
    "reviewNo": null //상품후기번호
}

[1:1문의]

// 샘플 데이터 및 파라미터 정의
{
        "eventType": "INQUIRY_ADDED", //이벤트명
        "mallNo": 12345, //쇼핑몰번호
        "memberNo": 12345, //회원번호
        "inquiryNo": 12345, //1:1문의 일련번호
        "inquiryTypeNo": 12345, //1:1문의 유형번호
        "orderNo": null, // 주문에 대한 문의인 경우 주문번호
        "productNo": null, //주문된 상품번호
        "answerSmsSendYn": true, //1:1문의 답변 등록 시 SMS수신여부
        "inquiryTitle": "타이틀", //1:1문의 제목
        "memberId": "12345@nhn-commerce.com"//회원이메일
}

4. 회원 관련

// 샘플 데이터 및 파라미터 정의
{
    "eventType": "MEMBER_CREATED", //이벤트명
    "mallNo": 12345, //쇼핑몰 번호
    "memberNo": 12345, //회원번호
    "memberId": "chulsu", //회원아이디(외부연동 ID로 가입 시 null)
    "memberName": "홍길동", //회원이름
    "email": "gildong@nhn-commerce.com", //회원이메일
    "providerType": "KAKAO", //외부연동 ID로 가입 시 외부연동 값 노출(KAKAO, PAYCO 등),
    "gradeNo": 12345, //등급번호(회원의 등급이 변경된 경우 변경된 등급의 등급번호)
    "nickName": "angel1004" //닉네임
}

5. 주문 관련

[주문 생성]

// 샘플 데이터 및 파라미터 정의
{
    "eventType": "CREATE_ORDER", //이벤트명
    "order": {
        "orderNo": "2021100201234567890", // 주문번호
        "mallNo": 30973, // 몰번호
        "serviceNo": 30388, // 서비스 번호
        "memberNo": 8411244, // 회원번호
        "memberYn": "Y", // 회원여부
        "ordererName": "홍길동", // 주문자명
        "ordererContact1": "010-1234-1234", // 주문자 핸드폰 번호
        "ordererContact2": "010-1234-1234", // 주문자 전화 번호
        "ordererEmail": "honggildong@naver.com", // 주문자 이메일
        "payType": "CREDIT_CARD", // PG타입(페이코/KCP 등)
        "pgType": "KCP", // 결제타입(페이코/신용카드 등)
        "platformType": "MOBILE_WEB", // 플렛폼 타입 (PC/MOBILE_WEB 등)
        "lastPayAmt": 185000.00, // 최종결제금액
        "lastSubPayAmt": 0.00, // 최종 적립금 결제금액
        "lastStandardAmt": 329000.00, // 최종상품금액(할인제외)
        "lastDeliveryAmt": 0.00, // 최종배송금액
        "lastRemoteDeliveryAmt": 0.00, // 최종지역별추가배송금액
        "lastImmediateDiscountAmt": 144000.00, // 최종즉시할인금액
        "lastAdditionalDiscountAmt": 0.00, // 최종추가할인금액
        "lastCartCouponDiscountAmt": 0.00, // 최종주문쿠폰할인금액
        "lastProductCouponDiscountAmt": 0.00, // 최종상품쿠폰할인금액
        "lastTaxFreeAmt": 0.00, // 최종비과세금액
        "lastTaxableAmt": 168181.00, // 최종과세금액
        "lastVatAmt": 16819.00, // 최종부과세액
        "firstSalesTaxAmt": 0.00, // 최초부과세액
        "lastSalesTaxAmt": 0.00, // 최종부과세액
        "firstCustomsDutyAmt": 0.00, // 최초관부가세
        "lastCustomsDutyAmt": 0.00, // 최종관부가세
        "registerYmdt": "2021-10-25 13:53:18", // 등록일
        "trackingKey": "trackingKey", // 쇼핑채널링-추적키
        "cartCouponIssueNo": 12, // 장바구니쿠폰 발급 번호
        "orderProducts": [
            {
                "orderProductNo": 50000000, // 주문상품번호
                "mallProductNo": 100000000, // 상품번호
                "productName": "상품명",
                "productManagementCd": "", // 상품관리 코드
                "hsCode": "",
                "eanCode": null,
                "partnerNo": 50000, // 파트너 번호
                "lastProductCouponDiscountAmt": 0.00, // 상품 쿠폰 할인액
                "productCouponIssueNo": 13, // 사용한 상품 쿠폰 번호
                "orderProductOptions": [
                    {
                        "orderProductOptionNo": 5062925, // 주문상품옵션번호
                        "orderNo": "2021100201234567890", // 주문번호
                        "memberNo": 100000, // 회원번호
                        "userInputs": [ // 구매자 입력형 옵션
                            {
                              "inputLabel": "색깔", // 구매자 작성형 옵션 이름
                              "inputValue":"검정색", //구매자 입력형 옵션 값
                            }
                        ],
                        "serviceNo": 30000, // 서비스 번호
                        "mallNo": 1000, // 몰번호
                        "mallProductNo": 10000000, // 상품번호
                        "productName": "상품명",
                        "mallOptionNo": 6000000, // 상품옵션번호
                        "mallAdditionalProductNo": 0, // 추가 상품 번호
                        "optionUseYn": "Y", // 옵션 사용 여부
                        "optionName": "옵션명",
                        "optionValue": "옵션값",
                        "imageUrl": "//rlyfaazj0.toastcdn.net/...", // 상품 이미지 url
                        "orderCnt": 1, // 주문건수
                        "originalOrderCnt": 1, // 최초 주문 수량
                        "salePrice": 329000.00, // 판매 가격
                        "immediateDiscountAmt": 144000.00, // 즉시 할인 가격
                        "addPrice": 0.00, // 추가 금액
                        "additionalDiscountAmt": 0.00, // 추가 할인 금액
                        "partnerChargeAmt": 0.00, // 파트너 부담액
                        "adjustedAmt": 185000.00, // 조정된 상품 금액
                        "orderStatusType": "PAY_DONE", // 주문옵션상태
                        "claimStatusType": null, // 클레임 상태
                        "orderYmdt": "2021-10-25 13:53:18", // 주문일시
                        "payYmdt": "2021-10-25 13:54:38", // 결제일시
                        "orderAcceptYmdt": null, // 주문접수일시
                        "releaseReadyYmdt": null, // 배송준비일시
                        "releaseYmdt": null, // 배송일시
                        "deliveryCompleteYmdt": null, // 배송완료일시
                        "buyConfirmYmdt": null, // 구매확정일시
                        "registerYmdt": "2021-10-25 13:53:18", // 주문옵션 생성일시
                        "trackingKey": "platform=MO&rid=851184319&aid=641_1_3_1025&mid=TMS", // 주문추적키 (쇼핑몰에서 생성되어 주문번호를 특정하는 구분값)
                        "deliveryNo": 400000, // 배송번호
                        "deliveryInternationalYn": false, // 해외배송여부
                        "optionManagementCd": "", // 옵션 관리 코드
                        "deliveryTemplateNo": 50000, // 배송 템플릿 번호
                        "deliveryCompanyType": "CJ", // 배송 업체
                        "invoiceNo": null, // 송장번호
                        "receiverName": "홍길동", // 받는 사람 이름
                        "receiverContact1": "010-1234-5678", //수령자 휴대폰번호
                        "receiverContact2": "", //수령자 전화번호
                        "zipCd": 12345, //배송지 우편번호
                        "receiverAddress": "", // 주소
                        "receiverDetailAddress": "", // 상세 주소
                        "receiverJibunAddress": "", //지번 주소
                        "usesShippingInfoLaterInput": false, // 나중배송지 입력 여부
                        "shippingInfoLaterInputContact": null, // 나중배송지 입력 전화 번호
                        "encryptedShippingNo": null, // 나중배송지 입력 시 사용하는 암호화된 배송번호
                        "shippingEmptyAutoCancelYmdt" : "2023-10-25 13:54:38", // 배송지 미입력 시 자동 주문취소 일시
                        "customsIdNumber": '', // 개인통관고유부호
                    }
                ]
            }
        ]
    },
    "pay": {
        "pgType": "KCP", // PG 타입
        "payType": "CREDIT_CARD", // 결제 유형
        "payYmdt": "2021-10-25 13:54:38", // 결제일시
        "payStatusType": "DONE", // 결제상태
        "payInfo": {
            "payType": "CREDIT_CARD", // 결제 유형
            "cardInfo": {
                "cardCompany": "SHINHAN", // 카드사
                "cardCode": "CCLG", // PG 카드사 코드(PG별로 다름)
                "cardName": "신한카드", // 카드사명
                "approveYmdt": "2021-10-25 13:54:38", // 결제승인시간
                "cardNo": "*****", // 카드번호
                "cardApprovalNumber": "****", // 결제승인번호
                "noInterest": true, // 무이자여부
                "installmentPeriod": 5, // 할부기간
                "cardAmt": 185000 // 신용카드 결제금액
            },
            "bankInfo": {
                "bank" : "KDB", // 은행
                "bankCode": "", // PG 은행코드 (PG별로 다름)
                "bankName": "", // 은행명
                "account": "", // 계좌번호
                "bankAmt": 1000, // 입금해야할 금액
                "depositAmt": 1000, // 실제 입금금액
                "depositYmdt": "2021-10-25 13:54:38", // 입금일시
                "remitterName": "", // 입금자명
                "depositorName": "", // 예금주명
                "paymentExpirationYmdt": "2021-10-25 13:54:38" // 입금 마감일
            },
            "cashAuthNo": "", // 현금영수증 승인번호
            "cashNo": "", // 현금영수증 거래번호
            "tradeNo": "3000000", // 거래번호
            "escrowYn": "N", // 에스크로 결제 여부
            "payAmt": 185000, // PG결제 금액
            "sellerCouponAmt": 0, // 가맹점 발행쿠폰
            "pgCouponAmt": 0, // PG 쿠폰 금액
            "cardCouponAmt": 0, // 카드사 쿠폰 금액
            "pointAmt": 0, // PG 포인트
            "paymentKey": {
                "pgType": "KCP", // PG 유형
                "key": "key", // PG Key
                "etcInfos": {} // 기타 결제 키 관련 정보
            },
            "taxType": "DUTY", // 과세유형 (과세,면세,영세)
            "mobileInfo": { // 핸드폰 결제 정보
                "mobileNo": "010-1234-5678", // 결제 핸드폰 번호
                "mobileCompany": "" // 통신사
            },
            "naverPayInfo": { // 네이버 페이 결제 정보
                "paymentMeans": "", // 네이버 페이 결제 수단
                "paymentDueDate": "", // 입금 기한
                "paymentNumber":"", // PG승인번호
                "orderDiscountAmount": 1000, // 주문 할인액
                "generalPaymentAmount": 1000, // 일반결제수단최종결제금액
                "naverMileagePaymentAmount": 1000, // 네이버페이 포인트 최종 결제 금액
                "chargeAmountPaymentAmount": 1000, // 충전금최종결제금액
                "checkoutAccumulationPaymentAmount": 1000, // 네이버페이 적립금 최종 결제 금액
                "orderType": "", // 주문 유형 구분(네이버페이/통합장바구니)
                "payLocationType": "", // 결제 위치 구분(PC/MOBILE)
                "paymentCoreType": "", // 결제 구분(네이버결제/PG 결제)
                "payLaterPaymentAmount": 1000 // 후불결제 금액(네이버결제/PG 결제)
            }
        }
    }
}

[주문상태변경]

// 샘플 데이터 및 파라미터 정의
[
    {
          "eventType": "CHANGE_ORDER_STATUS", //이벤트명
          "orderProductOptionNo": 12345, // 주문상품 옵션번호
          "orderNo": "202110110111111", // 주문번호
          "memberNo": 12345, // 회원번호
          "userInputs": [ // 구매자 입력형 옵션
              {
                "inputLabel":"색깔", //구매자 작성형 옵션 이름
                "inputValue":"검정색", //구매자 입력형 옵션 값
              }
          ],
          "serviceNo": 12345, // 서비스번호
          "mallNo": 12345, // 몰번호
          "deliveryNo": 12345, // 배송번호
          "deliveryTemplateNo": 50000, // 배송 템플릿 번호
          "deliveryInternationalYn":false, // 해외배송여부
          "mallProductNo": 100000000, // 상품번호
          "productName": "상품명",
          "mallOptionNo": 6000000, // 상품옵션번호
          "optionUseYn": "Y", // 옵션 사용 여부
          "optionName": "옵션명",
          "optionValue": "옵션값",
          "imageUrl": "//rlyfaazj0.toastcdn.net/...", // 상품 이미지 url
          "orderCnt": 1, // 주문건수
          "originalOrderCnt": 1, // 최초 주문 수량
          "salePrice": 329000.00, // 판매 가격
          "immediateDiscountAmt": 144000.00, // 즉시 할인 가격
          "addPrice": 0.00, // 추가 금액
          "additionalDiscountAmt": 0.00, // 추가 할인 금액
          "partnerChargeAmt": 0.00, // 파트너 부담액
          "adjustedAmt": 185000.00, // 조정된 상품 금액
          "orderStatusType": "PAY_DONE", // 주문옵션상태
          "claimStatusType": null, // 클레임 상태
          "orderYmdt": "2021-10-25 13:53:18", // 주문일시
          "payYmdt": "2021-10-25 13:54:38", // 결제일시
          "orderAcceptYmdt": null, // 주문접수일시
          "releaseReadyYmdt": null, // 배송준비일시
          "releaseYmdt": null, // 배송일시
          "deliveryCompleteYmdt": null, // 배송완료일시
          "buyConfirmYmdt": null, // 구매확정일시
          "registerYmdt": "2021-10-25 13:53:18", // 주문옵션 생성일시
          "trackingKey": "platform=MO&rid=851184319&aid=641_1_3_1025&mid=TMS", // 주문추적키 (쇼핑몰에서 생성되어 주문번호를 특정하는 구분값)
          "deliveryCompanyType": "CJ", // 배송 업체
          "invoiceNo": : "1212", // 송장번호
          "receiverName": "홍길동", // 받는 사람 이름
          "zipCd": 12345, // 배송지 우편 번호
          "address": "경기도 성남시 분당구 대왕판교로645번길 12", // 배송지 주소
          "detailAddress": "16 NHN 플레이뮤지엄", // 배송지 상세 주소
          "jibunAddress": "경기도 성남시 분당구 대왕판교로645번길", // 배송지 지번 주소
          "receiverCity": "", // 배송지 해외(도시)
          "receiverState": "", // 배송지 해외(주)
          "contact1": "010-0000-0000", // 수령자 연락처1
          "contact2": "", // 수령자 연락처2
          "productManagementCd": "", // 상품관리 코드
          "optionManagementCd": "", // 옵션관리 코드
          "usesShippingInfoLaterInput": false, // 나중배송지 입력 여부
          "shippingInfoLaterInputContact": null, // 나중배송지 입력 전화 번호
          "encryptedShippingNo": null, // 나중배송지 입력 시 사용하는 암호화된 배송번호
          "retrieveInvoiceUrl": null // 배송조회 할 수 있는 url
  }
]

[수령자 정보 변경]

// 샘플 데이터 및 파라미터 정의
{
    "eventType": "UPDATE_RECEIVER", // 이벤트 명
    "mallNo": 12345, // 쇼핑몰 번호
    "orderNo": "", // 주문 번호
    "shippings": [
      // 배송정보
      {
        shippingNo": 0, // 배송번호
        customsIdNumber": '', // 개인통관고유부호
        receiverAddress": {
          // 수령자 정보
          "zipCd": 12345, // 배송지 우편 번호
          "address": "경기도 성남시 분당구 대왕판교로645번길 12", // 배송지 주소
          "detailAddress": "16 NHN 플레이뮤지엄", // 배송지 상세 주소
          "jibunAddress": "경기도 성남시 분당구 대왕판교로645번길", // 배송지 지번 주소
          "receiverCity": "", // 배송지 해외(도시)
          "receiverState": "", // 배송지 해외(주)
          "contact1": "010-0000-0000", // 수령자 연락처1
          "contact2": "", // 수령자 연락처2
          "name": "홍길동", // 수령자 이름
          "shippingEtcInfo": {
            // 해외배송지 기타정보
            "receiverFirstName": "", // 수령자 FirstName
            "receiverLastName": "", // 수령자 LastName
            "orderAdditionalInfo": "", // 주문 추가 정보
          },
        },
        "countryCd": "", // 국가 코드
        "memo": "", // 배송 메모
      }
    ]
  }

[업무메시지]

// 샘플 데이터 및 파라미터 정의
{
    "eventType": "ADD_TASK_MESSAGE", // 이벤트명
    "content": "content", // 이벤트시 작성된 내용
    "isDetail": true, // 상세 메시지 여부
    "taskMessage": {
      // 업무메시지 정보
      "taskMessageNo": 0, // 업무메시지 번호
      "taskMessageChannelType": "PARTNER", // 메시지 작성 채널
      "taskMessageStatusType": "PROCESSING", // 진행 상황
      "taskMessageType": "PAY", // 업무메시지 유형
      "fromTargetType": "PARTNER", // 발송자 타입
      "fromTargetNo": 0, // 발송자 번호
      "toTargetType": "PARTNER", // 담당자 타입
      "toTargetNo": 0, // 담당자 번호
      "content": "content", // 업무메시지 내용
      "orderNo": 0, // 주문 번호
      "orderProductOptionNo": 0, // 주문 옵션 번호
      "productName": "product-name", // 상품 명 (nullable)
      "registerYmdt": "2023-02-21 13:32:47", // 등록일시
      "updateYmdt": "2023-02-21 13:32:47", // 수정일시 (nullable)
      "completeYmdt": "2023-02-21 13:32:47", // 완료일시 (완료되지 않은 경우: null)
      "taskMessageDetails": [
        // 상세 메시지 정보
        {
          "taskMessageDetailNo": 0, // 업무메시지 상세 번호
          "taskMessageChannelType": "PARTNER", // 상세 메시지 작성 채널
          "content": "content", // 업무메시지 상세 내용
          "registerYmdt": "2023-02-21 13:32:47", // 등록일시
          "updateYmdt": "2023-02-21 13:32:47", // 수정일시 (nullable)
        }
      ]
    }
  }

6. 상품 관련

// 샘플 데이터 및 파라미터 정의
{  
    "eventType": "PRODUCT_UPDATED", // 이벤트 유형
    "mallNo": 12345, // 쇼핑몰번호
    "productEventType": "CREATED" || "UPDATED" || "DELETED", // 등록 또는 수정 또는 삭제  
    "mallProductNos": [1000,20000], //상품번호  
}

Last updated