파이썬 자동설계프로젝트

네이버페이와 카카오페이를 이용한 결제 가능한 웹사이트 만들기

mylife365 2024. 11. 23. 16:05
반응형

안녕하세요! 😊
오늘은 네이버페이카카오페이를 이용해 결제가 가능한 웹사이트를 만드는 방법을 설명드리겠습니다.
특히, 파이썬 프로그래머를 꿈꾸시는 초보자분들을 위해 쉽게 이해할 수 있도록 단계별로 설명드릴게요. 자, 시작해볼까요? 🚀


1. 네이버페이와 카카오페이란?

네이버페이와 카카오페이는 한국에서 많이 사용되는 간편결제 시스템입니다.

  • 네이버페이: 네이버 쇼핑 및 다양한 웹사이트에서 제공하는 결제 서비스입니다.
  • 카카오페이: 카카오톡과 연동되어 빠르게 결제할 수 있는 서비스입니다.

이들을 웹사이트에서 사용하는 방법은?

  • 결제 API: 네이버페이와 카카오페이 모두 **API(Application Programming Interface)**를 제공합니다.
    • 이 API를 통해 결제 요청을 보내고 결과를 처리할 수 있습니다.
  • Flask를 사용하면 파이썬으로 간단히 API를 호출해 결제를 처리할 수 있습니다.

2. 준비물

  1. Flask 웹 서버: 결제 요청을 처리할 파이썬 서버.
  2. API 키: 네이버페이와 카카오페이를 사용하려면 각각의 개발자센터에서 API 키를 받아야 합니다.
  3. HTML/CSS/JavaScript: 결제 페이지를 꾸미고, 서버와 통신하는 데 사용합니다.

3. 네이버페이와 카카오페이 API 연동하기

1) 네이버페이

네이버페이 API 준비

  1. **네이버페이 개발자 센터**에 가입하세요.
  2. 애플리케이션을 등록하고 API Key를 발급받으세요.
  3. 결제 API 문서를 참고하여 API 요청 형식을 확인합니다.

결제 요청의 기본 흐름

  1. 사용자 정보 및 결제 정보를 포함한 요청을 네이버페이 API에 보냅니다.
  2. 네이버페이에서 제공하는 결제 화면으로 리디렉션합니다.
  3. 결제가 완료되면 결과를 확인하고 처리합니다.

2) 카카오페이

카카오페이 API 준비

  1. **카카오 디벨로퍼스**에 가입하세요.
  2. 애플리케이션을 등록하고 REST API Key를 발급받으세요.
  3. 결제 API 문서를 참고하여 결제 요청 형식을 확인합니다.

결제 요청의 기본 흐름

  1. Flask 서버에서 결제 정보를 카카오페이 API로 요청합니다.
  2. API에서 반환된 결제 URL을 사용자에게 제공합니다.
  3. 결제가 완료되면 결과를 확인하고 성공/실패 여부를 처리합니다.

4. Flask로 결제 가능한 웹사이트 만들기

Flask 서버 코드 (app.py)

아래는 네이버페이와 카카오페이 API를 연동한 기본적인 Flask 서버 코드입니다.

from flask import Flask, request, jsonify, redirect
import requests

app = Flask(__name__)

# 네이버페이 및 카카오페이 API 키
NAVER_PAY_CLIENT_ID = "your_naverpay_client_id"
KAKAO_PAY_API_KEY = "your_kakao_api_key"

@app.route("/")
def home():
    return '''

결제 테스트

    네이버페이 결제

    카카오페이 결제
    '''

@app.route("/pay/naver", methods=["GET"])
def naver_pay():
    # 네이버페이 결제 요청 (샘플 요청 데이터)
    naver_pay_url = "https://api.naver.com/pay"
    payload = {
        "client_id": NAVER_PAY_CLIENT_ID,
        "amount": 10000,
        "item_name": "테스트 상품",
        "return_url": "http://localhost:5000/naver/callback"
    }
    headers = {"Content-Type": "application/json"}
    response = requests.post(naver_pay_url, json=payload, headers=headers)
    
    if response.status_code == 200:
        # 결제 URL로 리디렉션
        return redirect(response.json()["payment_url"])
    else:
        return jsonify({"error": "네이버페이 결제 실패", "details": response.json()})

@app.route("/pay/kakao", methods=["GET"])
def kakao_pay():
    # 카카오페이 결제 요청 (샘플 요청 데이터)
    kakao_pay_url = "https://kapi.kakao.com/v1/payment/ready"
    headers = {"Authorization": f"KakaoAK {KAKAO_PAY_API_KEY}"}
    payload = {
        "cid": "TC0ONETIME",
        "partner_order_id": "123456789",
        "partner_user_id": "user123",
        "item_name": "테스트 상품",
        "quantity": 1,
        "total_amount": 10000,
        "vat_amount": 1000,
        "tax_free_amount": 0,
        "approval_url": "http://localhost:5000/kakao/success",
        "cancel_url": "http://localhost:5000/kakao/cancel",
        "fail_url": "http://localhost:5000/kakao/fail"
    }
    response = requests.post(kakao_pay_url, json=payload, headers=headers)

    if response.status_code == 200:
        # 결제 URL로 리디렉션
        return redirect(response.json()["next_redirect_pc_url"])
    else:
        return jsonify({"error": "카카오페이 결제 실패", "details": response.json()})

if __name__ == "__main__":
    app.run(debug=True)

5. 결제 요청 후 HTML 페이지 (템플릿 예시)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>결제 테스트</title>
</head>
<body>
    <h1>결제 테스트</h1>
    <button onclick="window.location.href='/pay/naver'">네이버페이로 결제하기</button>
    <button onclick="window.location.href='/pay/kakao'">카카오페이로 결제하기</button>
</body>
</html>

6. 결제 성공/실패 처리

결제가 성공하거나 실패했을 때, Flask 서버에서 이를 처리하도록 설정해야 합니다.

  • 성공 URL: 사용자가 결제를 완료한 후 리디렉션될 페이지.
  • 취소/실패 URL: 사용자가 결제를 취소하거나 실패했을 때 리디렉션될 페이지.

7. 정리

  1. 네이버페이와 카카오페이 API 키 발급: 각각의 개발자 센터에서 API 키를 발급받으세요.
  2. Flask 서버로 결제 요청 처리: 결제 정보를 준비하고 API로 요청하세요.
  3. HTML 페이지와 통합: 사용자 인터페이스를 만들어 결제를 테스트하세요.
  4. 결제 결과 처리: 성공/실패 결과에 따라 적절한 후속 처리를 구현하세요.

이제 여러분도 네이버페이와 카카오페이를 활용한 결제 가능한 웹사이트를 만들 수 있습니다! 🛒
초보자분들도 따라 할 수 있도록 최대한 쉽게 설명드렸으니, 여러분의 멋진 프로젝트를 기대하겠습니다. 😊

궁금한 점이 있다면 댓글로 남겨주세요! 🚀