현재 부트캠프에서 만들었던 프로젝트를 리팩토링 하는 중이다.
결제 기능을 만들었는데, 단순 버튼 클릭으로 구현해서 아쉬움이 있었다.
그래서 무료로 제공하는 결제 api를 사용해서 공부해보려고 한다.
아임포트(I'mport)
- 현재는 포트원으로 이름이 바뀌었다
- PG사 결제모듈에 대한 연동 개발을 진행할 때, 다양한 개발환경에서 보다 쉽고 빠르게 개발할 수 있도록 제공되는 결제 플랫폼 혹은 결제 호스팅 서비스
PG(Payment gateway)
- 온라인 쇼핑몰의 경우, PG사와의 계약을 통해 전자결제서비스를 구축해야만 거래가 가능
- PG사는 신용카드사와 직접 계약하기 어려운 온라인 쇼핑몰을 대신해 결제와 정산 업무를 대행해 주는 업체
- PG사와 계약을 하면, 카드결제, 휴대폰 결제, 계좌이체, 무통장입금 등 다양한 결제 수단을 쇼핑몰 방문 고객에게 제공
(출처)
구현
개발 환경
Spring Boot, java, maven
아임포트 계정 생성
결제 연동 -> 연동 정보 -> API Keys
REST API Key, REST API SECRET 확인
채널 관리 -> 테스트 -> 채널 추가
많이 선택하는 KG이니시스로 결정했다.
Spring 설정
pom.xml에 의존성 추가
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.iamport</groupId>
<artifactId>iamport-rest-client-java</artifactId>
<version>0.2.23</version>
</dependency>
</dependencies>
PaymentController
@RestController
@RequestMapping("/api/payment")
@Slf4j
public class PaymentController {
private IamportClient iamportClient;
@Value("${imp.apiKey}")
private String apiKey;
@Value("${imp.secretkey}")
private String secretKey;
@PostConstruct
public void init() {
this.iamportClient = new IamportClient(apiKey, secretKey);
}
}
두 API KEY를 인자로 넘겨서 IamportClient 객체를 생성하면, 이 객체를 통해 iamport 함수들을 사용할 수 있다.
imp_uid : 고객사 식별코드
@PostMapping("/validate/{imp_uid}")
public IamportResponse<Payment> validateIamport(@PathVariable String imp_uid) throws IamportResponseException, IOException {
IamportResponse<Payment> payment = iamportClient.paymentByImpUid(imp_uid);
log.info("결제 요청 응답. 결제 내역 - 주문 번호: {}", payment.getResponse().getMerchantUid());
return payment;
}
'프로젝트' 카테고리의 다른 글
| <![CDATA[]]> 기존 코드 리팩토링 (0) | 2025.02.19 |
|---|---|
| Vue.js (Vue3) 결제 API 포트원 (아임포트) 구현하면서 리팩토링 (0) | 2025.02.03 |
| VSCode에서 GitHub에 프로젝트 올리기 (0) | 2025.01.20 |
| Vue.js (Vue 3) Bootstrap 적용 (0) | 2025.01.17 |
| Vue.js (Vue 3) ESLint & Prettier 설정 (0) | 2025.01.15 |