PaymentRestController.java
package com.example.orderplatform.payments.api;
import com.example.orderplatform.Money;
import com.example.orderplatform.generated.api.PaymentsApi;
import com.example.orderplatform.generated.model.PaymentAuthorizeRequest;
import com.example.orderplatform.generated.model.PaymentResponse;
import java.util.UUID;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;
@RestController
class PaymentRestController implements PaymentsApi {
private final PaymentManagement payments;
PaymentRestController(PaymentManagement payments) {
this.payments = payments;
}
@Override
public ResponseEntity<PaymentResponse> authorizePayment(PaymentAuthorizeRequest request) {
PaymentSummary payment = payments.authorize(
request.getOrderId(),
Money.of(request.getAmount().getAmount(), request.getAmount().getCurrency()));
return ResponseEntity.ok(toResponse(payment));
}
@Override
public ResponseEntity<PaymentResponse> getPayment(UUID paymentId) {
return ResponseEntity.ok(toResponse(payments.getPayment(paymentId)));
}
private PaymentResponse toResponse(PaymentSummary payment) {
return new PaymentResponse()
.id(payment.id())
.orderId(payment.orderId())
.status(PaymentResponse.StatusEnum.valueOf(payment.status()))
.amount(new com.example.orderplatform.generated.model.Money()
.amount(payment.amount().amount())
.currency(payment.amount().currency()))
.createdAt(payment.createdAt())
.authorizedAt(payment.authorizedAt());
}
}