Django 애플리케이션에 알리페이 결제 기능을 통합하려면 python-alipay-sdk 라이브러리를 활용하여 결제 요청 처리와 결과 검증 로직을 구현해야 합니다.
1. 개발 환경 설정
우선 필요한 라이브러리를 설치합니다:
pip install python-alipay-sdk
2. 설정 정보 구성
settings.py 파일에 알리페이 서비스 이용을 위한 필수 키와 식별자를 정의합니다. 보안을 위해 실제 키 값은 환경 변수로 관리하는 것을 권장합니다.
ALIPAY_CONFIG = {
"APP_ID": "your_app_id",
"APP_PRIVATE_KEY": "/path/to/app_private_key.pem",
"ALIPAY_PUBLIC_KEY": "/path/to/alipay_public_key.pem",
"SIGN_TYPE": "RSA2",
"IS_DEBUG": True # 테스트 환경인 경우 True
}
3. 결제 요청 뷰 구현
사용자가 결제를 시작할 때 알리페이 결제 페이지로 리다이렉트할 수 있는 URL을 생성하는 로직입니다.
from django.http import HttpResponseRedirect
from alipay import AliPay
from django.conf import settings
def initiate_payment(request):
client = AliPay(
appid=settings.ALIPAY_CONFIG["APP_ID"],
app_notify_url="https://yourdomain.com/payment/notify/",
app_private_key_path=settings.ALIPAY_CONFIG["APP_PRIVATE_KEY"],
alipay_public_key_path=settings.ALIPAY_CONFIG["ALIPAY_PUBLIC_KEY"],
sign_type=settings.ALIPAY_CONFIG["SIGN_TYPE"],
debug=settings.ALIPAY_CONFIG["IS_DEBUG"]
)
url = client.api_alipay_trade_page_pay(
out_trade_no="order_123456789",
total_amount="10.00",
subject="상품 결제 테스트",
return_url="https://yourdomain.com/payment/return/"
)
gateway_url = "https://openapi.alipay.com/gateway.do?" + url
return HttpResponseRedirect(gateway_url)
4. 콜백 및 결과 검증
결제 후 알리페이 서버로부터 전달되는 응답 데이터(비동기 알림 및 동기 리다이렉트)를 검증하여 최종적으로 결제 성공 여부를 판단합니다.
from django.http import HttpResponse
from alipay import AliPay
def verify_payment(request):
params = request.POST.dict()
signature = params.pop('sign')
client = AliPay(...) # 위와 동일한 초기화 과정 필요
if client.verify(params, signature):
if params["trade_status"] in ["TRADE_SUCCESS", "TRADE_FINISHED"]:
# DB 결제 상태 업데이트 로직 추가
return HttpResponse("success")
return HttpResponse("fail")
5. URL 라우팅 설정
urls.py에 각 단계별 엔드포인트를 매핑합니다.
from django.urls import path
from . import views
urlpatterns = [
path('pay/', views.initiate_payment, name='pay'),
path('notify/', views.verify_payment, name='notify'),
path('return/', views.verify_payment, name='return'),
]