WEB언어/PHP

[PHP] 하나 은행 환율 API를 통한 JSON

saltdoll 2018. 12. 6. 09:28
반응형

KEB 하나은행의 환율 API을 값을 기반으로 PHP 화면을 만들어 보았습니다.

jQuery Mobile에 추가하기 위해서, PHP버전용으로 작업을 했습니다.  

아래의 jQuery용에서 Onload등 jQuery Mobile 환경에서 처리가 안되는 부분들이 있어서, 

PHP로 변경 작업을 진행했답니다.


PHP의 curl_init()을 이용한 환율변환

  PHP버전 소스

function get($url){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $result = curl_exec($ch);
    if(curl_errno($ch)){
        throw new Exception(curl_error($ch));
    }
    curl_close($ch);
    return $result;
}


////API Url
$url = 'https://quotation-api-cdn.dunamu.com/v1/forex/recent?codes=FRX.KRWUSD';
$result = get($url);
$data = json_decode($result,ture);
$data = $data[0];

//echo $result;
$_provider = $data['provider'];

$_buying = $data['cashBuyingPrice'];
$_selling = $data['cashSellingPrice'];
$_ttselling = $data['ttSellingPrice'];
$_ttbuyling = $data['ttBuyingPrice'];
$_usd = $data['basePrice'];
$_openusd = $data['openingPrice'];
$_chusd = $data['changePrice'];
$_openusd_o = $_usd - $_openusd;
$_openusd_op = ($_chusd/$_usd)*100;
$_openusd = round($_openusd,2);

if ($_openusd_o > 0) {
$_openusd_p = '<font color="#ff0000">+'.sprintf('%0.2f',$_usd).' 원 <small>▲ +' .sprintf('%0.2f',$_chusd).'원 ('.sprintf('%0.2f',$_openusd_op).'%) </small></font>';
} else if ($_openusd_o < 0) {
$_openusd_p = '<font color="#0051c7">'.$_usd.' 원 <small>▼ ' .sprintf('%0.2f',$_chusd).'원 ('.sprintf('%0.2f',$_openusd_op).'%) </small></font>';
} else {
$_openusd_p = $_usd.' 원 ' .sprintf('%0.2f',$_chusd).'원 ('.sprintf('%0.2f',$_openusd_op).'%)';
}
$_datenew = $data['date'].' '.$data['time'];



[출력부분]

<ul data-role="listview" data-count-theme="b" data-inset="true">
<li><h2><?=$_provider?></h2></li>
<li style="font-size: 14pt">환율 기준 (1 미국 달러)<br><?=$_openusd_p?></font></li>
<li style="font-size: 12pt">살때 : <?=sprintf('%0.2f',$_buying)?><br> 팔때 : <?=sprintf('%0.2f',$_selling)?><br> 보낼때 : <font color="#ff0000"><b><?=sprintf('%0.2f',$_selling)?></b></font><br> 받을때 : <?=sprintf('%0.2f',$_ttbuyling)?></li>
<li style="color:gray">Date: <?=$_datenew?></li> </ul> 


[ PHP 화면 (jQuery Mobile화면) ]



jQuery를 이용한 환율 보여주기

하나은행에서 지원하는 API를 jQuery를 이용해서 화면에 처리하는 예제입니다.

10초마다, 변경이 이루저게 작업을함.

jQuery버전은 1.4버전의 예제입니다. jQuery 버전은 올려도 처리에는 문제가 되지 않습니다.



[ Javascript 예제 파일 ]
usdkrw_api.html

[ javascriprt 소스 ] usdkrw_api.html 소스 내용 (CSS제외)

 <script src="https://code.jquery.com/jquery-1.4.4.min.js"></script>

<script>
// 전역 변수 세팅
var usd = 0;
var alert_array = new Array();            

// 천단위 콤마 함수
function numberWithCommas(x) {
     return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

// 숫자 외 문자열 제거 함수
function numberDeleteChar(x) {
     return x.toString().replace(/[^0-9]+/g, '');
}


// https://quotation-api-cdn.dunamu.com/v1/forex/recent?codes=FRX.KRWUSD 참고
// 달러 환율 함수 (ajax 동기식) <2017.09.18 수정>

function usdkrw(){
    $.get('https://quotation-api-cdn.dunamu.com/v1/forex/recent?codes=FRX.KRWUSD',                 function(data) {

             var data = data[0];
             var buying = data['cashBuyingPrice'];
             var selling = data['cashSellingPrice'];
             var ttselling = data['ttSellingPrice'];
             var ttbuyling = data['ttBuyingPrice'];
             var usd = data['basePrice'];
             var openusd = data['openingPrice'];
             var chusd = data['changePrice'];

             openusd_o = usd - openusd;
             openusd_op = (chusd/usd)*100;
             openusd = openusd.toFixed(2);

             if (openusd_o > 0) {
openusd_p = '<font color="#ff0000">+' + usd + ' 원 <small>▲ +' + chusd.toFixed(2) + '원 (' + openusd_op.toFixed(2) + '%) </small></font>';

             } else if (openusd_o < 0) {
openusd_p = '<font color="#0051c7">' + usd + ' 원 <small>▼ ' + chusd.toFixed(2) + '원 (' + openusd_op.toFixed(2) + '%) </small></font>';

             } else {
 openusd_p = usd + ' 원 ' + chusd.toFixed(2) + '원 (' + openusd_op.toFixed(2) + '%)';
             }

             var datenew = data['date'] + ' ' + data['time']               
             $('#USDKRW').html('환율 기준 (1 미국 달러)<br>' + openusd_p);
             $('#USDKRW_box').html('살때 : ' + buying.toFixed(2) + '<br>팔때 : ' + selling.toFixed(2) + '<br>보낼때 : <font color="#ff0000"><b>' + selling.toFixed(2) + '</b></font><br>받을때 : ' + ttbuyling.toFixed(2) + '')

             $("#lastUpdate").html(datenew);

   });
}


// 달러 환율 함수 (ajax 동기식) <2017.09.18 수정>
function usdkrw__(){

     $.get('http://api.manana.kr/exchange/rate/KRW/USD.json', function(data) {
         var data = data[0];
         var datenow = data['date'];
         var usd = data['rate'];               
         $('#USDKRW').html('환율 기준 (1 미국 달러)<br>' + usd.toFixed(2) + '원');
     });
}


// 현재 시간 갱신
function CurrentTime() {
     var d = new Date();
     $("#lastUpdate+").html(d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds());          }

            

// 환율 갱신 함수
function prouk() {
    try {
        usdkrw(); // 환율
        CurrentTime(); // 갱신 시간
    } catch(e){                    

    } finally {
       setTimeout("prouk()", 60000); //60초후 재시작
    }
}

</script>

 
   HTML 코드 부분
<body onLoad="prouk()">
<div class=usdarea>
<!-- 환율 정보 -->
<h2>KEB 하나은행</h2>
<div id="USDKRW"></div>
<div id="USDKRW_box"></div>
<p id="lastUpdate"></p>
</div>
</body>


[ 예제 파일 화면 ]


참고: 하나은행 API로 환율보기 

반응형