# Ödeme modları

> İstemcinin satır içi panel ile açılır pencere arasında nasıl seçim yaptığı, güvenilir kaynakların bunu neden belirlediği ve yerel geliştirme sırasında neler beklemeniz gerektiği.

Ödeme, iki moddan birinde açılır.

**Panel**, sayfanızın içinde işlenen satır içi bir paneldir. Masaüstünde sağdan içeri kayar ve genişliği `pane.width` ile sınırlandırılır; mobilde alttan yukarı kayar. Ziyaretçi sitenizde kalır ve Escape tuşuna bastığında veya karartılmış alana tıkladığında panel kapanır.

**Açılır pencere**, ziyaretçinin ekranında ortalanmış ayrı bir tarayıcı penceresidir. İstemci, arka planı temizleyebilmek için pencerenin kapatılmasını izler.

## Satır içi ödeme, güvenilir bir kaynak gerektirir

Panel modu, Entase ödemesini alan adınızda bir iframe içinde işler; bu nedenle yalnızca açıkça yetkilendirdiğiniz alan adlarında izin verilir. Ödemeyi açan her alan adını Ayarlar → Entegrasyonlar bölümündeki **Güvenilir kaynaklar** listesine ekleyin – bkz. [Entegrasyonlar ve ödeme özelleştirmesi](/organizers/settings/integrations-and-checkout-customization.md).

`www.` önekinin dahil edilip edilmediği önemlidir. Sitenizin hangi biçimde sunulduğundan emin değilseniz ikisini de ekleyin.

Alan adınız listede değilse ödeme yine çalışır – yalnızca açılır pencere olarak açılır.

## `'auto'` nasıl çözülür

Varsayılan `checkoutMode: 'auto'` ile istemci şu sırayla karar verir:

1. **HTTPS değil** → açılır pencere. Satır içi ödeme, güvenli olmayan bir sayfada asla kullanılmaz.
2. **`localhost` veya `127.0.0.1`** → panel; konsola bir uyarı kaydedilir. Bu, satır içi düzenle geliştirme yapabilmeniz için sağlanan bir kolaylıktır; üretim alan adınıza izin verilip verilmediği hakkında hiçbir şey söylemez.
3. **Diğer durumlarda** → istemci, `pk` göndererek hesabı tanımlayıp bu kaynağın satır içi ödemeyi kullanıp kullanamayacağını Entase'ye sorar. Yanıt panel içeriyorsa mod panel olur.

Bu yanıt gelene kadar mod **popup** olur. Sizi en çok şaşırtması muhtemel davranış budur: denetim eşzamansızdır; dolayısıyla sayfa yüklenir yüklenmez – ziyaretçinin herhangi bir şeye tıklama fırsatı olmadan önce – tetiklenen bir `book()` çağrısı, kusursuz şekilde yapılandırılmış bir alan adında bile açılır pencere açabilir. Uygulamada, gerçek bir tıklama her zaman denetim tamamlandıktan çok sonra gerçekleşir. Ödemeyi otomatik olarak açıyorsanız algılamaya güvenmek yerine modu zorlayın.

## Modu zorlama

Algılamayı tamamen atlamak için `checkoutMode` değerini açıkça ayarlayın:

```js
const entase = new Entase({ pk: 'YOUR_PUBLISHABLE_KEY', checkoutMode: 'popup' });
```

Ya da tek bir rezervasyon için geçersiz kılın:

```js
entase.book('EVENT_ID', { checkoutMode: 'popup' });
```

Güvenilir kaynak olmayan bir alan adında `'pane'` değerini zorlamak izin vermez – panel açılır, ancak içindeki ödeme sayfanızla iletişim kuramaz. Bilinçli bir seçim olarak `'popup'` kullanın ve izin verilen her yerde satır içi ödeme istediğinizde `'auto'` değerini bırakın.

Tanınmayan bir değer yok sayılır ve `'auto'` olarak ele alınır.

## Çalışma zamanında modu okuma ve değiştirme

```js
entase.getCheckoutMode();        // 'pane' veya 'popup' – asla 'auto' değil
entase.setCheckoutMode('popup'); // sonraki her book() çağrısına uygulanır
```

`getCheckoutMode()`, *çözümlenmiş* modu döndürür; dolayısıyla gerçekten ne olacağını bildirir. Modu yeniden `'auto'` olarak ayarlamak algılamayı tekrar çalıştırır.

## Açılır pencere engelleyicileri

Tarayıcılar yalnızca bir kullanıcı hareketi sırasında `window.open()` çağrısına izin verir. `book()` çağrısını doğrudan bir tıklama işleyicisinin içinde yapın – `await`, `fetch` veya `setTimeout` sonrasında değil; o zamana kadar hareketin süresi dolmuş olur ve açılır pencere engellenir.

```js
// Engellenir: book() çalıştığında kullanıcı hareketi artık geçerli değildir.
button.addEventListener('click', async () => {
  const event = await fetch('/api/current-event').then(r => r.json());
  entase.book(event.id);
});

// Sorun yok: önce kimliği çözümleyin, tıklamada açın.
button.addEventListener('click', () => entase.book(button.dataset.eventId));
```

Bu yalnızca açılır pencere modunu etkiler. Panel modu sayfada bir öğe oluşturur ve buna tabi değildir.
