212
2016-08-04 10:17:23
4
5133

무료결제시스템 API 사용중에 기능 호출이 안됩니다.....


안녕하세요. 아임포트에서 제공하는 무료 API를 사용하는 중에 문제가 발생했습니다.

아임포트에서는

<script type="text/javascript" src="https://service.iamport.kr/js/iamport.payment-1.1.1.js"></script>
var IMP = window.IMP;
IMP.init('가맹점식별코드');
IMP.request_pay({
    pg : 'inicis', // version 1.1.0부터 지원.
        /*
            'kakao':카카오페이,
            'inicis':이니시스, 'html5_inicis':이니시스(웹표준결제),
            'nice':나이스,
            'jtnet':jtnet,
            'uplus':LG유플러스
        */
    pay_method : 'card', // 'card' : 신용카드 | 'trans' : 실시간계좌이체 | 'vbank' : 가상계좌 | 'phone' : 휴대폰소액결제
    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',
    app_scheme : 'iamporttest' //in app browser결제에서만 사용 
}, 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;
    }
});</script>

를 호출하면 각 PG사의 결제창이 뜬다고 나옵니다.

하지만 제가

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://service.iamport.kr/js/iamport.payment-1.1.1.js">
var IMP = window.IMP;
var IMP_param = IMP.object_param();

IMP_param.pg = ${request.pg};
IMP_param.pay_method = ${request.pay_method};
IMP_param.amount = ${request.total_price2};
IMP_param.merchant_uid = '';
IMP_param.buyer_email = ${request.email};
IMP_param.buyer_name = ${request.name};
IMP_param.buyer_tel = ${request.phone};
IMP_param.buyer_addr = ${request.address};
IMP_param.buyer_postcode = ${request.zipcode};
IMP.init('imp32851262');

IMP.request_pay(IMP_param, 
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;
    }
});
</script>
<title>Insert title here</title>
</head>
<body>
<c:if test='${rsp.success==true }'>
	<meta http-equiv="Refresh" content="0;url=/RentPayment/Payment/insert.do">
</c:if>
<c:if test='${rsp.success==false }'>
	결제 실패 ㅠㅠ
</c:if>
</body>
</html>

를 이용해서 호출하려고 했는데 아래의 에러가 뜹니다.

oracle db의 테이블에 insert하는 것은 아임포트에 문의해봐야겠지만 이렇게 되면 결제창은 띄워져야 되는 것 아닐까요?


부디 해결책이 있으신분들은 도와주시기 바랍니다.

0
  • 답변 4

  • zepinos
    21k
    2016-08-04 10:28:53

    오라클 insert 쿼리 오류 같은데요...


    직접 oracle 에 값을 넣는게 없나요?


  • 212
    2016-08-04 10:34:25

    insert쿼리오류는 프로젝트 진행하면서 차차 수정해야 합니다;;

    웹의 uri를 보면, 제가 작성한 JSP파일(두번째 코드)이 실행되었다는 것인데 여기의 IMP.request_pay는 실행이 안되는건가요?

  • zepinos
    21k
    2016-08-04 11:03:12

    이제 대충 윤곽이 보이네요. 일단 아래 캡처 이미지가 작아서 두번째 소스인지 알 수가 없어요.

    그리고, <c:if> 을 이용해서 res.success 을 비교하는데 안의 비교 대상은 res...즉 javascript 개체입니다.
    <c:if> 는 jstl 이라서 서버에서 먼저 실행되는 놈이고, javascript 는 서버에서 실행할꺼 다 실행하고 마지막에 클라이언트 브라우져로 보내진 다음 실행되는 것입니다. 그래서 저 비교문 자체가 생각하는 의도처럼 동작 안합니다.
    원하는 형태대로 동작하려면 <script> 안에서 if (res.success) 안에서 <meta> 내용의 이동 대신에 location.href 나 location.replace 같은 걸로 이동하도록 수정해야 합니다. 그리고 이동할 때 매개변수도 가지고 가도록 수정해야 하지 않을까요? 이동된 insert.do 에서 입력할 때 어떤 값을 이용해서 넣어야 할 것 같은데...일단 오류는 insert.do 을 실행하면서 나는 걸로 예측되네요.

  • 212
    2016-08-04 11:36:58

    흠.... 알겠습니다ㅠㅠ

    여기저기 손볼곳이 많군요. 정성스런 답변 감사합니다!!!^^

  • 로그인을 하시면 답변을 등록할 수 있습니다.