zoom appsでWebhookを使う時は72時間ごとに認証をする必要があります。
Go言語でzoomからのリクエストを処理する実装例です。

package main

import (
	"crypto/hmac"
	"crypto/sha256"
	"encoding/hex"
	"encoding/json"
	"log"
	"net/http"

	"github.com/gin-gonic/gin"
	"github.com/ieee0824/getenv"
)

type request struct {
	Payload struct {
		PlainToken string `json:"plainToken"`
	} `json:"payload"`
	EventTs int64  `json:"event_ts"`
	Event   string `json:"event"`
}

type response struct {
	PlainToken     string `json:"plainToken"`
	EncryptedToken string `json:"encryptedToken"`
}

func signHmac(secretKey string, message string) string {
	mac := hmac.New(sha256.New, []byte(secretKey))
	mac.Write([]byte(message))
	signature := mac.Sum(nil)
	ret := hex.EncodeToString(signature)
	return ret
}

func handler(ctx *gin.Context) {
	req := &request{}
	if err := json.NewDecoder(ctx.Request.Body).Decode(req); err != nil {
		log.Println(err.Error())
		ctx.JSON(http.StatusBadRequest, gin.H{
			"error": err.Error(),
		})
		return
	}

	encrypted := signHmac(getenv.String("ZOOM_VERIFICATION_SECRET"), req.Payload.PlainToken)
	ctx.JSON(http.StatusOK, &response{
		PlainToken:     req.Payload.PlainToken,
		EncryptedToken: encrypted,
	})
}

func main() {
	r := gin.Default()
	r.POST("/", handler)

	r.Run()
}

参考文献