gimmickbutreal

토스페이먼츠 API Hook 연동 본문

Programming/Spring Boot

토스페이먼츠 API Hook 연동

isshosng 2023. 3. 11. 20:43

WebHook을 사용해 결제상태를 변경할 수 있습니다. 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// lombok 라이브러리를 사용하여 getter, setter 등의 메서드를 자동으로 생성
import lombok.Data;
 
// Hook 클래스 선언
@Data
public class Hook {
 
// createAt: Hook 생성 시간
private String createAt;
 
// secret: Hook 인증을 위한 secret key
private String secret;
 
// status: Hook 처리 결과 상태 (e.g., "주문완료", "주문실패" )
private String status;
 
// transactionKey: Toss 결제 거래 고유 키
private String transactionKey;
 
// orderId: Toss 결제 거래 주문번호
private String orderId;
 
// customerMobilePhone: Toss 결제 거래 고객 휴대폰번호
private String customerMobilePhone;
}
 
 
cs

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@RestController
@RequestMapping("/link")
@RequiredArgsConstructor // 생성자를 통한 의존성 주입을 자동으로 수행
public class HookController {
 
    // 주문 서비스를 의존성 주입(Dependency Injection) 받음
    private final OrderService orderService;
 
    // TossHook 객체를 전달받아 처리하는 POST 요청 핸들러 메서드
    @PostMapping("/order")
    public String orderMessage(@RequestBody Hook hook) {
 
        // hook 객체를 출력하여 확인
        System.out.println("hook : " + hook);
 
        // hook 객체의 주문 상태가 "DONE"일 경우 "주문완료"로 변경하고, 그 외에는 "주문실패"
        if(hook.getStatus().equals("DONE")) {
            hook.setStatus("주문완료");
        } else {
            hook.setStatus("주문실패");
        }
 
        // OrderService를 사용하여 hook 객체의 주문 상태를 업데이트
        orderService.updateOrder(hook.getStatus(), hook.getOrderId());
 
        // 요청 처리 완료를 의미하는 문자열 반환
        return "성공";
    }
}
 
cs