Next JS와 Stripe로 스폰서 페이지를 만들어보자
19910 단어 reactjavascriptwebdev
최선을 다하길 바랍니다 🙌
소개
Next JS - Next.js는 서버 측 렌더링 및 정적 웹사이트 생성과 같은 React 기반 웹 애플리케이션 기능을 가능하게 하는 Node.js 위에 구축된 오픈 소스 웹 개발 프레임워크입니다.
Stripe - Stripe는 신용 카드, 디지털 지갑 및 기타 여러 결제 방법을 허용하는 결제 서비스 제공업체입니다.
두 도구 모두 정말 놀라운 것이며 여러분이 좋아할 것이라고 믿습니다.
다음 JS 애플리케이션 설정
React와 마찬가지로 Tailwind CSS를 포함하여 앱 스타일을 지정하는 다음 앱을 만들어 보겠습니다
with-tailwindcss
.npx create-next-app -e with-tailwindcss my-sponsors-site
스트라이프 설정
지불을 수락하기 위해 Stripe을 사용할 것입니다. Stripe로 가서 가입/가입합시다.
*API 키 가져오기 *
짜잔 🎉 이제 1/4 파트를 완성했습니다 🙌
프론트엔드 시대다.
따라서 우리는 간단하고 매끄러운 UI를 사용할 것입니다. 취향에 따라 확실히 변경할 수 있습니다 🍟. 여기에서 디자인을 한 눈에 볼 수 있습니다.
pages/index.tsx
로 이동하여 return()
아래의 모든 코드를 제거하고 그 안에 <>
</>
괄호를 추가합니다. 코드는 다음과 같습니다.import type { NextPage } from 'next'
import Head from 'next/head'
import Image from 'next/image'
const Home: NextPage = () => {
return (
<>
</>
)
}
export default Home
<section className="relative flex flex-wrap lg:h-screen lg:items-center font-sans"></section>
<div className="w-full px-4 py-12 lg:w-1/2 sm:px-6 lg:px-8 sm:py-16 lg:py-24"></div>
텍스트를 추가해 보겠습니다.
<div className="max-w-lg mx-auto text-center">
<h1 className="text-2xl font-bold sm:text-3xl">Sponsor me!</h1>
<p className="mt-4 text-gray-500">
Lorem ipsum dolor sit amet consectetur adipisicing elit.
</p>
</div>
양식 카드 추가
<div className="max-w-md mx-auto mt-8 mb-0 space-y-4">
<div>
<label className="sr-only">Enter amount (USD)</label>
<div className="relative">
<input
type="number"
className="w-full p-4 pr-12 text-sm border-gray-200 rounded-lg shadow-md"
placeholder="Enter amount (USD)"
onChange={e => setAmount(parseInt(e.target.value) * 100)}
/>
<span className="absolute inset-y-0 inline-flex items-center right-4 text-gray-400">
$
</span>
</div>
</div>
<div className="flex items-center justify-between">
<p></p>
<button
className="inline-block px-5 py-3 ml-3 text-sm font-medium text-white bg-blue-500 rounded-lg"
onClick={checkoutSession}
disabled={!amount}
role="link"
>
Sponsor
</button>
</div>
</div>
이 React 상태를 애플리케이션에 추가하고
const [amount, setAmount] = useState<number | null>(0)
새로운 모습 🎉
이미지 추가
컨테이너 DIV 외부와
</section>
의 닫는 태그 바로 위에 또 다른 DIV를 생성해 보겠습니다. <div className="relative w-full h-64 sm:h-96 lg:w-1/2 lg:h-full bg-cover">
<img
className="absolute inset-0 object-cover w-full h-full"
src="bg.webp"
alt="BG"
/>
</div>
이미지 출처 - Dribbble
홈페이지 최종 모습🙌
짜잔 🎉 이제 2/4 파트가 끝났습니다 🙌
Stripe 체크아웃 설정
이 패키지를 설치하십시오
npm i axios @stripe/stripe-js stripe
// OR
yarn add axios @stripe/stripe-js stripe
사용자가 버튼을 클릭하자마자 Stripe를 사용하여 체크아웃을 수행할 예정입니다🤩 기대되시죠?
우선 가장 중요한 것을 설정해야 합니다.
환경 변수 설정
.env.local
파일을 생성하고 SECRET API 키를 저장할 수 있습니다. 변경 사항을 커밋할 때 저장소로 푸시되지 않으므로 .env
파일에 저장하는 이점이 있습니다.STRIPE_SECRET_KEY="stripe secret key"
NEXT_PUBLIC_STRIPE_PUBLIC_KEY="stripe publishable key"
Make sure to restart the server after adding values in the .env.local file
API 엔드포인트 설정
Stripe로 결제를 처리하기 위한 API를 만들어 봅시다. 따라서
pages/api
안에 checkout.js
로 새 파일을 만듭니다.그리고 다음 코드를 추가합니다.
const stripe = require("stripe")(`${process.env.STRIPE_SECRET_KEY}`);
import { NextApiRequest, NextApiResponse } from "next";
const paymentHandler = async (req: NextApiRequest, res: NextApiResponse) => {
const { amount } = req.body;
const url = "http://localhost:3000";
const items = [
{
price_data: {
currency: "usd",
product_data: {
name: `Sponsoring SnowBit`,
},
unit_amount: amount,
},
quantity: 1,
},
];
const session = await stripe.checkout.sessions.create({
line_items: items,
mode: "payment",
success_url: `${url}/success`,
cancel_url: url,
});
res.status(200).json({ id: session.id });
};
export default paymentHandler;
프런트 엔드에 API 구현
함수를 만들어보자
const checkoutSession = async () => {
const stripe = await stripePromise;
const checkoutSession = await axios.post("/api/checkout", {
amount: amount,
});
const result = await stripe?.redirectToCheckout({
sessionId: checkoutSession.data.id,
});
if (result?.error) {
alert(result?.error.message);
}
};
이 두 가지를 Next 애플리케이션으로 가져오기
import { loadStripe } from "@stripe/stripe-js";
import axios from "axios";
stripePromise를 추가할 시간입니다.
const stripePromise = loadStripe(process.env.NEXT_PUBLIC_STRIPE_PUBLIC_KEY!);
이제 결제가 작동합니다 🎉
성공 페이지 만들기
파일
success.tsx
을 만들고 다음 코드를 추가합니다.const ThankYou = () => {
return (
<div className="flex justify-center items-center h-screen">
<h1 className="text-4xl mx-auto animate-bounce font-bold">
Thank you for supporting!
</h1>
</div>
);
};
export default ThankYou;
짜잔 🎉 이제 막 3/4 파트를 마쳤습니다 🙌
테스트
Stripe Testing Cards을 사용하여 결제 테스트
짜잔 🎉 4/4파트 완료 🙌
결론
짜잔! 이제 스폰서 페이지를 만들었습니다.
중요한 링크
GitHub Repository
Twitter를 통해 언제든지 저에게 연락해 주세요 -
🌏 연결하자
Stay tuned for the next article. Stay safe and Happy Coding!
내 콘텐츠가 즐거웠고 도움이 되었으면 이것을 확인하십시오.
표지 이미지 출처 - Dribbble
Reference
이 문제에 관하여(Next JS와 Stripe로 스폰서 페이지를 만들어보자), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dhairyashah/lets-make-a-sponsor-page-with-next-js-and-stripe-4bak텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)