Class Webhook

java.lang.Object
kr.paysync.sdk.webhook.Webhook

public final class Webhook extends Object
웹훅 서명을 검증하고 이벤트를 읽습니다.
Webhook webhook = new Webhook(System.getenv("PAYSYNC_WEBHOOK_SECRET"));
WebhookEvent event = webhook.verify(rawBody, headers);
  • Field Details

  • Constructor Details

    • Webhook

      public Webhook(String secret)
      Parameters:
      secret - 대시보드에서 확인한 웹훅 서명 키 (whsec_...)
    • Webhook

      public Webhook(String secret, Duration tolerance, Clock clock)
      Parameters:
      secret - 웹훅 서명 키 (whsec_...)
      tolerance - 허용할 전송 시각 차이
      clock - 현재 시각
  • Method Details

    • verify

      public WebhookEvent verify(String body, Map<String, ? extends Collection<String>> headers)
      서명을 검증하고 이벤트를 읽습니다.
      Parameters:
      body - 받은 본문 그대로의 문자열
      headers - 요청 헤더
      Throws:
      WebhookVerificationException - 서명이 맞지 않습니다.
    • verify

      public WebhookEvent verify(String body, @Nullable String id, @Nullable String timestamp, @Nullable String signature)
      서명을 검증하고 이벤트를 읽습니다.
      Parameters:
      body - 받은 본문 그대로의 문자열
      id - webhook-id 헤더
      timestamp - webhook-timestamp 헤더
      signature - webhook-signature 헤더
      Throws:
      WebhookVerificationException - 서명이 맞지 않습니다.
    • verifySignature

      public void verifySignature(String body, @Nullable String id, @Nullable String timestamp, @Nullable String signature)
      서명만 검증합니다.
      Throws:
      WebhookVerificationException - 서명이 맞지 않습니다.
    • sign

      public String sign(String id, Instant timestamp, String body)
      테스트용 webhook-signature 값을 만듭니다.
    • parse

      public static WebhookEvent parse(String body)
      서명을 검증하지 않고 본문을 이벤트로 읽습니다.