Project
[Toss] 잔액 사용 확인(1)
sangyunpark
2023. 8. 25. 23:20
GET /transaction/{transactionId}
파라미터 : 거래 아이디
실패 응답 : 해당 거래 아이디가 없는 경우 실패 응답
성공 응답 : 계좌 번호, 거래종류(잔액 사용, 사용 취소), 거래 결과 코드(성공/실패), 거래 아이디, 거래 금액, 거래일시
실패한 거래(사용/사용취소)도 거래를 확인할 수 있다.
요청
GET /transaction/{transactionId}
응답
{
"accountNumber" : "1000000000",
"transactionType" : "USE",
"transactionResult" : "S",
"transactionId": "asdfasfadsf213dasf",
"amount" : 1000,
"transactionAt" : "2022-06-01T23:26:14.12321"
}
Controller
@GetMapping("/transaction")
public TransactionInfo.Response getTransactionByTransactionId(@Valid @RequestParam("id") String id){
return TransactionInfo.Response.from(
transactionService.getTransactionByTransactionId(id)
);
}
Service
@Transactional
public TransactionDto getTransactionByTransactionId(String transactionId){
Transaction transaction = transactionRepository.findByTransactionId(transactionId)
.orElseThrow(() -> new AccountException(ErrorCode.TRANSACTION_NOT_FOUND));
return TransactionDto.fromEntity(
transaction
);
}
TransactionInfo
package com.example.account.dto;
import com.example.account.type.TransactionResultType;
import com.example.account.type.TransactionType;
import jakarta.validation.constraints.NotNull;
import lombok.*;
import java.time.LocalDateTime;
public class TransactionInfo {
@Getter
@Setter
@AllArgsConstructor
public static class Request {
@NotNull
private String transactionId;
}
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@Builder
public static class Response{
private String accountNumber;
private TransactionType transactionType;
private TransactionResultType transactionResultType;
private String transactionId;
private Long amount;
private LocalDateTime transactionAt;
public static Response from(TransactionDto transactionDto){
return Response.builder()
.accountNumber(transactionDto.getAccountNumber())
.transactionType(transactionDto.getTransactionType())
.transactionResultType(transactionDto.getTransactionResultType())
.transactionId(transactionDto.getTransactionId())
.amount(transactionDto.getAmount())
.transactionAt(transactionDto.getTransactedAt())
.build();
}
}
}