[FE-10] 앱 결제 화면 pre-issued(RECRUITMENT) 진입 모드
작업 내용 (설계 의도)
변경 사항
mobile/app/payment/new.tsx(MO-08)를 확장해 모집 신청 결제를 재사용한다. 기존 흐름은 화면 내부에서 preparePayment(POST /payments/prepare)를 호출하지만, 모집은 신청 API(POST /recruitments/{id}/applications)가 서버에서 이미 결제를 개시해 checkoutUrl·paymentId를 반환한다.
- 라우트 파라미터에
checkoutUrl·paymentId가 오면(pre-issued 모드)preparePayment를 건너뛰고 바로Linking.openURL(checkoutUrl)→getPayment(paymentId)폴링(기존 최대 3회·1초 로직 재사용). orderType='RECRUITMENT'처리(라벨·성공 후 이동 경로 = 내 신청 목록).- 기존 BOOKING/GOODS/TICKETING prepare 경로 무변경.
- 하드코딩 색(
#007AFF등) →useTheme()토큰 리트로핏(라이트/다크 둘 다).
근거: 20260707-...-design-fe-app.md “결제 흐름 재사용 결정”.
롤백: pre-issued 분기 제거(기존 prepare 경로 무영향).
의존
- FE-04 (OrderType RECRUITMENT)
다이어그램
처리 흐름
sequenceDiagram participant S as payment/new participant L as Linking participant A as api/payment.getPayment S->>S: params.checkoutUrl 존재? (pre-issued) alt pre-issued S->>L: openURL(checkoutUrl) else 기존 S->>S: preparePayment → checkoutUrl S->>L: openURL end S->>A: getPayment(paymentId) 폴링 A-->>S: COMPLETED/CANCELLED/FAILED
테스트 케이스
- checkoutUrl 파라미터가 있으면 preparePayment를 호출하지 않고 바로 Linking.openURL한다
- checkoutUrl 파라미터가 없으면 기존 preparePayment 경로를 탄다(하위호환)
- orderType=‘RECRUITMENT’ 완료 시 내 신청 목록으로 이동한다
- COMPLETED/CANCELLED/FAILED 각 분기가 올바른 UI를 낸다
- 라이트/다크 모드에서 하드코딩 색 없이 토큰으로 렌더된다