티스토리 뷰

반응형


.잔액조회 API

-  명세서를 읽어보자.

   사용자 계좌의 잔액을 조회하는 API

   요청 메시지 URL 형태와 요청 메시지 명세를 읽어보자.


Header 부분에 Authorization 은 Bearer(token type) + 자신의 access_token 을 입력하면 된다.

access_token 은 사용자 토큰 발급 단계에서 받은 것이다.


bank_tran_id 인 은행거래고유번호는 주석에 링크가 있는데 생성 안내를 보면 아래와 같다.


    


즉, bank_tran_id 는 이용기관코드 + 'U' + 이용기관 부여번호 로 만들어진다.

이용기관 부여번호는 위 설명대로 유일성을 보장해야하므로 값이 계속 변경되어야 한다.

TESTBED 에서는 그냥 순차증가나 난수를 사용하는게 편리하다.

무튼, 이용기관 코드는 금융결제원 테스트베드 홈페이지에서 로그인 후 > 마이페이지 > 회원정보 변경 부분을 보면

이용기관코드를 확인할 수 있다.


다음 fintech_use_num 사용자정보조회 단계에서 확인한 핀테크이용번호이다.

tran_dtime 는 말 그래도 요청 일시.


이제 요청 메시지는 준비가 되었고, postman 으로 request 를 날려보자!

하지만.. 잔액 데이터가 없기 때문에 원하던 response 를 받지 못 할 것이다.



잔액 데이터를 만들어보자.

금융결제원 테스트베드 홈페이지에서 로그인 후 > 마이페이지 > 테스트 데이터 관리 에 가보면

아래와 같은 화면을 볼 수 있는데, 테스트 데이터를 만드는 곳이다.


먼저, 지금은 잔액조회에 필요한 데이터가 없으므로 잔액조회 데이터를 추가해보자.

API 서비스 잔액조회 선택 후 데이터 추가를 누르면 아래와 같은 화면이 나오는데

데이터를 넣어서 추가해보자.


데이터를 추가했으니 다시 잔액조회 API 에 request 를 날려보자!

이번에는 내가 추가한 데이터가 제대로 response 된 것을 볼 수 있다.



만일 아래 그림과 같이 중복된 거래고유번호 입력값이라고 나오는 경우,

이용기관 부여번호를 1 늘려주면 된다. 

예를 들어 아래 이용기관 부여번호가 000000..22 인데 000000..23 으로 올려주면 된다.



이제 postman 에 작성한 정보를 그대로 코드에 옮겨주면 된다.


먼저, 잔액 조회 /balance page 에 들어오면 balance.ejs 파일을 호출해준다.

1
2
3
4
5
6
7
8
/*
Server.js
*/
 
// 잔액 조회
app.get('/balance'function(req, res){
    res.render('balance');
})
cs


balance.ejs 에서는

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!--
balance.ejs
-->
 
    <script>
    function getQueryStringObject() {
        var a = window.location.search.substr(1).split('&');
        if (a == ""return {};
        var b = {};
        for (var i = 0; i < a.length++i) {
            var p = a[i].split('='2);
            if (p.length == 1)
                b[p[0]] = "";
            else
                b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
        }
        return b;
    }
    var qs = getQueryStringObject();
    var jwtToken = sessionStorage.getItem('ourToken');
    $.ajax({
        url:'http://localhost:3000/balance',
        type : 'POST',
        headers : {
            'ourtoken' : jwtToken
        },
        data : {
            fin_use_num : qs.fin_use_num
        },
        success:function(data){
            $("#balanceAmount").text(data.balance_amt)
        }
    })
    </script>
cs

line 19~20) fin_use_num 정보와 jwtToken 을 얻고

line 21~33) /balance 서버로 정보를 넘겨준다.

line 30) response 메시지가 오면 잔액조회 결과를 화면에 출력해준다.


서버단에서는

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
Server.js
*/
 
app.post('/balance', auth, function(req, res){
    var userId = req.decoded.userId;
    var finusenum = req.body.fin_use_num;
    var countnum = Math.floor(Math.random() * 1000000000+ 1;
    var transId = "T991...U" + countnum; 
    var sql = "SELECT * FROM user WHERE id = ?";
 
    connection.query(sql,[userId], function(err, result){
        if(err) throw err;
        var accesstoken = result[0].accesstoken;
        var userseqno = result[0].userseqno;
        var option = {
            method : "GET",
            url : "https://testapi.openbanking.or.kr/v2.0/account/balance/fin_num",
            headers : {
                'Authorization' : 'Bearer ' + accesstoken
            },
            qs : {
                bank_tran_id : transId,
                fintech_use_num : finusenum,
                tran_dtime : '20200610101921'
            }
        }
        request(option, function (error, response, body) {
            var requestResultJSON = JSON.parse(body);
            res.json(requestResultJSON)
        });
    })
})
cs

line 6~9) 사용자 정보 저장

line 8) 이용기관 부여번호는 난수로 설정

line 12~32) 사용자 정보를 DB를 통해 조회하고

line 16~27) 정보를 잔액조회 API request 에 함께 넘겨준다. 

    postman 에서 테스트했던 그대로 입력하면 된다.



동작을 보면 

아래 그림과 같이 사용자 계좌 목록을 보여주는 화면에서 잔액조회를 누르게 되면


아래 그림과 같이 잔액이 표시된다.

실제 내 잔액이었으면..






반응형
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday