Build a Payment Gateway with Django and PayPal Guide
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Django와 PayPal을 사용한 결제 게이트웨이 구축 가이드

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

웹 개발

대상자

- Python, Django, REST API에 대한 기초 지식을 가진 웹 개발자

- 결제 시스템 구축을 목표로 하는 중급 이상 개발자

- 테스트 환경 및 프로덕션 환경 구성을 이해하고자 하는 개발자

핵심 요약

  • Django 5.0.6PayPal REST SDK 1.13.1을 사용하여 결제 게이트웨이 API를 구축
  • .env 파일을 통해 PAYPAL_CLIENT_IDPAYPAL_CLIENT_SECRET과 같은 민감 정보를 안전하게 관리
  • Payment 모델을 통해 결제 상태(created, approved, completed, failed)를 추적
  • PaymentCreateView, PaymentStatusView, PaymentExecuteView 뷰를 통해 결제 생성, 상태 확인, 실행 흐름 처리

섹션별 세부 요약

1. 환경 설정

- Python 3.12, Django 5.0.6, PostgreSQL 16 설치 필요

- PayPal Developer 계정을 통해 API 인증 정보(CLIENT_ID, SECRET) 발급

- .env 파일에 데이터베이스 및 PayPal 인증 정보 저장

2. 프로젝트 초기화

- 가상 환경 생성 및 의존성 설치:

```bash

pip install django==5.0.6 djangorestframework==3.15.1 paypalrestsdk==1.13.1

```

- payment_gateway 프로젝트 생성 및 payments 앱 추가

3. 설정 구성

- PayPal 모드 설정 (sandbox 또는 live)

- Whitenoise 미들웨어를 통해 정적 파일 호스팅

- PostgreSQL 데이터베이스 연결 설정 및 마이그레이션 실행

4. 모델 정의

- Payment 모델 생성:

```python

class Payment(models.Model):

PAYMENT_STATUS = [('created', 'Created'), ('completed', 'Completed')]

customer_name = models.CharField(max_length=100)

amount = models.DecimalField(max_digits=10, decimal_places=2)

status = models.CharField(choices=PAYMENT_STATUS, default='created')

```

- 결제 상태(created, approved, completed, failed) 추적

5. 시리얼라이저 및 뷰 구현

- PaymentSerializer 정의:

```python

class PaymentSerializer(serializers.ModelSerializer):

class Meta:

model = Payment

fields = '__all__'

read_only_fields = ['status', 'created_at']

```

- PaymentCreateView 뷰: PayPal 결제 요청 생성 및 데이터베이스에 저장

- PaymentExecuteView 뷰: PayPal 결제 실행 및 상태 업데이트

결론

  • 환경 변수(.env)를 사용하여 민감 정보를 보호하고, sandbox 모드에서 테스트 후 live 모드로 전환
  • PayPal REST SDK 1.13.1을 통해 결제 흐름(생성, 실행, 상태 확인)을 구현
  • 로깅 및 예외 처리를 통해 결제 과정에서 발생하는 오류를 적극적으로 모니터링해야 함