반응형
2021.11.04 - [Spring] - [Spring] I'mport;(아임포트) 결제모듈로 모의결제
[Spring] I'mport;(아임포트) 결제모듈로 모의결제
https://www.iamport.kr 온라인 비즈니스의 모든 결제를 한곳에서, 아임포트 결제의 시작부터 비즈니스의 성장까지 아임포트와 함께하세요 www.iamport.kr 1. 아임포트에 접속해서 로그인 클릭 2. 관리자
wheneveryouwantsz.tistory.com
위에서 작성한 결제모듈에 DB를 연동해 결제된 내역과 관련된 데이터를 테이블에 저장
기본적인 세팅 후 json 데이터 처리를 위한 라이브러리 추가
Jackson Databind
pay.jsp
주문 페이지 내용에서 결제 성공시 로직을 아래와 같이 수정
function(rsp){
let msg;
if(rsp.success){ // 결제 요청에 성공하면 true를 반환
$.ajax({
type: 'post',
url: '/order', // 주소
headers: {
"Content-Type":"application/json",
"X-HTTP-Method-Override":"POST"
},
dataType: "text",
// 비동기 요청으로 주문번호, 상품명, 가격을 DB에 넣도록 요청
data: JSON.stringify({
merchant_uid: merchant_uid,
itemName: name,
amount: amount
}),
success: function(){
alert(name + " 결제가 완료되었습니다.");
console.log("결제완료됨")
}
});
}else{
msg = "결제에 실패했습니다. ";
msg += "실패 사유: " + rsp.error_msg;
alert(msg);
}
});
테이블 생성(Oracle DB)
비동기 요청으로 데이터베이스에 저장할 내용으로 테이블 작성
CREATE TABLE pay_tbl(
merchant_uid VARCHAR(100) NOT NULL PRIMARY KEY,
itemName VARCHAR(100) NOT NULL,
amount NUMBER NOT NULL
);
PayVO.java
위에서 생성한 테이블 정보를 담은 VO객체 생성
@Data
public class PayVO{
private String merchant_uid;
private String itemName;
private Long amount;
}
PayMapper.java
public interface PayMapper {
public void insertPay(PayVO vo);
}
PayMapper.xml
INSERT 구문을 생성
<mapper namespace="org.ict.mapper.PayMapper">
<insert id="insertPay">
INSERT INTO pay_tbl (merchant_uid, itemName, amount)
VALUES (#{merchant_uid}, #{itemName}, #{amount})
</insert>
</mapper>
PayService.java
public interface PayService {
public void insertPay(PayVO vo);
}
PayServiceImpl.java
@Service
@AllArgsConstructor
public class PayServiceImpl implements PayService{
@Autowired
private PayMapper mapper;
@Override
public void insertPay(PayVO vo) {
mapper.insertPay(vo);
}
}
HomeController.java
서비스를 호출하고 비동기로 작성한 '/order' 주소에 대해 POST로 처리할 수 있도록함
@Controller
public class HomeController {
@Autowired
private PayService service;
@GetMapping("/pay")
public void pay() {
}
@ResponseBody
@PostMapping(value="/order", consumes="application/json",
produces={MediaType.TEXT_PLAIN_VALUE})
public ResponseEntity<String> orderInsert(@RequestBody PayVO vo){
service.insertPay(vo);
return new ResponseEntity<String>("success", HttpStatus.OK);
}
'Spring' 카테고리의 다른 글
[Spring] CSRF 공격과 token을 사용한 방어 (0) | 2021.11.07 |
---|---|
[Spring] 프로젝트 git clone / import 후 src/test/java가 보이지 않을 때 (0) | 2021.11.06 |
[Spring] I'mport;(아임포트) 결제모듈로 모의결제 (0) | 2021.11.04 |
[Spring] Spring Security 접근제한 페이지 커스텀 (0) | 2021.11.03 |
[Spring] ajax를 이용해 파일 업로드 시 문제점 보완 (0) | 2021.10.13 |