# RevenueCat Webhook Kurulum

## 1) Backend URL
```
https://api.bugunyap.com:1910/api/packages/revenuecat/webhook
```
(Port/proxy yapınıza göre `https://api.bugunyap.com/api/packages/revenuecat/webhook` da olabilir.)

## 2) RevenueCat Dashboard
1. Project → **Integrations → Webhooks**
2. Add webhook → URL yukarıdaki adres
3. **Authorization header** = `.env` içindeki `REVENUECAT_WEBHOOK_AUTH` değeri (Bearer yazmadan, paneller çoğunlukla düz token ister; kod hem `Bearer x` hem düz token kabul eder)
4. Events: en azından
   - INITIAL_PURCHASE
   - RENEWAL
   - CANCELLATION
   - EXPIRATION
   - REFUND
   - UNCANCELLATION
   - PRODUCT_CHANGE

## 3) .env
```
REVENUECAT_WEBHOOK_AUTH=<gizli-token>
REVENUECAT_CANCEL_IMMEDIATE=true
```
`CANCEL_IMMEDIATE=true` → App Store iptal webhook’unda backend paketi **hemen** kapanır.

## 4) Mobil (kritik)
Giriş sonrası `Purchases.logIn(userId)` çağrılır. Böylece webhook `app_user_id` = backend user id olur.

## 5) Sunucuyu yeniden başlat
```
# node app.js / pm2 restart ...
```

## Davranış
| Event | Backend |
|-------|---------|
| INITIAL_PURCHASE / RENEWAL | Paket aç / endDate uzat |
| CANCELLATION | Paket kapat (immediate=true) |
| EXPIRATION / REFUND | Paket kapat |

## Serpil test notu
Apple’da abonelik iptal edilse bile **dönem bitene kadar** (ör. 12 Eylül) aynı Apple ID ile yeniden satın alma genelde **yapılamaz**.  
Backend’i kapatıp sıfırdan denemek için:
1. Uygulamada **Aboneliği İptal Et**
2. Açılan App Store sayfasından iptal
3. Yeniden satın alma için ya dönem sonunu bekle, ya **başka Apple ID / Sandbox** kullan
