Skip to content

Commit 6bd482d

Browse files
Merge pull request #524 from Podo-Store/develop
[FEAT] 전체 환불, 부분 환불 분기
2 parents c705504 + dad52ba commit 6bd482d

File tree

2 files changed

+19
-19
lines changed

2 files changed

+19
-19
lines changed

src/main/java/PodoeMarket/podoemarket/order/controller/OrderController.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,14 @@ public void purchase(HttpServletRequest req, HttpServletResponse res) throws IOE
4848
String tid = req.getParameter("tid");
4949
String mallReserved = req.getParameter("mallReserved");
5050

51-
log.info("resultCode={}, tid={}, mallReserved={}", resultCode, tid, mallReserved);
52-
5351
if (!"0000".equals(resultCode)) {
5452
res.sendRedirect("https://www.podo-store.com/purchase/abort");
5553
return;
5654
}
5755
OrderRequestDTO dto = new ObjectMapper().readValue(mallReserved, OrderRequestDTO.class);
5856

59-
long orderId = orderService.purchaseProduct(dto, req.getParameter("tid"));
60-
String redirectUrl = String.format("https://podo-store.com/purchase/success?orderId=%d", orderId);
57+
long orderId = orderService.purchaseProduct(dto, tid);
58+
String redirectUrl = String.format("https://www.podo-store.com/purchase/success?orderId=%d", orderId);
6159

6260
res.sendRedirect(redirectUrl);
6361
} catch(Exception e) {

src/main/java/PodoeMarket/podoemarket/profile/service/MypageService.java

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import com.itextpdf.kernel.pdf.canvas.PdfCanvas;
2121
import com.itextpdf.layout.Document;
2222
import com.itextpdf.layout.element.Image;
23-
import org.springframework.cglib.core.Local;
2423
import org.springframework.http.HttpEntity;
2524
import org.springframework.http.HttpHeaders;
2625
import org.springframework.http.MediaType;
@@ -526,11 +525,13 @@ public void refundProcess(final UserEntity userInfo, final RefundRequestDTO dto)
526525
// Nicepay 환불용 orderId 생성
527526
String refundOrderId = generatedRefundOrderId(orderItem.getOrder().getId());
528527

529-
NicepayCancelResponseDTO res = nicepayCancel(
530-
orderItem.getOrder().getTid(),
531-
refundPrice,
532-
refundOrderId,
533-
dto.getReason());
528+
NicepayCancelResponseDTO res;
529+
530+
if(refundPrice == possiblePrice)
531+
res = requestCancelToNicepay(orderItem.getOrder().getTid(), refundOrderId, dto.getReason(), null);
532+
else
533+
res = requestCancelToNicepay(orderItem.getOrder().getTid(), refundOrderId, dto.getReason(), refundPrice);
534+
534535

535536
if(res == null || !"0000".equals(res.getResultCode())) {
536537
String error = (res != null) ? res.getResultMsg() : "환불 실패";
@@ -808,7 +809,7 @@ private String generatedRefundOrderId(final Long orderId) {
808809
return orderId + "-R-" + UUID.randomUUID().toString().substring(0, 8);
809810
}
810811

811-
private NicepayCancelResponseDTO nicepayCancel(String tid, long cancelAmount, String refundOrderId, String reason) {
812+
private NicepayCancelResponseDTO requestCancelToNicepay(String tid, String refundOrderId, String reason, Long cancelAmount) {
812813
try {
813814
String ediDate = OffsetDateTime.now().format(DateTimeFormatter.ISO_OFFSET_DATE_TIME);
814815
String signString = tid + ediDate + secretKey;
@@ -817,13 +818,14 @@ private NicepayCancelResponseDTO nicepayCancel(String tid, long cancelAmount, St
817818
String auth = clientKey + ":" + secretKey;
818819
String encodedKey = Base64.getEncoder().encodeToString(auth.getBytes(StandardCharsets.UTF_8));
819820

820-
Map<String, Object> body = Map.of(
821-
"reason", reason,
822-
"orderId", refundOrderId,
823-
"cancelAmt", cancelAmount,
824-
"ediDate", ediDate,
825-
"signData", signData
826-
);
821+
Map<String, Object> body = new HashMap<>();
822+
body.put("reason", reason);
823+
body.put("orderId", refundOrderId);
824+
body.put("ediDate", ediDate);
825+
body.put("signData", signData);
826+
827+
if (cancelAmount != null) // 부분 취소
828+
body.put("cancelAmount", cancelAmount);
827829

828830
HttpHeaders headers = new HttpHeaders();
829831
headers.setContentType(MediaType.APPLICATION_JSON);
@@ -839,7 +841,7 @@ private NicepayCancelResponseDTO nicepayCancel(String tid, long cancelAmount, St
839841
);
840842

841843
return res.getBody();
842-
} catch (Exception e) {
844+
} catch (Exception e) {
843845
log.error("환불 API 오류 발생", e);
844846
throw new RuntimeException("나이스페이 환불 실패", e);
845847
}

0 commit comments

Comments
 (0)