Django와 PayPal을 사용한 결제 게이트웨이 구축 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- Python, Django, REST API에 대한 기초 지식을 가진 웹 개발자
- 결제 시스템 구축을 목표로 하는 중급 이상 개발자
- 테스트 환경 및 프로덕션 환경 구성을 이해하고자 하는 개발자
핵심 요약
- Django 5.0.6과 PayPal REST SDK 1.13.1을 사용하여 결제 게이트웨이 API를 구축
.env
파일을 통해 PAYPAL_CLIENT_ID 및 PAYPAL_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을 통해 결제 흐름(생성, 실행, 상태 확인)을 구현
- 로깅 및 예외 처리를 통해 결제 과정에서 발생하는 오류를 적극적으로 모니터링해야 함