반응형
서비스 종료 안내 (6/26/2024)
더이상 해당 URL에 서비스를 하지 않습니다.
https://quotation-api-cdn.dunamu.com/v1/forex/recent?codes=FRX.KRWUSD
아쉽게도 더이상 환율 API는 운영되지 않습니다.
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 예제 파일 ]
[ 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로 환율보기
반응형
'WEB언어 > PHP' 카테고리의 다른 글
[PHP] 소수점 이하 2 자리까지 표시하기 (예: $ 1.10 ) (0) | 2019.10.23 |
---|---|
PhpStome UI 다크모드 사용하기 (JetBrain제품들 다 지원- Darcula) (0) | 2019.10.10 |
IIS + PHP에서 알수 없는 500번 오류 (0) | 2019.10.05 |
[PHP] break / return / exit 차이점 (2) | 2019.07.31 |
PHP7에서 mysql_connect 를 mysqli_connect 로 사용 (0) | 2018.12.05 |
PHP 현재 자신의 파일명 가져오기 basename($_SERVER['PHP_SELF']); (0) | 2018.05.15 |
php 이미지 자르기(crop) 만들기 (0) | 2018.05.09 |
[펌] PHP 7.0에서 새로 나온 NULL 병합 연산자 - ?? (0) | 2018.04.14 |
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)
(로그인하지 않으셔도 가능)