Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

soulee-dev/PayApp-FastAPI-Demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

3 Commits

Repository files navigation

PAYAPP FastAPI 데모

Demo GIF Video

GitHub Repo stars GitHub forks

온라인 비즈니스를 만들기 위해 가장 중요한 요소 중 하나는 결제 시스템입니다. 하지만 대부분의 PG(Payment Gateway)사는 사업자등록증이 없는 개인의 결제를 받아주지 않습니다.

이 문제를 해결하기 위해 송금 스크래핑 방식도 고려해봤지만, 최근에 개인 결제를 지원하는 PAYAPP 서비스를 찾게 되었습니다.

  • 가입 즉시 결제를 받을 수 있음
  • 정산 시 구비서류 제출 필요
  • 보증보험 가입 조건: 건당 결제금액 50만원 이상 또는 월 매출 500만원 이상일 경우
  • 수수료: 카드 4%, 계좌이체 2.3% → Toss Payments(카드 3.4%, 계좌 2.0%)보다 높지만, 가입비/관리비 0원 & 개인도 가입 가능하다는 장점이 있습니다.

아쉬운 점은 Toss Payments처럼 개발자 문서가 친절하지 않다는 점입니다. 그래서 FastAPI + SQLite + 바닐라 JS 기반으로 PAYAPP 결제 시스템을 구현해보았습니다.

자세한 정보는 PayApp 서비스 연동 매뉴얼을 참고하세요.


기능 개요

  • 상품/주문 DB: SQLite로 관리
  • /orders API: 서버가 상품 가격을 확정하고 주문 생성
  • 프론트엔드(index.html): 서버가 내려준 금액/주문번호를 그대로 PayApp SDK에 전달
  • /webhook API: PayApp이 결제 결과를 알려줌 → 서버에서 주문 상태 업데이트
  • /result API: 결제 결과를 조회 가능

프로젝트 구조

.
├─ .env.example # 환경 변수 예시
├─ static/
│ └─ index.html # 프론트엔드(바닐라 JS)
└─ app/
 ├─ __init__.py
 ├─ main.py # FastAPI 앱 엔트리포인트
 ├─ config.py # 환경변수 로딩
 ├─ db.py # DB 연결 및 초기화
 ├─ models.py # Pydantic 모델 & Enum
 ├─ repositories.py # DB CRUD
 └─ routers/
 ├─ orders.py # 주문 생성/조회 API
 └─ webhook.py # PayApp Webhook API

설정

1. PayApp 가입 및 연동 정보 확인

PayApp 가입하기

  • 판매관리자 → 설정 → 연동정보에서 연동 KEY / 연동 VALUE 확인
  • .env 파일에 입력

2. 환경 변수 설정

.env.example 파일을 참고하여 .env 파일을 생성하고 값을 채워주세요.

PAYAPP_USERID=판매자아이디
PAYAPP_LINKKEY=연동KEY
PAYAPP_LINKVAL=연동VALUE
SHOP_NAME=내쇼핑몰
BASE_URL=http://localhost:8000

로컬에서 ngrok으로 외부 접근을 열 경우, BASE_URL을 ngrok 주소로 바꿔야 Webhook이 정상 수신됩니다.


설치

pip install -r requirements.txt

실행

# 개발 서버 실행
uvicorn app.main:app --reload

혹은 FastAPI CLI를 사용할 수도 있습니다:

fastapi dev app/main.py

ngrok을 통한 외부 노출

ngrok http 8000

생성된 ngrok 주소를 .envBASE_URL로 업데이트하세요.


테스트 방법

  1. 브라우저에서 http://localhost:8000 접속
  2. 상품 선택 → 주문 만들기 클릭
  3. 서버가 가격을 확정하고 주문 생성
  4. 결제하기 버튼을 눌러 PayApp 결제 진행
  5. 결제 완료 후 PayApp이 /webhook으로 결과를 전송 → 서버 DB 상태 업데이트
  6. /result?order_id=... 경로에서 주문 상태 확인 가능

About

사업자없이 결제 가능한 PG인 PayApp 서비스 FastAPI Demo 프로젝트입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /