feat(server): Payple 정기 갱신 크론 — payple-renew Edge Function + GitHub Actions

- payple-renew: 만료 구독 조회 → paypleBilling → 기간 갱신
- 3회 연속 실패 시 tier=free, status=expired 다운그레이드
- migration: subscriptions.renewal_failures 컬럼 추가
- payple-webhook: 결제 완료 시 renewal_failures=0 리셋
- GitHub Actions: 매일 01:00 UTC 스케줄
This commit is contained in:
윤찬 2026-04-12 20:18:11 +09:00
parent 36031acda9
commit d3c2a4348d
5 changed files with 216 additions and 0 deletions

29
.github/workflows/payple-renew.yml vendored Normal file
View file

@ -0,0 +1,29 @@
name: Payple Subscription Renewal
on:
schedule:
# 매일 01:00 UTC (KST 10:00)
- cron: '0 1 * * *'
workflow_dispatch: {}
jobs:
renew:
runs-on: ubuntu-latest
steps:
- name: Trigger payple-renew Edge Function
run: |
response=$(curl -s -w "\n%{http_code}" -X POST \
"${{ secrets.SUPABASE_URL }}/functions/v1/payple-renew" \
-H "Authorization: Bearer ${{ secrets.CRON_SECRET }}" \
-H "Content-Type: application/json")
http_code=$(echo "$response" | tail -1)
body=$(echo "$response" | head -n -1)
echo "HTTP $http_code"
echo "$body" | jq . 2>/dev/null || echo "$body"
if [ "$http_code" -ge 400 ]; then
echo "::error::Renewal failed with HTTP $http_code"
exit 1
fi