[IAMPORT][nodejs] 아임포트(IAMPORT) 간단 사용법
이 글은 2018.7.22 에 작성된 글 입니다.
무료(학습용 및 테스트용) 결제 모듈 API
개발자를 위한 무료 결제연동 API, 아임포트
아임포트를 import하세요. 아임포트의 풍부한 REST API 기능을 이용하면 결제연동이 훨씬 쉬워집니다. 지금 시작하세요.
www.iamport.kr
위 링크 에서 우측상단에 있는 대시보드에 들어가 회원가입후 로그인하도록 하자
대시보드의 시스템설정화면
위의 시스템설정에 자신의 계정의 가맹점식별코드 와 REST API키 REST API secret 키가 있다.
PG사 설정
PG설정 창에는 자기가 원하는 결제를 위한 PG사를 선택할수 있다.
여기서 보통은 KG이니시스가 웬만해선 좋다 대행사라 여러 PG사를 지원해주기 자체적으로 때문에
여기서 네이버페이나 카카오페이만 선택하면 PG사가 하나밖에 없어 결제할때 제한이 따른다.
여러 PG사를 추가할려면 유료이니 이니시스로 하자 ..
그 밑에 Notification은 결제후 " imp_uid, merchant_uid, status " 의 데이터를 위의 URL에 데이터만 넘겨준다.(결제완료페이지를 따로만들어야한다는것)
우측에 있는 호출테스트로 미리 값을 전달해볼수도있다. 이때 당연히 Localhost는 먹히지 않으니 자신의 ip주소를 사용하자
<script type="text/javascript" src="https://code.jquery.com/jquery-1.12.4.min.js" ></script>
<script type="text/javascript" src="https://cdn.iamport.kr/js/iamport.payment-1.1.5.js"></script>
<script>
IMP.init('자신의가맹점_키');
IMP.request_pay({
pg : 'inicis', // version 1.1.0부터 지원.
pay_method : 'card',
merchant_uid : 'merchant_' + new Date().getTime(),
name : '주문명:결제테스트',
amount : 14000, //판매 가격
buyer_email : 'iamport@siot.do',
buyer_name : '구매자이름',
buyer_tel : '010-1234-5678',
buyer_addr : '서울특별시 강남구 삼성동',
buyer_postcode : '123-456'
}, function(rsp) {
if ( rsp.success ) {
var msg = '결제가 완료되었습니다.';
msg += '고유ID : ' + rsp.imp_uid;
msg += '상점 거래ID : ' + rsp.merchant_uid;
msg += '결제 금액 : ' + rsp.paid_amount;
msg += '카드 승인번호 : ' + rsp.apply_num;
} else {
var msg = '결제에 실패하였습니다.';
msg += '에러내용 : ' + rsp.error_msg;
}
alert(msg);
});
위 코드를 자바스크립트에 작성하고 임의의 html파일을 만들어 실행해보면 원하는 결제창이 뜨면서 실제로 결제가 가능하다.
여기서 결제된 실제 금액은 대략 00시 전에 일괄적으로 결제취소로 복구된다.
그럼 이제 결제된 데이터를 API를 통해 가져오는걸 해보자
관리자 페이지 상단에 REST API에 들어가면 다음과같은 페이지가 나올것이다.
여기서 상단에 API키와 API secret키를 방금전 시스템설정에 있는 키값을 들 가져와 토큰을 임시 저장시키자 그후 자기가 결제한 모든 데이터를 조회해보자
payments를 누르고 하단에 status를 누르면 여러가지가 나오게되는데 요청하기 버튼을 누르고
위에 API키를 정상적으로 입력하여 토큰을 저장했다면 정상적인 요청값이 나올것이다.
이걸 서버스크립트(아래 Nodejs)에 넣자면
var Iamport = require('iamport');
var iamport = new Iamport({
impKey: '자신의_API_키',
impSecret: '자신의_APIscret_키'
});
app.get('/payments/status/all',(req,res)=>{
iamport.payment.getByStatus({
payment_status: 'paid'
}).then(function(result){
res.render('payments_list',{list:result.list});
}).catch(function(error){
console.log(error);
red.send(error);
})
});
위에서 만든 모듈로 iamport.payment.getByStatus().then().catch() 으로 사용한다
위 코드에서 result로 데이터값을 콜백형식 2차원배열로 가져온다. 모든 데이터이니 2차원배열, 한 결제의 데이터만 본다면 아마 1차원배열일것이다.
즉 위의 데이터를 그대로 가져온다는 뜻이다.
배열형식이니 적당히 우리가 쓰고싶은 방식으로 풀어서 쓴다면
result.list[0] 첫번재 결제 데이터 값 한줄 으로 가져올수있다는것이다.
수많은 API를 제공해주므로 한번씩 사용하면 금새 적응할수있을것이다.
정말 쉽게 메뉴얼을 만들어주셔서 처음하는 나도 2시간만에 사용법을 대충(?)알게 되었다.