Stripe와 NestJS를 사용한 매끄러운 결제 처리 통합 가이드
2025-02-27 18:16:33Stripe와 NestJS를 활용한 결제 처리 시스템 통합
전자상거래가 급성장하면서 결제 처리 시스템의 중요성은 더욱 강조되고 있습니다. Stripe는 전 세계 수많은 기업과 개발자들이 신뢰하는 결제 플랫폼으로, 간단하고 효율적인 결제 처리를 지원합니다. 한편, NestJS는 구조적이며 유지보수가 용이하고 TypeScript를 지원하는 Node.js 프레임워크로 각광받고 있습니다. 이 두 강력한 기술의 결합은 매끄럽고 안정적인 결제 시스템 구축을 가능하게 합니다. 이번 포스트에서는 Stripe를 NestJS 애플리케이션에 통합하는 방법을 다룹니다.
Stripe와 NestJS 통합의 기본
Stripe와 NestJS의 통합은 용이하지만, 몇 가지 중요한 단계를 따를 필요가 있습니다. 이번 섹션에서는 프로젝트 설정부터 Stripe 모듈 구성까지 차근차근 알아보겠습니다.
프로젝트 설정
먼저 새로운 NestJS 프로젝트를 설정하고 Stripe 종속성을 설치합니다. 최신 Node.js 버전과 함께 npm을 사용하여 Nest CLI를 설치하면 시작이 수월합니다.
$ npm i -g @nestjs/cli
$ nest new stripe-nest-tutorial
$ cd stripe-nest-tutorial
$ npm install stripe @nestjs/config
이제 프로젝트 구조를 준비하고, Stripe 및 @nestjs/config 종속성을 설치하였습니다. 환경 설정 파일(.env)을 생성하여 Stripe 보안 키를 설정하십시오:
STRIPE_API_KEY=sk_test_123456...
주의: 실제 키를 공용 저장소에 커밋하지 않도록 주의하세요.
Stripe 모듈 구성
모듈화된 구조는 NestJS의 핵심이며, Stripe 통합에도 이를 적용할 수 있습니다. 다음과 같은 주요 파일들을 생성하여 Stripe 논리를 분리해보겠습니다:
stripe.module.ts: Stripe의 설정 및 서비스를 구성합니다.stripe.service.ts: Stripe SDK와의 직접적인 통신을 처리합니다.stripe.controller.ts: 외부와의 통신을 위한 엔드포인트를 제공합니다.
이제 Stripe 모듈을 다음과 같이 구성합니다:
import { DynamicModule, Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { StripeController } from './stripe.controller';
import { StripeService } from './stripe.service';
@Module({})
export class StripeModule {
static forRootAsync(): DynamicModule {
return {
module: StripeModule,
controllers: [StripeController],
imports: [ConfigModule.forRoot()],
providers: [
StripeService,
{
provide: 'STRIPE_API_KEY',
useFactory: async (configService: ConfigService) =>
configService.get('STRIPE_API_KEY'),
inject: [ConfigService],
},
],
};
}
}
Stripe의 핵심 기능 구현
Stripe 통합에서 필요한 다양한 핵심 기능이 있습니다. 제품 목록 조회, 고객 생성, 결제 의도 생성, 구독, 환불 발급, 결제 링크 생성 등이 주요 기능입니다. 이러한 기능들은 stripe.service.ts에서 구현합니다.
예시: 결제 의도 생성
@Injectable()
export class StripeService {
constructor(@Inject('STRIPE_API_KEY') private readonly stripeApiKey: string) {}
async createPaymentIntent(amount: number, currency: string) {
const stripe = require('stripe')(this.stripeApiKey);
return await stripe.paymentIntents.create({
amount,
currency,
payment_method_types: ['card'],
});
}
}
환경 설정 및 보안
환경 설정을 위해 ConfigModule을 사용하여 Stripe API 키를 주입합니다. 이 키는 외부 환경 변수에서 안전하게 불러옵니다. 이는 보안과 유지보수 측면에서 매우 중요합니다.
결론
Stripe와 NestJS를 사용하면 복잡한 결제 처리 시스템을 단순하고 빠르게 구축할 수 있습니다. 이번 포스트에서 소개된 기본 설정을 바탕으로 웹훅과 보안 개선 등을 통해 추가 기능을 확장할 수 있습니다. 각 단계별 코드를 따라 프로젝트를 완성하고 싶다면, Stripe 공식 문서와 NestJS 문서를 참고하세요.