- 사이드바: AI상품/무료도구/외주의뢰 3그룹 구조로 개편 (ARIA 시맨틱) - 홈페이지: AI 상품 중심 재작성 (히어로+상품카드+무료도구+외주축소) - SEO: 메타데이터·OG태그·JSON-LD를 AI 상품 포지셔닝으로 변경 - 프롬프트 페이지: 프리미엄 상품 5개에 PortOne PaymentButton 연결 - AI 키트 페이지: 월 구독 CTA 2곳에 PaymentButton 연결 - 사주: 유료 전환 복원(4,900원) + PaymentButton 연결 - 코드 품질: 인라인 스타일→globals.css, emoji→SVG, 미사용 데이터 제거 - DB 마이그레이션 005: 전체 18개 상품 등록 SQL 추가 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
57 lines
2.0 KiB
TypeScript
57 lines
2.0 KiB
TypeScript
'use client';
|
|
|
|
import PaymentButton from '@/app/components/PaymentButton';
|
|
import { PRODUCTS } from '@/lib/products';
|
|
|
|
// DB products 테이블에 등록된 상품만 테스트 가능
|
|
const TEST_PRODUCTS = [
|
|
'saju_detail', // 4,900원
|
|
'lotto_gold', // 900원/월
|
|
'lotto_platinum', // 2,900원/월
|
|
'lotto_diamond', // 9,900원/월
|
|
];
|
|
|
|
export default function PaymentTestPage() {
|
|
return (
|
|
<div className="max-w-2xl mx-auto px-6 py-12">
|
|
<div className="mb-8">
|
|
<h1 className="text-2xl font-extrabold text-[#04102b] mb-2">결제 테스트</h1>
|
|
<p className="text-slate-500 text-sm">
|
|
포트원 V2 테스트 모드 — 실제 청구되지 않습니다.
|
|
</p>
|
|
<div className="mt-3 bg-amber-50 border border-amber-200 text-amber-800 text-xs px-4 py-2.5 rounded-xl">
|
|
이 페이지는 관리자 테스트 전용입니다. 배포 전 삭제하세요.
|
|
</div>
|
|
</div>
|
|
|
|
<div className="space-y-4">
|
|
{TEST_PRODUCTS.map((id) => {
|
|
const product = PRODUCTS[id];
|
|
if (!product) return null;
|
|
return (
|
|
<div
|
|
key={id}
|
|
className="flex items-center justify-between bg-white border border-slate-200 rounded-xl px-5 py-4"
|
|
>
|
|
<div>
|
|
<p className="font-semibold text-sm text-slate-800">{product.name}</p>
|
|
<p className="text-xs text-slate-400 mt-0.5">
|
|
{product.price.toLocaleString()}원
|
|
{product.type === 'monthly' && ' / 월'}
|
|
<span className="ml-2 text-slate-300">({id})</span>
|
|
</p>
|
|
</div>
|
|
<PaymentButton
|
|
productId={id}
|
|
className="bg-[#1a56db] hover:bg-[#1e4fc2] text-white px-5 py-2.5 rounded-xl text-sm font-bold transition shadow-lg shadow-blue-600/20"
|
|
>
|
|
결제 테스트
|
|
</PaymentButton>
|
|
</div>
|
|
);
|
|
})}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|