diff --git a/src/main/java/com/jobdri/jobdri_api/domain/payment/service/PaymentService.java b/src/main/java/com/jobdri/jobdri_api/domain/payment/service/PaymentService.java index c4307336..603e2e04 100644 --- a/src/main/java/com/jobdri/jobdri_api/domain/payment/service/PaymentService.java +++ b/src/main/java/com/jobdri/jobdri_api/domain/payment/service/PaymentService.java @@ -46,6 +46,7 @@ public class PaymentService { private static final String EXPECTED_PAYMENT_METHOD = "간편결제"; private static final String EXPECTED_EASY_PAY_PROVIDER = "토스페이"; + private static final String ORDER_ID_PREFIX = "jobdri-"; private final UserService userService; private final PaymentRepository paymentRepository; @@ -78,7 +79,7 @@ public PaymentPrepareResponse prepare(User user, PaymentPrepareRequest request) if (provider == PaymentProviderType.PORTONE) { return preparePortOne(validatedUser, plan); } - String orderId = "jobdri-" + UUID.randomUUID(); + String orderId = generateOrderId(); Payment payment = paymentTransactionService.createPendingPayment( validatedUser.getId(), plan, @@ -131,7 +132,7 @@ public PaymentPrepareResponse prepare(User user, PaymentPrepareRequest request) private PaymentPrepareResponse preparePortOne(User validatedUser, CreditPlan plan) { PortOnePrepareData prepareData = portOneClient.prepareData(); - String orderId = "jobdri-" + UUID.randomUUID(); + String orderId = generateOrderId(); Payment payment = paymentTransactionService.createPortOnePendingPayment( validatedUser.getId(), plan, @@ -153,6 +154,10 @@ private PaymentPrepareResponse preparePortOne(User validatedUser, CreditPlan pla ); } + private String generateOrderId() { + return ORDER_ID_PREFIX + UUID.randomUUID().toString().replace("-", ""); + } + @Transactional(propagation = Propagation.NOT_SUPPORTED) public PaymentConfirmResponse confirm(User user, PaymentConfirmRequest request) { User validatedUser = userService.validateUser(user); diff --git a/src/test/java/com/jobdri/jobdri_api/domain/payment/service/PaymentServiceTest.java b/src/test/java/com/jobdri/jobdri_api/domain/payment/service/PaymentServiceTest.java index 5f4666d3..53ee9286 100644 --- a/src/test/java/com/jobdri/jobdri_api/domain/payment/service/PaymentServiceTest.java +++ b/src/test/java/com/jobdri/jobdri_api/domain/payment/service/PaymentServiceTest.java @@ -56,6 +56,7 @@ class PaymentServiceTest { private static final String TEST_PORTONE_WEBHOOK_SECRET = "whsec_dGVzdC13ZWJob29rLXNlY3JldA=="; + private static final String ORDER_ID_PATTERN = "^jobdri-[0-9a-f]{32}$"; @Autowired private PaymentService paymentService; @@ -104,7 +105,7 @@ void prepare() { PaymentPrepareResponse response = paymentService.prepare(user, new PaymentPrepareRequest("FIVE_TIMES")); - assertThat(response.orderId()).startsWith("jobdri-"); + assertThat(response.orderId()).matches(ORDER_ID_PATTERN); assertThat(response.orderName()).isEqualTo("JobDri 크레딧 5회권"); assertThat(response.amount()).isEqualTo(11500); assertThat(response.creditAmount()).isEqualTo(5); @@ -643,6 +644,7 @@ void preparePortOneReturnsPublicSdkParameters() { ); assertThat(response.provider()).isEqualTo(PaymentProviderType.PORTONE); + assertThat(response.orderId()).matches(ORDER_ID_PATTERN); assertThat(response.portOneStoreId()).isEqualTo("store-test"); assertThat(response.portOneChannelKey()).isEqualTo("channel-key-test"); assertThat(response.currency()).isEqualTo("KRW");