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:
parent
36031acda9
commit
d3c2a4348d
5 changed files with 216 additions and 0 deletions
29
.github/workflows/payple-renew.yml
vendored
Normal file
29
.github/workflows/payple-renew.yml
vendored
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue