[API] 금융결제원 API 활용하기 #5. 거래내역조회 API
.거래내역조회 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) 이 부분은 페이지에 선택창을 만들어서 받아와도 된다.
우선은 직접 입력해주었다.
촤란~!
결과를 보면 이제 잔액 조회와 거래 내역 조회가 함께 출력되었다.
직접 만든 테스트 데이터 내용이 그대로 출력된 것을 볼 수 있다.
[API] 금융결제원 API 활용하기 #1.앱 등록 및 Key 발급, 사용자 토큰 발급
[API] 금융결제원 API 활용하기 #2. 로그인(jsonwebtoken)
[API] 금융결제원 API 활용하기 #3. 사용자 정보 조회 API
[API] 금융결제원 API 활용하기 #4. 잔액조회 API
[API] 금융결제원 API 활용하기 #5. 거래내역조회 API