Skip to content

bootpay/backend-nodejs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Bootpay Server Side Package for Node.js alt text

Bootpay Node.js Server Side Library

๋ถ€ํŠธํŽ˜์ด ๊ณต์‹ Node.js ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž…๋‹ˆ๋‹ค (์„œ๋ฒ„์‚ฌ์ด๋“œ ์šฉ)

nodeํ™˜๊ฒฝ์—์„œ ์ž‘์„ฑ๋œ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜, ํ”„๋ ˆ์ž„์›Œํฌ ๋“ฑ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • PG ๊ฒฐ์ œ์ฐฝ ์—ฐ๋™์€ ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๋‹ค. (Javascript, Android, iOS, React Native, Flutter ๋“ฑ)
  • ๊ฒฐ์ œ ๊ฒ€์ฆ ๋ฐ ์ทจ์†Œ, ๋นŒ๋งํ‚ค ๋ฐœ๊ธ‰, ๋ณธ์ธ์ธ์ฆ ๋“ฑ์˜ ์ˆ˜ํ–‰์€ ์„œ๋ฒ„์‚ฌ์ด๋“œ์—์„œ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค. (Java, PHP, Python, Ruby, Node.js, Go, ASP.NET ๋“ฑ)

๊ธฐ๋Šฅ

  1. (๋ถ€ํŠธํŽ˜์ด ํ†ต์‹ ์„ ์œ„ํ•œ) ํ† ํฐ ๋ฐœ๊ธ‰ ์š”์ฒญ

  2. ๊ฒฐ์ œ ๊ฒ€์ฆ

  3. ๊ฒฐ์ œ ์ทจ์†Œ (์ „์•ก ์ทจ์†Œ / ๋ถ€๋ถ„ ์ทจ์†Œ)

  4. ๋นŒ๋งํ‚ค ๋ฐœ๊ธ‰

    4-1. ๋ฐœ๊ธ‰๋œ ๋นŒ๋งํ‚ค๋กœ ๊ฒฐ์ œ ์Šน์ธ ์š”์ฒญ

    4-2. ๋ฐœ๊ธ‰๋œ ๋นŒ๋งํ‚ค๋กœ ๊ฒฐ์ œ ์Šน์ธ ์˜ˆ์•ฝ ์š”์ฒญ

    4-2-1. ๋ฐœ๊ธ‰๋œ ๋นŒ๋งํ‚ค๋กœ ๊ฒฐ์ œ ์Šน์ธ ์˜ˆ์•ฝ - ์ทจ์†Œ ์š”์ฒญ

    4-3. ๋นŒ๋งํ‚ค ์‚ญ์ œ

  5. (๋ถ€ํŠธํŽ˜์ด ๋‹จ๋…) ์‚ฌ์šฉ์ž ํ† ํฐ ๋ฐœ๊ธ‰

  6. (๋ถ€ํŠธํŽ˜์ด ๋‹จ๋…) ๊ฒฐ์ œ ๋งํฌ ์ƒ์„ฑ

  7. ์„œ๋ฒ„ ์Šน์ธ ์š”์ฒญ

  8. ๋ณธ์ธ ์ธ์ฆ ๊ฒฐ๊ณผ ์กฐํšŒ

npm์œผ๋กœ ์„ค์น˜ํ•˜๊ธฐ

npm install --save bootpay-backend-nodejs

์‚ฌ์šฉํ•˜๊ธฐ

async function getAccessToken() { 
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )    
    try {
        let response = await Bootpay.getAccessToken()
        console.log(response)
    } catch(e) {
        console.log(e)
    }
};

ํ•จ์ˆ˜ ๋‹จ์œ„์˜ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋Š” ์ด๊ณณ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

1. ํ† ํฐ ๋ฐœ๊ธ‰

๋ถ€ํŠธํŽ˜์ด์™€ ์„œ๋ฒ„๊ฐ„ ํ†ต์‹ ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ถ€ํŠธํŽ˜์ด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํ† ํฐ์„ ๋ฐœ๊ธ‰๋ฐ›์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋ฐœ๊ธ‰๋œ ํ† ํฐ์€ 30๋ถ„๊ฐ„ ์œ ํšจํ•˜๋ฉฐ, ์ตœ์ดˆ ๋ฐœ๊ธ‰์ผ๋กœ๋ถ€ํ„ฐ 30๋ถ„์ด ์ง€๋‚  ๊ฒฝ์šฐ ํ† ํฐ ๋ฐœ๊ธ‰ ํ•จ์ˆ˜๋ฅผ ์žฌํ˜ธ์ถœ ํ•ด์ฃผ์…”์•ผ ํ•ฉ๋‹ˆ๋‹ค.

async function getAccessToken() { 
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )    
    try {
        let response = await Bootpay.getAccessToken()
        console.log(response)
    } catch(e) {
        console.log(e)
    }
}

2. ๊ฒฐ์ œ ๊ฒ€์ฆ

๊ฒฐ์ œ์ฐฝ ๋ฐ ์ •๊ธฐ๊ฒฐ์ œ์—์„œ ์Šน์ธ/์ทจ์†Œ๋œ ๊ฒฐ์ œ๊ฑด์— ๋Œ€ํ•˜์—ฌ ์˜ฌ๋ฐ”๋ฅธ ๊ฒฐ์ œ๊ฑด์ธ์ง€ ์„œ๋ฒ„๊ฐ„ ํ†ต์‹ ์œผ๋กœ ๊ฒฐ์ œ๊ฒ€์ฆ์„ ํ•ฉ๋‹ˆ๋‹ค.

async function verify() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    const token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let result
        try {
            result = await Bootpay.verify('612df0250d681b001de61de6')
        } catch (e) {
            return console.log(e)
        }
        console.log(result)
    }
}

3. ๊ฒฐ์ œ ์ทจ์†Œ (์ „์•ก ์ทจ์†Œ / ๋ถ€๋ถ„ ์ทจ์†Œ)

price๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ „์•ก์ทจ์†Œ ๋ฉ๋‹ˆ๋‹ค.

  • ํœด๋Œ€ํฐ ๊ฒฐ์ œ์˜ ๊ฒฝ์šฐ ์ด์›”๋  ๊ฒฝ์šฐ ์ดํ†ต์‚ฌ ์ •์ฑ…์ƒ ์ทจ์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค
  • ์ •์‚ฐ๋ฐ›์œผ์‹ค ๊ธˆ์•ก๋ณด๋‹ค ์ทจ์†Œ๊ธˆ์•ก์ด ํด ๊ฒฝ์šฐ PG์‚ฌ ์ •์ฑ…์ƒ ์ทจ์†Œ๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋•Œ PG์‚ฌ์— ๋ฌธ์˜ํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€์ƒ๊ณ„์ขŒ์˜ ๊ฒฝ์šฐ CMS ํŠน์•ฝ์ด ๋˜์–ด์žˆ์ง€ ์•Š์œผ๋ฉด ์ทจ์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ฒฐ์ œ ํ…Œ์ŠคํŠธ์‹œ์—๋Š” ๊ฐ€์ƒ๊ณ„์ขŒ๋กœ ํ…Œ์ŠคํŠธ ํ•˜์ง€ ์•Š๊ธธ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

๋ถ€๋ถ„์ทจ๋Š” ์นด๋“œ๋กœ ๊ฒฐ์ œ๋œ ๊ฑด๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ผ๋ถ€ PG์‚ฌ๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์‹œ price์— ๊ธˆ์•ก์„ ์ง€์ •ํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

  • (์ง€์›๊ฐ€๋Šฅ PG์‚ฌ: ์ด๋‹ˆ์‹œ์Šค, kcp, ๋‹ค๋‚ , ํŽ˜์ด๋ ˆํ„ฐ, ๋‚˜์ด์ŠคํŽ˜์ด, ์นด์นด์˜คํŽ˜์ด, ํŽ˜์ด์ฝ”)

๊ฐ„ํ˜น ๊ฐœ๋ฐœ์‚ฌ์—์„œ ์‹ค์ˆ˜๋กœ ์—ฌ๋Ÿฌ๋ฒˆ ๋ถ€๋ถ„์ทจ์†Œ๋ฅผ ๋ณด๋‚ด์„œ ์—ฌ๋Ÿฌ๋ฒˆ ์ทจ์†Œ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๊ธฐ๋•Œ๋ฌธ์—, ๋ถ€ํŠธํŽ˜์ด์—์„œ๋Š” ๋ถ€๋ถ„์ทจ์†Œ ์ค‘๋ณต ์š”์ฒญ์„ ๋ง‰๊ธฐ ์œ„ํ•ด cancel_id ๋ผ๋Š” ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. cancel_id๋ฅผ ์ง€์ •ํ•˜์‹œ๋ฉด, ํ•ด๋‹น ๊ฑด์— ๋Œ€ํ•ด ์ค‘๋ณต ์š”์ฒญ๋ฐฉ์ง€๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

async function cancel() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try { 
            response = await Bootpay.cancel({
                receiptId: '612df0250d681b001de61de6',
                price: 1000,
                name: '์ทจ์†Œ์ž๋ช…',
                reason: '์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค'                
            })
        } catch (e) {
            console.log(e)
            return
        }
        console.log(response)
    }
}

4. ๋นŒ๋งํ‚ค ๋ฐœ๊ธ‰

REST API ๋ฐฉ์‹์œผ๋กœ ๊ณ ๊ฐ์œผ๋กœ๋ถ€ํ„ฐ ์นด๋“œ ์ •๋ณด๋ฅผ ์ „๋‹ฌํ•˜์—ฌ, PG์‚ฌ์—๊ฒŒ ๋นŒ๋งํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐœ๊ธ‰๋ฐ›์€ ๋นŒ๋งํ‚ค๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ฐ€, ์›ํ•˜๋Š” ์‹œ์ , ์›ํ•˜๋Š” ๊ธˆ์•ก์— ๊ฒฐ์ œ ์Šน์ธ ์š”์ฒญํ•˜์—ฌ ์ข€ ๋” ์ž์œ ๋กœ์šด ๊ฒฐ์ œ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

  • ๋น„์ธ์ฆ ์ •๊ธฐ๊ฒฐ์ œ(REST API) ๋ฐฉ์‹์„ ์ง€์›ํ•˜๋Š” PG์‚ฌ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
async function getBillingKey() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try { 
            response = await Bootpay.requestSubscribeBillingKey({
                orderId: (new Date()).getTime(),
                pg: 'nicepay',
                itemName: '์ •๊ธฐ๊ฒฐ์ œ 30์ผ๊ถŒ',
                cardNo: '[ ์นด๋“œ ๋ฒˆํ˜ธ ]',
                cardPw: '[ ์นด๋“œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•ž 2์ž๋ฆฌ ]',
                expireYear: '[ ์นด๋“œ ๋งŒ๋ฃŒ ์—ฐ๋„ ]',
                expireMonth: '[ ์นด๋“œ ๋งŒ๋ฃŒ ์›” ]',
                identifyNumber: '[ ์นด๋“œ ์†Œ์œ ์ฃผ ์ƒ๋…„์›”์ผ ํ˜น์€ ๋ฒ•์ธ ๋ฒˆํ˜ธ ]',
                extra: {
                    subscribeTestPayment: 1 // 100์› ๊ฒฐ์ œ ํ›„ ๊ฒฐ์ œ๊ฐ€ ๋˜๋ฉด billing key๋ฅผ ๋ฐœํ–‰, ๊ฒฐ์ œ๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์—๋Ÿฌ
                }
            })
        } catch (e) {
            console.log(e)
            return
        }
        console.log(response)
    }
}

4-1. ๋ฐœ๊ธ‰๋œ ๋นŒ๋งํ‚ค๋กœ ๊ฒฐ์ œ ์Šน์ธ ์š”์ฒญ

๋ฐœ๊ธ‰๋œ ๋นŒ๋งํ‚ค๋กœ ์›ํ•˜๋Š” ์‹œ์ ์— ์›ํ•˜๋Š” ๊ธˆ์•ก์œผ๋กœ ๊ฒฐ์ œ ์Šน์ธ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž”์•ก์ด ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ๋„๋‚œ ์นด๋“œ ๋“ฑ์˜ ํŠน๋ณ„ํ•œ ๊ฑด์ด ์•„๋‹ˆ๋ฉด PG์‚ฌ์—์„œ ๊ฒฐ์ œ๋ฅผ ๋ฐ”๋กœ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค.

async function subscribeBilling() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try {
            response = await Bootpay.requestSubscribeBillingPayment({
                billingKey: '612deb53019943001fb52312',
                itemName: 'ํ…Œ์ŠคํŠธ',
                price: 1000,
                orderId: (new Date()).getTime(),
                feedbackUrl: 'https://dev-api.bootpay.co.kr/callback',
                feedbackContentType: 'json'
            })
        } catch (e) {
            return console.log(e)
        }
        console.log(response)
    }
}

4-2. ๋ฐœ๊ธ‰๋œ ๋นŒ๋งํ‚ค๋กœ ๊ฒฐ์ œ ์˜ˆ์•ฝ ์š”์ฒญ

์›ํ•˜๋Š” ์‹œ์ ์— 4-1๋กœ ๊ฒฐ์ œ ์Šน์ธ ์š”์ฒญ์„ ๋ณด๋‚ด๋„ ๋˜์ง€๋งŒ, ๋นŒ๋งํ‚ค ๋ฐœ๊ธ‰ ์ดํ›„์— ๋ฐ”๋กœ ๊ฒฐ์ œ ์˜ˆ์•ฝ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋นŒ๋งํ‚ค๋‹น ์ตœ๋Œ€ 5๊ฑด)

async function subscribeBillingReserve() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try {
            response = await Bootpay.reserveSubscribeBilling({
                billingKey: '612deb53019943001fb52312',
                itemName: 'ํ…Œ์ŠคํŠธ',
                price: 1000,
                orderId: (new Date()).getTime(),
                userInfo: {
                    username: 'ํ…Œ์ŠคํŠธ',
                    phone: '01000000000'
                },
                feedbackUrl: 'https://dev-api.bootpay.co.kr/callback',
                feedbackContentType: 'json',
                schedulerType: 'oneshot',
                executeAt: ((new Date()).getTime() / 1000) + 5
            })
        } catch (e) {
            return console.log(e)
        }
        console.log(response)
    }
}

4-2-1. ๋ฐœ๊ธ‰๋œ ๋นŒ๋งํ‚ค๋กœ ๊ฒฐ์ œ ์˜ˆ์•ฝ - ์ทจ์†Œ ์š”์ฒญ

๋นŒ๋งํ‚ค๋กœ ์˜ˆ์•ฝ๋œ ๊ฒฐ์ œ๊ฑด์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

async function subscribeBillingReserveCancel() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try {            
            response = await Bootpay.destroyReserveSubscribeBilling('612debc70d681b0039e6133d')
            console.log(response)
        } catch (e) {
            return console.log(e)
        }
        console.log(response)
    }
}

4-3. ๋นŒ๋งํ‚ค ์‚ญ์ œ

๋ฐœ๊ธ‰๋œ ๋นŒ๋งํ‚ค๋กœ ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋„๋ก, ์‚ญ์ œ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.

async function deleteBillingKey() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try {            
            response = await Bootpay.destroySubscribeBillingKey('612debc70d681b0039e6133d')
            console.log(response)
        } catch (e) {
            return console.log(e)
        }
        console.log(response)
    }
}

5. (๋ถ€ํŠธํŽ˜์ด ๋‹จ๋… - ๊ฐ„ํŽธ๊ฒฐ์ œ์ฐฝ, ์ƒ์ฒด์ธ์ฆ ๊ธฐ๋ฐ˜์˜ ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ) ์‚ฌ์šฉ์ž ํ† ํฐ ๋ฐœ๊ธ‰

(๋ถ€ํŠธํŽ˜์ด ๋‹จ๋…) ๋ถ€ํŠธํŽ˜์ด์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฐ„ํŽธ๊ฒฐ์ œ์ฐฝ, ์ƒ์ฒด์ธ์ฆ ๊ธฐ๋ฐ˜์˜ ๊ฒฐ์ œ ์‚ฌ์šฉ์„ ์œ„ํ•ด์„œ๋Š” ๊ฐœ๋ฐœ์‚ฌ์—์„œ ํšŒ์› ๊ณ ์œ ๋ฒˆํ˜ธ๋ฅผ ๊ด€๋ฆฌํ•ด์•ผํ•˜๋ฉฐ, ํ•ด๋‹น ํšŒ์›์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ํ† ํฐ์„ ๋ฐœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ† ํฐ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํด๋ผ์ด์–ธํŠธ์—์„œ ๊ฒฐ์ œ์š”์ฒญ ํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค.

async function getUserToken() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try {            
            response = await Bootpay.requestUserToken({
                userId: '1234',
                email: '[email protected]',
                name: 'ํ™๊ธธ๋™'
            })
            console.log(response)
        } catch (e) {
            return console.log(e)
        }
        console.log(response)
    }
}

6. ๊ฒฐ์ œ ๋งํฌ ์ƒ์„ฑ

(๋ถ€ํŠธํŽ˜์ด ๋‹จ๋…) ์š”์ฒญ ํ•˜์‹œ๋ฉด ๊ฒฐ์ œ๋งํฌ๊ฐ€ ๋ฆฌํ„ด๋˜๋ฉฐ, ํ•ด๋‹น url์„ ๊ณ ๊ฐ์—๊ฒŒ ์•ˆ๋‚ด, ๊ฒฐ์ œ ์œ ๋„ํ•˜์—ฌ ๊ฒฐ์ œ๋ฅผ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

async function requestPayment() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try {            
            response = await Bootpay.requestPayment({
                pg: 'kcp',
                method: 'card',
                orderId: (new Date).getTime(),
                price: 1000,
                itemName: 'ํ…Œ์ŠคํŠธ ๋ถ€ํŠธํŽ˜์ด ์ƒํ’ˆ',
                returnUrl: 'https://dev-api.bootpay.co.kr/callback',
                extra: {
                    expire: 30
                }
            })
        } catch (e) {
            return console.log(e)
        }
        console.log(response)
    }
}

7. ์„œ๋ฒ„ ์Šน์ธ ์š”์ฒญ

๊ฒฐ์ œ์Šน์ธ ๋ฐฉ์‹์€ ํด๋ผ์ด์–ธํŠธ ์Šน์ธ ๋ฐฉ์‹๊ณผ, ์„œ๋ฒ„ ์Šน์ธ ๋ฐฉ์‹์œผ๋กœ ์ด 2๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํด๋ผ์ด์–ธํŠธ ์Šน์ธ ๋ฐฉ์‹์€ javascript๋‚˜ native ๋“ฑ์—์„œ confirm ํ•จ์ˆ˜์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค๋งŒ, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์„œ๋ฒ„ ์Šน์ธ ๋ฐฉ์‹์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ์ด์œ 

  1. 100% ์•ˆ์ •์ ์ธ ๊ฒฐ์ œ ํ›„ ๊ณ ๊ฐ ์•ˆ๋‚ด๋ฅผ ์œ„ํ•ด - ํด๋ผ์ด์–ธํŠธ์—์„œ PG๊ฒฐ์ œ ์ง„ํ–‰ ํ›„ ์Šน์ธ ์™„๋ฃŒ๋  ๋•Œ onDone์ด ์ˆ˜ํ–‰๋˜์ง€ ์•Š์•„ (์ธํ„ฐ๋„ท ํ™˜๊ฒฝ ๋“ฑ), ๊ฒฐ์ œ ์ดํ›„ ๊ณ ๊ฐ์—๊ฒŒ ์•ˆ๋‚ดํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
  2. ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์˜ ๊ฐœ๋…์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ - ์žฌ๊ณ ํŒŒ์•…์ด ์ค‘์š”ํ•œ ์ปค๋จธ์Šค๋ฅผ ์šด์˜ํ•  ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜ ๊ฐœ๋…์ด ํ•„์š”ํ•  ์ˆ˜ ์žˆ๊ฒ ์œผ๋ฉฐ, ์ด๋ฅผ ์œ„ํ•ด์„œ๋Š” ์„œ๋ฒ„ ์Šน์ธ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
async function submit() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try {            
            response = await Bootpay.verify('612df0250d681b001de61de6')
        } catch (e) {
            return console.log(e)
        }
        console.log(response)
    }
}

8. ๋ณธ์ธ ์ธ์ฆ ๊ฒฐ๊ณผ ์กฐํšŒ

๋‹ค๋‚  ๋ณธ์ธ์ธ์ฆ ํ›„ ๊ฒฐ๊ณผ๊ฐ’์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋‚  ๋ณธ์ธ์ธ์ฆ์—์„œ ํ†ต์‹ ์‚ฌ, ์™ธ๊ตญ์ธ์—ฌ๋ถ€, ์ „ํ™”๋ฒˆํ˜ธ ์ด 3๊ฐ€์ง€ ์ •๋ณด๋Š” ๋‹ค๋‚ ์— ์ถ”๊ฐ€๋กœ ์š”์ฒญํ•˜์…”์•ผ ๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

async function certificate() {
    const Bootpay = require('bootpay-backend-nodejs').Bootpay
    Bootpay.setConfig(
        '5b8f6a4d396fa665fdc2b5ea',
        'rm6EYECr6aroQVG2ntW0A6LpWnkTgP4uQ3H18sDDUYw='
    )
    let token = await Bootpay.getAccessToken()
    if (token.status === 200) {
        let response
        try {            
            response = await Bootpay.certificate('612df0250d681b001de61de6')
        } catch (e) {
            return console.log(e)
        }
        console.log(response)
    }
}

Example ํ”„๋กœ์ ํŠธ

์ ์šฉํ•œ ์ƒ˜ํ”Œ ํ”„๋กœ์ ํŠธ์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”

Documentation

๋ถ€ํŠธํŽ˜์ด ๊ฐœ๋ฐœ๋งค๋‰ด์–ผ์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”

๊ธฐ์ˆ ๋ฌธ์˜

๋ถ€ํŠธํŽ˜์ด ํ™ˆํŽ˜์ด์ง€ ์šฐ์ธก ํ•˜๋‹จ ์ฑ„ํŒ…์„ ํ†ตํ•ด ๊ธฐ์ˆ ๋ฌธ์˜ ์ฃผ์„ธ์š”!

License

MIT License.

About

bootpay server side package for nodejs

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •