Web/Node.js

Node.JS 카카오페이 API 사용하기

_sparrow 2020. 6. 18. 10:00
반응형

# 필요한 모듈

node.js에서 curl 사용하기 위한 request 모듈들

const  request = require('request');
const request = require('request-promise-native');

request-promise-native 모듈은 promise 혹은 Async & Await를 통한 비동기처리를 하기위한 모듈이다.
하지만 둘다 설치해야 사용할수있음.

 

request모듈을 사용하기위한 기본적인 옵션들 선언

    let headers = {
        'Authorization': 'KakaoAK '+'Admin Key',
        'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
    };

    let params = {
        'cid': 'TC0ONETIME', // 테스트 코드
        'partner_order_id': '423423',
        'partner_user_id': '---',
        'item_name': '물품',
        'quantity': 1,
        'total_amount': 20000,
        'vat_amount': 200,
        'tax_free_amount': 0,
        'approval_url': 'localhost/payment/approve',
        'fail_url': 'localhost/payment/fail',
        'cancel_url': 'localhost/payment/cancel',
    };

    let options = {
        url: 'https://kapi.kakao.com/v1/payment/ready',
        method: 'POST',
        headers: headers,
        form: params
    };

 

 

1. 기본적인 callback방식 카카오페이 API 처리

- AJAX를 통해서 카카오API에서 받아온 정보를 다시 클라이언트에 전송하려고 했지만 내가 못하는건지 콜백방식 비동기처리라 그런지 전송하는게 안됐음 그래서 처음 그대로의 코드를 올림

 

const request = require('request'); //모듈

   function callback(error, response, body) {
        // console.log(error);
        if (!error && response.statusCode === 200) {
            console.log(JSON.parse(body));
            return JSON.parse(body);
        }
    }
    
    request(options, callback);

 

2. Promise then을 사용한 체이닝 방식 카카오페이 API 처리

- promise의 장점은 콜백방식보다 가독성이 좋은것도 있지만 비동기 처리이후의 처리를 then메소드를 사용해서 처리할 수 있다는게 큰 장점이다.

get_info().then 메소드가 바로 적혀있어서 get_info()선언을 따로 안해줘도 됨.

Promise 공부하기 Promise 사용방법 Promise.then() 메소드

const request = require('request-promise-native'); // 모듈

    function get_info(){
        return new Promise(function(resolve, reject){
            request(options, function (error, response, body) {
                if (error) return reject(error);
                try {
                    resolve(JSON.parse(body));
                } catch(e) {
                    reject(e);
                }
            });
        });
    }

    get_info().then(function(val) {
        console.log(val);
        return res.json(val);
    }).catch(function(err) {
        console.err(err);
    });

 

3. Async & Await 방식 카카오페이 API 처리

- Async & Await방식은 Promise처럼 따로 콜백부분처리이후를 then메소드로 작성해서 처리하지않고 처리된 request메소드의 값을 변수 선언을 해서 이어서 처리할 수 있게 해준다.

Async 공부하기

const request = require('request-promise-native'); // 모듈

    async function get_info(){
        try {
            let result = await request(options, function (error, response, body) {
                if (!error && response.statusCode === 200) {
                    return body;
                }
            });
            
            return res.json(JSON.parse(result));
        }
        catch (e) {
            console.log(e)
        }
    }
    
    get_info();

 

res.json()과 res.send() 아래 링크를 참고해주세요

 

https://haeguri.github.io/2018/12/30/compare-response-json-send-func/

반응형

'Web > Node.js' 카테고리의 다른 글

node, npm 버전 관리  (0) 2021.03.04
Moment.js 시간표기와 시간 차이 구하기  (0) 2020.07.05
Node.js HTTPS 서버 작동하기  (0) 2020.07.04
노드몬(Nodemon) 강제종료하기  (0) 2020.05.20
express 모듈 활용 정적 파일  (0) 2020.01.16