안녕하세요. 자바로 토스 페이먼츠 연동 테스트 중 문의사항이 있어 연락드렸습니다.
API문서에 쓰여있는 것을 자바로 바꿔서 연동하고 있는데 응답이 404가 오는 것을 확인했습니다.
시크릿 키는 계정에 주어진 키를 사용했으며, 연동 예제인 노드 파일을 기반으로 구현했습니다.
혹시 확인 가능하실까요? 구현 코드는 아래에 적어보겠습니다.
public PaymentService() {
this.webClient = WebClient.builder()
.baseUrl("https://api.tosspayments.com")
.defaultHeader("Content-Type", "application/json")
.build();
}
public Mono<PaymentConfirmationResponseV2> confirmPayment(PaymentConfirmationRequest paymentConfirmationRequest)
throws UnsupportedEncodingException {
String authorizations = encodeSecretKey();
String idempotencyKey = UUID.randomUUID().toString();
return webClient.post()
.uri("/v1/payments/confirm")
.header(HttpHeaders.AUTHORIZATION, authorizations)
.header("Idempotency-Key", idempotencyKey)
.body(Mono.just(paymentConfirmationRequest), PaymentConfirmationRequest.class)
.retrieve()
.bodyToMono(PaymentConfirmationResponseV2.class)
.doOnNext(response -> {
System.out.println("응답 받음: " + response);
})
.doOnError(error -> {
System.out.println("에러 발생: " + error.getMessage());
error.printStackTrace();
});
}
private String encodeSecretKey() throws UnsupportedEncodingException {
Base64.Encoder encoder = Base64.getEncoder();
return "Basic " + Base64.getEncoder().encodeToString((secretKey + ":").getBytes());
}
위와 같이 보내면
404 Not Found from POST https://api.tosspayments.com/v1/payments/confirm
에러가 돌아옵니다. 혹시 어디가 잘못되었을까요?
시크릿 키는 계정에 주어진 키를 사용했으며, 연동 예제인 노드 파일을 기반으로 구현했습니다.
혹시 확인 가능하실까요? 구현 코드는 아래에 적어보겠습니다.
public PaymentService() {
this.webClient = WebClient.builder()
.baseUrl("https://api.tosspayments.com")
.defaultHeader("Content-Type", "application/json")
.build();
}
public Mono<PaymentConfirmationResponseV2> confirmPayment(PaymentConfirmationRequest paymentConfirmationRequest)
throws UnsupportedEncodingException {
String authorizations = encodeSecretKey();
String idempotencyKey = UUID.randomUUID().toString();
return webClient.post()
.uri("/v1/payments/confirm")
.header(HttpHeaders.AUTHORIZATION, authorizations)
.header("Idempotency-Key", idempotencyKey)
.body(Mono.just(paymentConfirmationRequest), PaymentConfirmationRequest.class)
.retrieve()
.bodyToMono(PaymentConfirmationResponseV2.class)
.doOnNext(response -> {
System.out.println("응답 받음: " + response);
})
.doOnError(error -> {
System.out.println("에러 발생: " + error.getMessage());
error.printStackTrace();
});
}
private String encodeSecretKey() throws UnsupportedEncodingException {
Base64.Encoder encoder = Base64.getEncoder();
return "Basic " + Base64.getEncoder().encodeToString((secretKey + ":").getBytes());
}
위와 같이 보내면
404 Not Found from POST https://api.tosspayments.com/v1/payments/confirm
에러가 돌아옵니다. 혹시 어디가 잘못되었을까요?
