티스토리 뷰
.잔액조회 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 에서 테스트했던 그대로 입력하면 된다.
동작을 보면
아래 그림과 같이 사용자 계좌 목록을 보여주는 화면에서 잔액조회를 누르게 되면
아래 그림과 같이 잔액이 표시된다.
실제 내 잔액이었으면..
[API] 금융결제원 API 활용하기 #1.앱 등록 및 Key 발급, 사용자 토큰 발급
[API] 금융결제원 API 활용하기 #2. 로그인(jsonwebtoken)
[API] 금융결제원 API 활용하기 #3. 사용자 정보 조회 API
[API] 금융결제원 API 활용하기 #4. 잔액조회 API
[API] 금융결제원 API 활용하기 #5. 거래내역조회 API
'Web > API' 카테고리의 다른 글
[API] 금융결제원 API 활용하기 #6. 계좌 QR코드 생성 (3) | 2020.06.23 |
---|---|
[API] 금융결제원 API 활용하기 #5. 거래내역조회 API (13) | 2020.06.23 |
[API] 금융결제원 API 활용하기 #3. 사용자 정보 조회 API (5) | 2020.06.23 |
[API] 금융결제원 API 활용하기 #2. 로그인(jsonwebtoken) (3) | 2020.06.22 |
[API] 금융결제원 API 활용하기 #1.앱 등록 및 Key 발급, 사용자 토큰 발급 (48) | 2020.06.22 |