webhook management - nicepayments/nicepay-manual GitHub Wiki

์›นํ›… URL ๋“ฑ๋ก ๋ฐ ๊ด€๋ฆฌ

API๋ฅผ ํ†ตํ•ด ์›นํ›… URL์„ ๋“ฑ๋ก, ์กฐํšŒ, ์ˆ˜์ •, ์‚ญ์ œํ•˜๊ณ  ์ƒ˜ํ”Œ ๊ฑฐ๋ž˜ํ†ต๋ณด๋กœ ๊ฒ€์ฆํ•˜๋Š” ๊ฐ€์ด๋“œ

์‚ฌ์ „ ์ค€๋น„

ํ•„์š”ํ•œ ์ •๋ณด

  • ์šด์˜ ClientId (R1_ ๋˜๋Š” R2_ prefix)
  • ์šด์˜ SecretKey
  • HTTPS ์›นํ›… ์—”๋“œํฌ์ธํŠธ URL

์›นํ›… ์—”๋“œํฌ์ธํŠธ ์š”๊ตฌ์‚ฌํ•ญ

์›นํ›…์„ ๋ฐ›์„ ์„œ๋ฒ„ ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋‹ค์Œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

HTTP Status: 200
Content-Type: text/html
Response Body: "OK"

โš ๏ธ ์ฃผ์˜: Content-Type์ด application/json์ด๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค!


1๋‹จ๊ณ„: Authorization ํ† ํฐ ์ƒ์„ฑ

Base64 ์ธ์ฝ”๋”ฉ์œผ๋กœ ์ธ์ฆ ํ† ํฐ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

# macOS/Linux
echo -n "R2_your_client_id:your_secret_key" | base64

# ๊ฒฐ๊ณผ ์˜ˆ์‹œ
UjJfeW91cl9jbGllbnRfaWQ6eW91cl9zZWNyZXRfa2V5

2๋‹จ๊ณ„: ์›นํ›… URL ๋“ฑ๋ก

์นด๋“œ ๊ฒฐ์ œ ์›นํ›… URL์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

curl -X POST 'https://api.nicepay.co.kr/v1/webhook' \
-H 'Content-type: application/json' \
-H 'Authorization: Basic UjJfeW91cl9jbGllbnRfaWQ6eW91cl9zZWNyZXRfa2V5' \
-d '{
  "method": "card",
  "url": "https://your-domain.com/webhook/nicepay",
  "managerEmail": "[email protected]"
}'

๋“ฑ๋ก ๊ณผ์ •

  1. API ์š”์ฒญ ์ „์†ก
  2. NICEPAY๊ฐ€ ๋“ฑ๋กํ•œ URL๋กœ ์ƒ˜ํ”Œ ๊ฑฐ๋ž˜ํ†ต๋ณด ์ „์†ก
  3. ์„œ๋ฒ„์—์„œ HTTP 200 + "OK" ์‘๋‹ต
  4. ๊ฒ€์ฆ ์„ฑ๊ณต ์‹œ ๋“ฑ๋ก ์™„๋ฃŒ

์„ฑ๊ณต ์‘๋‹ต

{
  "resultCode": "0000",
  "resultMsg": "์ •์ƒ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.",
  "messageSource": "nicepay"
}

3๋‹จ๊ณ„: ์ƒ˜ํ”Œ ๊ฑฐ๋ž˜ํ†ต๋ณด ํ™•์ธ

์›นํ›… URL ๋“ฑ๋ก ์‹œ NICEPAY๊ฐ€ ๋ณด๋‚ด๋Š” ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ:

{
  "resultCode": "0000",
  "resultMsg": "sample",
  "tid": "nictest00m01012109281716439616M3497138",
  "orderId": "SAMPLE-ORDER-ID",
  "amount": 1000,
  "payMethod": "card",
  "status": "paid",
  "signature": "์ƒ˜ํ”Œ_signature",
  "ediDate": "2024-01-01T00:00:00+09:00"
}

์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ํŠน์ง•:

  • resultMsg: "sample" - ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ์ž„์„ ํ‘œ์‹œ
  • Signature ๊ฒ€์ฆ ๋ถˆํ•„์š” (๋”๋ฏธ ๋ฐ์ดํ„ฐ)

์ฒดํฌํฌ์ธํŠธ

  • ์„œ๋ฒ„ ๋กœ๊ทธ์—์„œ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ํ™•์ธ
  • HTTP 200 + "OK" ์‘๋‹ต ํ™•์ธ
  • API ์‘๋‹ต์—์„œ resultCode: "0000" ํ™•์ธ

4๋‹จ๊ณ„: ๋“ฑ๋ก ํ™•์ธ

๋“ฑ๋ก๋œ ์›นํ›… URL์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

curl -X GET 'https://api.nicepay.co.kr/v1/webhook' \
-H 'Content-type: application/json' \
-H 'Authorization: Basic UjJfeW91cl9jbGllbnRfaWQ6eW91cl9zZWNyZXRfa2V5'

์‘๋‹ต ์˜ˆ์‹œ

{
  "resultCode": "0000",
  "resultMsg": "์ •์ƒ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.",
  "messageSource": "nicepay",
  "urls": [
    {
      "method": "card",
      "url": "https://your-domain.com/webhook/nicepay",
      "managerEmail": "[email protected]"
    }
  ]
}

์ถ”๊ฐ€ ๊ธฐ๋Šฅ

์ถ”๊ฐ€ ๊ฒฐ์ œ์ˆ˜๋‹จ ๋“ฑ๋ก

๊ฐ€์ƒ๊ณ„์ขŒ ์›นํ›… ๋“ฑ๋ก

curl -X POST 'https://api.nicepay.co.kr/v1/webhook' \
-H 'Content-type: application/json' \
-H 'Authorization: Basic UjJfeW91cl9jbGllbnRfaWQ6...' \
-d '{
  "method": "vbank",
  "url": "https://your-domain.com/webhook/nicepay"
}'

๊ณ„์ขŒ์ด์ฒด ์›นํ›… ๋“ฑ๋ก

curl -X POST 'https://api.nicepay.co.kr/v1/webhook' \
-H 'Content-type: application/json' \
-H 'Authorization: Basic UjJfeW91cl9jbGllbnRfaWQ6...' \
-d '{
  "method": "bank",
  "url": "https://your-domain.com/webhook/nicepay"
}'

ํŒ: ๋ชจ๋“  ๊ฒฐ์ œ์ˆ˜๋‹จ์„ ํ•˜๋‚˜์˜ URL๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

์›นํ›… URL ์ˆ˜์ •
curl -X POST 'https://api.nicepay.co.kr/v1/webhook/card/update' \
-H 'Content-type: application/json' \
-H 'Authorization: Basic UjJfeW91cl9jbGllbnRfaWQ6...' \
-d '{
  "url": "https://your-domain.com/webhook/nicepay-v2"
}'
์›นํ›… URL ์‚ญ์ œ
curl -X POST 'https://api.nicepay.co.kr/v1/webhook/card/delete' \
-H 'Content-type: application/json' \
-H 'Authorization: Basic UjJfeW91cl9jbGllbnRfaWQ6...'

๋ฌธ์ œ ํ•ด๊ฒฐ

โŒ "HTTP response body์— 'OK' ๋ฌธ์ž์—ด์„ ์‘๋‹ตํ•ด์ฃผ์„ธ์š”"

์›์ธ:

  • Content-Type์ด application/json
  • Response Body๊ฐ€ "OK"๊ฐ€ ์•„๋‹˜
  • HTTP Status๊ฐ€ 200์ด ์•„๋‹˜

ํ•ด๊ฒฐ: ์›นํ›… ์—”๋“œํฌ์ธํŠธ๊ฐ€ ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ์‘๋‹ตํ•˜๋Š”์ง€ ํ™•์ธ:

HTTP/1.1 200 OK
Content-Type: text/html

OK

โŒ "์›นํ›… URL ๊ฒ€์ฆ ์‹คํŒจ"

์›์ธ:

  • HTTPS ์ธ์ฆ์„œ ์˜ค๋ฅ˜
  • ๋ฐฉํ™”๋ฒฝ์—์„œ NICEPAY IP ์ฐจ๋‹จ
  • ์›นํ›… ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์‘๋‹ตํ•˜์ง€ ์•Š์Œ

ํ•ด๊ฒฐ:

  1. SSL ์ธ์ฆ์„œ ํ™•์ธ: openssl s_client -connect your-domain.com:443
  2. ๋ฐฉํ™”๋ฒฝ ์ธ๋ฐ”์šด๋“œ ๊ทœ์น™ ํ™•์ธ
  3. ์„œ๋ฒ„ ์‹คํ–‰ ์ƒํƒœ ํ™•์ธ

โŒ ์ƒ˜ํ”Œ ๊ฑฐ๋ž˜ํ†ต๋ณด๊ฐ€ ์•ˆ ์˜ด

์›์ธ:

  • ์„œ๋ฒ„๊ฐ€ ์‹คํ–‰ ์ค‘์ด ์•„๋‹˜
  • ์›นํ›… ์—”๋“œํฌ์ธํŠธ ๊ฒฝ๋กœ ์˜ค๋ฅ˜
  • ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ/ํ”„๋ก์‹œ ์„ค์ • ์˜ค๋ฅ˜

ํ•ด๊ฒฐ:

  1. ์„œ๋ฒ„ ์‹คํ–‰ ์ƒํƒœ ํ™•์ธ
  2. ์—”๋“œํฌ์ธํŠธ ๊ฒฝ๋กœ ํ™•์ธ
  3. nginx/apache ํ”„๋ก์‹œ ์„ค์ • ํ™•์ธ

์™„๋ฃŒ ์ฒดํฌ๋ฆฌ์ŠคํŠธ

  • Authorization ํ† ํฐ ์ƒ์„ฑ
  • ์›นํ›… ์—”๋“œํฌ์ธํŠธ ๊ตฌํ˜„ (HTTP 200 + text/html + "OK")
  • ์นด๋“œ ๊ฒฐ์ œ ์›นํ›… URL ๋“ฑ๋ก ์„ฑ๊ณต
  • ์ƒ˜ํ”Œ ๊ฑฐ๋ž˜ํ†ต๋ณด ์ˆ˜์‹  ํ™•์ธ
  • ์กฐํšŒ API๋กœ ๋“ฑ๋ก ์ƒํƒœ ํ™•์ธ

๋‹ค์Œ ๋‹จ๊ณ„

โš ๏ธ **GitHub.com Fallback** โš ๏ธ