real 1transaction - nicepayments/nicepay-manual GitHub Wiki

์šด์˜ ์ธ์ฆ & ์Šน์ธ ์„œ๋น„์Šค ์—ฐ๋™ํ•˜๊ธฐ

1 Transaction ์—ฐ๋™ํ•˜๊ธฐ

1 Transaction ๊ฒฐ์ œ ๋ฐฉ์‹์€ ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ ์—์„œ '์ธ์ฆ' ๊ณผ '์Šน์ธ' ๋‹จ๊ณ„๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋Š” ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

์ด๋Š” 2 Transaction ๋ฐฉ์‹์—์„œ ๊ฐ€๋งน์ ์ด ๋”ฐ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๋‘ ๋‹จ๊ณ„๋ฅผ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ, ๊ฒฐ์ œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋‹จ์ˆœํ™”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋งน์ ์€ ์ธ์ฆ ์š”์ฒญ ์‹œ ์Šน์ธ๊นŒ์ง€ ์ฒ˜๋ฆฌ๋œ ํ›„์— ์Šน์ธ ์‘๋‹ต์„ ๋ฐ›๊ฒŒ ๋˜๋ฏ€๋กœ, ๋ณต์žกํ•œ ๊ตฌํ˜„ ์—†์ด ๋น ๋ฅธ ๊ฒฐ์ œ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ, ์ด ๋ฐฉ์‹์„ ์„ ํƒํ•  ๋•Œ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ค‘์š”ํ•œ ๊ณ ๋ ค์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ ๊ณ ๋ ค์‚ฌํ•ญ

  • ๊ฐ€๋งน์ ์˜ ๋„คํŠธ์›Œํฌ ์ƒํƒœ

    • ๊ฐ€๋งน์ ์˜ ํŠธ๋ž˜ํ”ฝ์ด ์ฆ๊ฐ€ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ์ƒํƒœ๊ฐ€ ๋ถˆ์•ˆ์ •ํ•œ ๊ฒฝ์šฐ, ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ ๋กœ๋ถ€ํ„ฐ์˜ ์‘๋‹ต์„ ๋ฐ›์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€์ ์ธ ๊ฒ€์ฆ ๋ฐ ํ™•์ธ ์ ˆ์ฐจ๊ฐ€ ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์›นํ›…์˜ ํ•„์ˆ˜์„ฑ

    • ์›นํ›…์€ 1 Transaction ๋ฐฉ์‹์—์„œ ์ค‘์š”ํ•œ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    • ์›นํ›…์„ ํ†ตํ•ด ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ ๋กœ๋ถ€ํ„ฐ์˜ ์‘๋‹ต์„ ์•ˆ์ •์ ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ๋„ ํ™•๋ณดํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฐ์ œ ๊ฒ€์ฆ์˜ ํ•„์ˆ˜์„ฑ

    • 1 Transaction ๋ฐฉ์‹์—์„œ๋„ ๊ฒฐ์ œ ๊ฒ€์ฆ์€ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค.
    • ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ ๊ฐ€ ๋ชจ๋“  ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•˜๋”๋ผ๋„, ๊ฐ€๋งน์ ์—์„œ์˜ ์ถ”๊ฐ€์ ์ธ ๊ฒ€์ฆ ์ ˆ์ฐจ๋ฅผ ํ†ตํ•ด ๊ฒฐ์ œ์˜ ์•ˆ์ „์„ฑ์„ ๋”์šฑ ๊ฐ•ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1 Transaction ๋ฐฉ์‹์€ ์ด๋Ÿฌํ•œ ์ธก๋ฉด๋“ค์ด ์ ์ ˆํžˆ ์ฒ˜๋ฆฌ๋  ๋•Œ ๊ฐ€์žฅ ํšจ๊ณผ๋ฅผ ๋ฐœํœ˜ํ•ฉ๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„๋˜๋ฉด, ์ด ๋ฐฉ์‹์€ ๊ฐ€๋งน์ ์ด ๋น ๋ฅด๊ณ  ํšจ์œจ์ ์ธ ๊ฒฐ์ œ ์ฒ˜๋ฆฌ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

API ํ‚ค ์ค€๋น„

๊ฐ€๋งน์  ํ…Œ์ŠคํŠธ ์ƒ์ ์˜ Client ์Šน์ธ & basic ์ธ์ฆ์œผ๋กœ ๋ฐœ๊ธ‰ ๋ฐ›์€ clientId ๋ฐ secretKey๋กœ ์•„๋ž˜ ์—ฐ๋™์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ(๊ฒฐ์ œ์ฐฝ) ์š”์ฒญ

๊ฒฐ์ œ์ฐฝ JS SDK ์‚ฝ์ž…

<script src="https://pay.nicepay.co.kr/v1/js/"></script> // (1)
  • (1): https://pay.nicepay.co.kr/v1/js/
    • ๊ฐ€๋งน์ ์ด ๊ฒฐ์ œ์ฐฝ์„ ์ผ๊ด€๋˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •์˜ํ•œ JS SDK

๊ฒฐ์ œ์ฐฝ JS ํ˜ธ์ถœ ์ฝ”๋“œ

<script src="https://pay.nicepay.co.kr/v1/js/"></script>
<script>
    function serverAuth() {
        AUTHNICE.requestPay({                               // (1) ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ  ๊ฒฐ์ œ์ฐฝ ํ˜ธ์ถœ ํ•จ์ˆ˜
            clientId: 'R1_xxx',                             // (2) ๊ฐ€๋งน์  ์šด์˜ํ™˜๊ฒฝ 1Transaction(Client ์Šน์ธ & basic ์ธ์ฆ)
            method: 'card',                                 // (3) ๊ณ ๊ฐ ๊ฒฐ์ œ ์ˆ˜๋‹จ
            orderId: 'your-unique-orderid',                 // (4) ๊ฐ€๋งน์  ๊ณ ์œ  ์ฃผ๋ฌธ์ •๋ณด
            amount: 1004,                                   // (5) ๊ฐ€๋งน์  ์ƒํ’ˆ ๊ธˆ์•ก
            goodsName: '๋‚˜์ด์ŠคํŽ˜์ด-์ƒํ’ˆ',                   // (6) ๊ฐ€๋งน์  ์ƒํ’ˆ ๋ช…
            returnUrl: 'http://localhost:4567/serverAuth'   // (7) ๊ฐ€๋งน์  ์ธ์ฆ ๊ฒฐ๊ณผ ์‘๋‹ต๋ฐ›์„ URL
        });
    }
</script>
  • (1): AUTHNICE.requestPay
    • ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ  ๊ฒฐ์ œ์ฐฝ ํ˜ธ์ถœ ํ•จ์ˆ˜
  • (2): clientId: 'R1_xxx'
    • ๊ฐ€๋งน์  ํ…Œ์ŠคํŠธ ์ƒ์ ์˜ key ์ •๋ณด์—์„œ ๋ฐœ๊ธ‰ ๋ฐ›์€ clientId
  • (3): method: 'card'
  • (4): orderId: 'your-unique-orderid'
    • ๊ฐ€๋งน์  ๊ณ ์œ  ์ฃผ๋ฌธ์ •๋ณด
    • ๋‚˜์ด์ŠคํŽ˜์ด๋จผ์ธ ์—์„œ ๊ฐ€๋งน์ ์ด ์š”์ฒญํ•œ ๊ฒฐ์ œ ์š”์ฒญ์ด ์ค‘๋ณต์ฒ˜๋ฆฌ๊ฐ€ ๋˜์ง€ ์•Š๋„๋ก ๊ฒ€์ฆ
  • (5): amount: 1004
    • ๊ฒฐ์ œ ๊ธˆ์•ก
    • ๊ฐ€๋งน์ ์—์„œ ํŒ๋งคํ•˜๋Š” ์ƒํ’ˆ ๊ธˆ์•ก
  • (6): returnUrl: 'http://localhost:4567/serverAuth'

์ธ์ฆ ์š”์ฒญ์— ๋Œ€ํ•œ F&Q

Q1. [P006]. clientId๊ฐ€ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.(GID ํš๋“ ์‹คํŒจ)
A. ์šด์˜ ์„œ๋น„์Šค์— ์ƒŒ๋“œ๋ฐ•์Šค ClientId๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
์šด์˜ clientId๋Š” R1_ or R2_ ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์Šน์ธ ์‘๋‹ต

์Šน์ธ ์‘๋‹ต์— ๋Œ€ํ•œ ์„ค๋ช…

์Šน์ธ ์‘๋‹ต์€ ๊ฒฐ์ œ ๊ณผ์ • ์ค‘์—์„œ ๊ณ ๊ฐ์˜ ์นด๋“œ์‚ฌ์— ์˜ํ•ด ํŠน์ • ๊ธˆ์•ก์˜ ๊ฒฐ์ œ๊ฐ€ ํ—ˆ๊ฐ€๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฉ”์‹œ์ง€์ž…๋‹ˆ๋‹ค.

๊ฐ€๋งน์ ์€ ์‹ค์‹œ๊ฐ„(์ธ์ฆ ์š”์ฒญ ์‹œ์˜ returnUrl)์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธ ํ•  ์ˆ˜๋„ ์žˆ๊ณ , ๋™์‹œ์— ๊ฒฐ์ œ์ˆ˜๋‹จ์— ๋Œ€ํ•œ ์›นํ›… URL์„ ๋“ฑ๋กํ•˜์˜€์„ ๊ฒฝ์šฐ, ์›นํ›…์„ ํ†ตํ•ด ๊ฒฐ์ œํ†ต๋ณด๋ฅผ ์„œ๋ฒ„๋กœ ์ „๋‹ฌ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์›นํ›…์„ ํ†ตํ•ด ๊ฒฐ์ œํ†ต๋ณด๋ฅผ ๋ฐ›๋Š” ๊ฒฝ์šฐ ๊ฐ€๋งน์ ์€ ๊ฒฐ์ œ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ๊ฒ€์ฆ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šด์˜ ์Šน์ธ ์‘๋‹ต ๋ฐ์ดํ„ฐ

{
  "resultCode": "0000",
  "resultMsg": "์ •์ƒ ์ฒ˜๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.",
  "tid": "{{tid}}",
  "cancelledTid": null,
  "orderId": "{{unique_orderId}",
  "ediDate": "2023-08-14T17:07:28.021+0900",
  "signature": "{{hex(sha256(tid + amount + ediDate+ SecretKey))}}",
  "status": "paid",
  "paidAt": "2023-08-14T17:07:27.000+0900",
  "failedAt": "0",
  "cancelledAt": "0",
  "payMethod": "card",
  "amount": 1004,
  "balanceAmt": 1004,
  "goodsName": "์ƒํ’ˆ๋ช…",
  "mallReserved": null,
  "useEscrow": false,
  "currency": "KRW",
  "channel": "pc",
  "approveNo": "000000",
  "buyerName": null,
  "buyerTel": null,
  "buyerEmail": null,
  "receiptUrl": "https://npg.nicepay.co.kr/issue/IssueLoader.do?type=0&innerWin=Y&TID={{tid}}",
  "mallUserId": null,
  "issuedCashReceipt": false,
  "coupon": null,
  "card": {
    "cardCode": "{{์นด๋“œ์‚ฌ์ฝ”๋“œ}}",
    "cardName": "{{์นด๋“œ์‚ฌ}}",
    "cardNum": "{{์‹ ์šฉ์นด๋“œ ๋ฒˆํ˜ธ}}", // PCI-DSS ์•ž 6์ž๋ฆฌ, ๋’ค 4์ž๋ฆฌ ์™ธ ๋งˆ์Šคํ‚น ์ฒ˜๋ฆฌ
    "cardQuota": 0,
    "isInterestFree": false,
    "cardType": "credit",
    "canPartCancel": true,
    "acquCardCode": "{{๋งค์ž…์‚ฌ ์ฝ”๋“œ}}",
    "acquCardName": "{{๋งค์ž…์‚ฌ ๋ช…}}"
  },
  "vbank": null,
  "bank": null,
  "cellphone": null,
  "cancels": null,
  "cashReceipts": null,
  "messageSource": "nicepay"
}
โš ๏ธ **GitHub.com Fallback** โš ๏ธ