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 |