티스토리 뷰

반응형


.거래내역조회 API


이번에는 거래내역조회 API 를 활용해보자.

마찬가지로 명세서를 잘 읽어보자.

사용자가 등록한 계좌의 거래내역을 조회할 수 있고, GET 방식으로 request 를 해주면 되겠다.

그런데.. 요청 메시지에 포함할 항목이 전보다 좀 많다..ㅋㅋㅋ




입력해야하는 항목을 먼저 살펴보면,


Header 부분에

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

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


Paramater 부분에

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

더 자세한 설명은 잔액조회 API 를 참고하면 좋을 것 같다.


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


inquiry_type : 조회를 입,출금 모두 할 것이므로 "A" 로,


inquiry_base : 조회기준은 일자로 "D"


from_date : 조회 시작 일자


to_date : 조회 종료 일자


sort_order : 정렬 순서, 내림차순인 "D"


tran_dtime : 요청 일시


요청 메시지는 이정도면 준비가 된 것 같다.

이제 postman 을 이용해서 response 가 잘 오는지 확인해보자.


으음...!! 시뮬레이터 응답전문 존재하지 않음이라고 나온다.

이것은 거래 내역 데이터가 없어서 발생하는 문제다.



거래 내역 데이터를 추가하러 고고!


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

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


지금은 거래 내역 데이터가 없으므로 거래내역 데이터를 추가해보자.

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

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



테스트니까 간단히 넣어보았다.

이제 다시 postman 으로 가서 request 를 날려보자!


오호~! 이제 잘 나온다.



이제 코드로 그대로 옮겨보자!


사용자 계좌 목록을 보여주는 화면에서 잔액조회를 누르게 되면 



잔액 조회 /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 에는 잔액조회 API 내용도 포함되어 있다.

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<!--
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)
        }
    })
 
    $.ajax({
        url:'http://localhost:3000/transactionlist',
        type : 'POST',
        headers : {
            'ourtoken' : jwtToken
        },
        data : {
            fin_use_num : qs.fin_use_num
        },
        success:function(data){
            for(var i = 0; i < data.res_list.length; i++){
                var element = data.res_list[i]
                $("#transactionList").append(element.print_content+" | "+ element.tran_amt+  "<br>");
            }
        }
    })
    </script>
cs


line 6~34) 잔액조회를 위한 코드


line 36~51) 거래내역 조회

line 37) 서버에 있는 /transactionlist 로 jwtToken 정보와 fin_use_num 을 넘겨준다.

line 45~50) 적절한 response 를 받으면 거래내역을 출력해준다.


Server에서는 balance.ejs 에서 받은 정보를 이용하여 request 를 날려준다.

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
35
36
37
38
39
/*
Server.js
*/
 
app.post('/transactionlist', 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 = "T9916..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/transaction_list/fin_num",
            headers : {
                'Authorization' : 'Bearer ' + accesstoken
            },
            qs : {
                bank_tran_id : transId,
                fintech_use_num : finusenum,
                inquiry_type : 'A',
                inquiry_base : 'D',
                from_date : '20190101',
                to_date : '20190201',
                sort_order : 'D',
                tran_dtime : '20200610101921'
            }
        }
 
        request(option, function (error, response, body) {
            var requestResultJSON = JSON.parse(body);
            res.json(requestResultJSON)
        });
    })
})
cs


line 6) 사용자 ID

line 7) 사용자 fintech_use_num

line 8) 이용기관 부여번호를 난수로 생성

line 9) bank_tran_id, 은행거래고유번호 생성

line 16~32) postman 에 입력했던 정보 그대로 입력해주면 된다.

line 25~30) 이 부분은 페이지에 선택창을 만들어서 받아와도 된다.

    우선은 직접 입력해주었다.


촤란~!

결과를 보면 이제 잔액 조회와 거래 내역 조회가 함께 출력되었다.

직접 만든 테스트 데이터 내용이 그대로 출력된 것을 볼 수 있다.





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