본문 바로가기
Spring

[Spring] 아임포트로 결제모듈 DB 연동

by jane.dev 2021. 11. 5.
반응형

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);
	}