728x90
결제는 사업자등록번호가 있어야 구현 할 수 있어서
import를 이용한 test 결제로 그냥 성공/실패 시 db에 등록되게 구현할려고 한다
결과





1. view단 javascript 작성
결제 완료시 데이터를 ajax로 보낼 수도 있고, 나 같은 경우는 form 데이터로 보냈다.
/*아임포트 카카오페이 결제*/ $('#paymentBtn').click(function () { var IMP = window.IMP; IMP.init('아임포트 본인 가맹점식별코드'); //DOM객체들에서 사용할 데이터 뽑기 var paymentGoods = $('input[name="paymentOrderName"]').val(); var money = $('.totalprice').text(); var memberName = $('input[name="memberName"]').val(); var memberEmail = $('input[name="memberEmail"]').val(); var memberPhone = $('input[name="memberPhone"]').val(); var len = memberEmail.indexOf("@"); var memberId = memberEmail.substr(0, len); IMP.request_pay({ //카카오페이 결제시 사용할 정보 입력 pg: 'card', paymentCode: 'p' + new Date().getTime()+'_'+memberId, name: paymentGoods, amount: money, buyer_email: memberEmail, buyer_name: memberName, buyer_tel: memberPhone, }, function (rsp) { //결제 완료시 if (rsp.success) { var msg = '결제가 완료되었습니다.'; msg += '카드 승인번호 : ' + rsp.apply_num; /* 만약 데이터들을 ajax로 보낼 시 사용할 코드 $.ajax({ type: "GET", url: "/mypage/mypaymentList/paymentDetail", data: { "amount" : money }, }); */ $('#paymentForm').submit(); } else { //결제 실패시 var msg = '결제에 실패하였습니다.'; msg += '에러내용 : ' + rsp.error_msg; if($('input[name="eClassApprovedSetDate"]').length){ document.location.href="/mypage/mySignUpForClassList"; //alert창 확인 후 이동할 url 설정 }else { document.location.href="/challenge/challengeGather/challengeGatherList"; //alert창 확인 후 이동할 url 설정 } } alert(msg); }); });
2. 결제 mapper 인터페이스 및 xml 쿼리 작성
//결제처리 public void addPayment(Payment payment);
mapper.java
<resultMap type="paymentMethod" id="paymentMethodResultMap"> <id column="paymentMethodCode" property="paymentMethodCode"/> <result column="paymentMethodName" property="paymentMethodName"/> <result column="paymentMethodRegDate" property="paymentMethodRegDate"/> <collection property="member" resultMap="memberResultMap"></collection> </resultMap> <resultMap type="payment" id="paymentResultMap"> <id column="paymentCode" property="paymentCode"/> <result column="paymentGroupCode" property="paymentGroupCode"/> <result column="paymentTotalOrderPrice" property="paymentTotalOrderPrice"/> <result column="paymentUsePoint" property="paymentUsePoint"/> <result column="paymentTotalPayPrice" property="paymentTotalPayPrice"/> <result column="paymentState" property="paymentState"/> <result column="paymentRegDate" property="paymentRegDate"/> <collection property="member" resultMap="memberResultMap"></collection> <collection property="paymentMethod" resultMap="paymentMethodResultMap"></collection> </resultMap> <insert id="addPayment" parameterType="Payment"> INSERT INTO payment ( paymentCode , paymentGroupCode , memberEmail , paymentMethodCode , paymentMethodName , paymentTotalOrderPrice , paymentUsePoint , paymentTotalPayPrice , paymentState , paymentRegDate) VALUES ( #{paymentCode} , #{paymentGroupCode} , #{memberEmail} , #{paymentMethodCode} , #{paymentMethodName} , #{paymentTotalOrderPrice} , #{paymentUsePoint} , #{paymentTotalPayPrice} , '결제완료' , NOW()); </insert>
mapper.xml
3. 결제 service 작성
//결제처리 public int addPayment(Payment payment) { int len = payment.getMemberEmail().indexOf("@"); String memberId = payment.getMemberEmail().substring(0, len); SimpleDateFormat date = new SimpleDateFormat("yyyyMMddhhmmss"); String paymentCode = "p"+date.format(new Date())+"_"+memberId; String paymentMethodCode = paymentMapper.getPaymentMethodCode(payment.getPaymentMethodName()); payment.setPaymentCode(paymentCode); payment.setPaymentMethodCode(paymentMethodCode); paymentMapper.addPayment(payment); return 1; }
4. 결제 controller 작성
//결제처리 @PostMapping("/payment") public String payment(Model model, Payment payment, RedirectAttributes reAttr ,ChallengeGatherPlanDo challengeGatherPlanDo) { model.addAttribute("title", "결제"); String paymentGroupCode =payment.getPaymentGroupCode(); int result = paymentService.addPayment(payment); if(result == 1 && paymentGroupCode.startsWith("c") == true ) { //결제 성공시 챌린지 플랜 insert 처리 challengeEnterService.challengeGatherPlanDoInsert(challengeGatherPlanDo); } //결제 실패시 챌린지 참여 테이블 delete 처리 필요 reAttr.addAttribute("paymentCode", payment.getPaymentCode()); return "redirect:/mypage/mypaymentList/paymentDetail"; }
'Framework > SpringBoot' 카테고리의 다른 글
springboot / coolsms로 문자인증 구현하기(유료) (0) | 2022.04.20 |
---|---|
cafe24 호스팅으로 스프링 프로젝트 배포하기 (0) | 2022.03.21 |
(Stringboot) 🅳 Mybatis 회원 삭제 (0) | 2022.03.18 |
(Springboot) 🆄 Mybatis 회원 수정 화면 및 처리 (0) | 2022.03.18 |
(Springboot) 🅲 Mybatis 회원가입 ID중복검사(ajax), 유효성 검사 (0) | 2022.03.02 |