Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 구간합구하기
- 2차원배열 구간합
- pseudo-code
- SQL
- 생성자
- function test
- InterruptException
- Bean LifecCycle
- 슈더코드
- jquery
- MariaDB Query Log
- 마리아DB 쿼리 로그
- interrupted()
- 백준
- select
- 백준 1235번
- this와 this() 차이
- Java
- @NoArgsConstructor
- this
- 상속과 참조
- map()
- @AllArgsConstructor
- 백준 11659번
- 합배열
- ajax
- json
- 백준 11660번
- 구간합
- 자바 람다식
Archives
- Today
- Total
평범한 연구소
[Spring] 카카오페이 API 연동 본문
유료 결제 기능 구현을 위해 카카오페이 API를 사용했다. 아래 공식 문서를 참고하며 작업했다!
아임포트 공식 문서: https://chai-iamport.gitbook.io/iamport/
카카오페이 공식 문서: https://developers.kakao.com/docs/latest/ko/kakaopay/common
준비 사항
아임포트 > 결제 연동 > 테스트/실연동 관리 페이지에서 테스트 연동을 만든다.
https://admin.iamport.kr/auth/signin
javascript
- 본인의 가맹점 식별코드를 넣어준다.
- 카카오페이를 사용한다면, pg에 kakao 또는 kakaopay 로 작성한다.
- 주문번호인 merchant_uid는 고유한 값이어야 하므로 구독권번호+현재시분초밀리초 로 넣어주었다.
- request_pay의 반환값은 JSON형식이다. (데이터는 공식문서 참고)
- 나는 DB에 결제정보를 저장해야하므로 결제 성공 시 동작하는 로직 안에 DB로 데이터를 넣어줄 AJAX를 작성했다.
// 카카오페이 결제 API 진행하기
function execKakaoPay() {
var IMP = window.IMP;
IMP.init("가맹점식별코드");
let selectSub = $("input[name=selectSub]").val(); // 구독권
let email = $("input[name=email]").val();
let name = $("input[name=name]").val();
let price = $("input[name=totalPrice]").val();
let memberNo = $("input[name=memberNo]").val();
let dateSubStart = $("input[name=dateSubStart]").val();
let dateSubEnd = $("input[name=dateSubEnd]").val();
let dateFirstMail = $("input[name=dateFirstMail]").val();
let selectNum; // subType
var today = new Date();
var h = today.getHours().toString();
var min = today.getMinutes().toString();
var s = today.getSeconds().toString();
var m = today.getMilliseconds().toString();
var makeMerchantUid = h + min + s + m;
if(email === "") {
$(".email").focus();
return;
}
if(selectSub === "") {
$(".selectSub").focus();
return;
}
if(price === "") {
$(".price").focus();
return;
}
if(selectSub === "monthSub"){
selectSub = "1개월구독권";
selectNum = "1";
} else if(selectSub === "yearSub") {
selectSub = "12개월구독권";
selectNum = "12";
}
IMP.request_pay({
pg : 'kakaopay',
merchant_uid: selectNum + makeMerchantUid,
name : selectSub,
item_name: selectSub,
amount : price,
buyer_email : email,
buyer_name : name
}, function(rsp) { // callback 로직
console.log(rsp);
if(rsp.success) {
alert("success");
console.log(rsp);
console.log(rsp.imp_uid);
console.log(rsp.merchant_uid);
console.log(rsp.buyer_email);
console.log(rsp.buyer_name);
console.log(rsp.paid_at);
console.log(rsp.paid_amount);
console.log(rsp.pg_tid);
let url = "${pageContext.request.contextPath}/sub/paySuccess";
const fn = function(data) {
console.log(data.msg);
// 결제 내역 페이지로 이동 코드
...
}
// 사용자 정의 ajax 함수 실행
ajaxFun(url, "post", "", "json", fn);
} else {
console.log(rsp);
if(rsp.error_msg) {
console.log(rsp.error_msg);
}
return;
}
});
}
'Spring Framework' 카테고리의 다른 글
[Spring] SOLID 원칙 (0) | 2023.01.10 |
---|---|
[Spring] getOutputStream() 와 getWriter() 를 둘 다 쓴다면? (java.lang.IllegalStateException: getOutputStream() has already been called for this response) (0) | 2023.01.07 |
[Spring] AJAX VO Controller to JSP (AJAX VO객체를 Controller에서 JSP로 보내기) (0) | 2023.01.02 |
[Spring] 스프링 시큐리티 세션, 권한 활용하기 (0) | 2022.12.23 |
[Spring] excel 엑셀 다운로드 하기 (0) | 2022.12.21 |