# Hoş Geldiniz

🎉 Paywall API dokümantasyonuna hoş geldiniz!

Burada, Paywall servisimizin nasıl kullanılacağını, sağladığı özellikleri ve fonksiyonları keşfedeceksiniz.

Paywall sayesinde ödeme işlemlerini hızlı ve başarılı bir şekilde gerçekleştirebilirsiniz. Ödeme sağlayıcıların tüm özelliklerine, her birine sıfırdan entegrasyon yapmak yerine, Paywall üzerinden tek bir noktadan kolayca erişebilir ve entegrasyon sürecini hızlandırabilirsiniz.

**Entegrasyon ve SDK Desteği:**

Paywall servisini kolayca herhangi bir programlama dili kullanarak ürünlerinize entegre edebilirsiniz. Restful tabanlı entegrasyon imkanı sunan Paywall, entegrasyonlar için SDK desteği de sunmaktadır.

Paywall tarafından sunulan SDK'ler ihtiyacınızı karşılamıyorsa, bizimle iletişime geçebilirsiniz.

\
**Güvenlik ve Yetkilendirme:**

Paywall API için güvenlik anahtarı yetkilendirmesi kullanılmaktadır. Entegrasyon yapabilmek için üye iş yerine özel Public API Key ve Private API Key bilgileri kullanılmalıdır. Bu bilgiler Paywall tarafından üye iş yerine, üyelik işlemleri tamamlandıktan sonra temin edilmektedir.

\
Paywall, PCI DSS standartlarına uygunluğu sayesinde işiniz için gereken güveni sağlıyoruz.

<img src="https://lh7-us.googleusercontent.com/UG_RB1LnSb5rqFnzq2RSBIUhglnjvhOdercdqgDFBXuiHC_1eHEpmTH1a2uoxCtfXaePmNeEMhMRJ9rbwjDGjU8QynaIm0UK39Tm2GkM1ZRY0I4639W6igBrq_Em2kHhPIF4v4-dcwL43fXqnbaPpUs" alt="" data-size="original"><br>

**API Dokümantasyonu:**\
\
API dokümantasyonu içinde, tüm API istekleri ve yanıtları hakkında detaylı bilgi, örnek kodlar ve kullanım talimatlarını bulabilirsiniz. Paywall ödeme servisimizin API'sını kullanarak, ödeme işlemlerini hızlı, güvenli ve kolay bir şekilde gerçekleştirebilirsiniz.

🤝 Herhangi bir sorunuz veya desteğe ihtiyacınız varsa, bizlere ulaşmayı unutmayın.


# Genel Bakış

Paywall, işletmelerin tek bir entegrasyonla ödeme kuruluşları, e-para şirketleri ve bankaların sanal posları ile çalışmasını sağlayan bir ödeme orkestrasıdır. İşletmelerin ödeme süreçlerini daha verimli bir şekilde yönetmelerine ve kullanıcılarına sorunsuz bir ödeme deneyimi yaşamalarına yardımcı olur.&#x20;

<details>

<summary>Sağlayıcılar</summary>

* Sanal Pos
* Para Transferi
* Dijital Cüzdanlar
* Mikro Krediler
* Yemek Kartı
* Kart Üretimi (Sanal, Fiziksel)

Yukardaki sağlayıcı tipler PayWall entegrasyonuyla tek bir API üzerinden erişebileceğiniz sağlayıcı tipleridir

</details>

<details>

<summary>Çekirdek Özellikler</summary>

* PayIn (Auth, PreAuth)
* PayOut
* Kart Saklama
* Pazaryeri
* Tekrarlı Ödeme
* Mutabakat
* Webhook

Ödeme orkestrası karakteriyle PayWall'un core özellikleri yukardaki gibidir. Örnek bu özelliklerden biri olan PayWall'un PCI DSS Level-1 sertifikasıyla verdiği kart saklama hizmetidir.

</details>

<details>

<summary>Özel Algoritmalar</summary>

* PayRoute
* PayJump
* PayBalancer
* PayWatch
* RouteTable

Yukardaki algoritmalar ödeme kurtarma, yönlendirme, maliyet açaltma ve ödeme süreçlerindeki ödeme senkronizasyonunu sağlamak için geliştirilmiş olan özelliklerdir

</details>


# Tanıtım

Paywall'un sunduğu hizmetlerin bazılarının işleyişini adım adım göstermek amacıyla beş farklı başlık altında video içerikleri hazırladık.

Bu videolar, Paywall paneli üzerinden sunulan özelliklerin nasıl kullanılacağını detaylı bir şekilde göstermektedir.

{% tabs %}
{% tab title="Sanal POS Bağlama" %}
{% embed url="<https://app.arcade.software/share/RbOg0t1Dia6zkgy1WZNW>" %}
{% endtab %}

{% tab title="Sanal POS Yönet" %}
{% embed url="<https://app.arcade.software/share/qn0PevgbgS0a2AnXxtwQ>" %}
{% endtab %}

{% tab title="Web ile Ödeme Al" %}
{% embed url="<https://emir-selim-tuetuencues-workspace.share.arcade.software/share/1VLwWnGIEz31ZMpaqpdv>" %}
{% endtab %}

{% tab title="Link/Qr ile Ödeme Alma" %}
{% embed url="<https://app.arcade.software/share/DXvobqWJgYpHglKmDMne>" %}
{% endtab %}
{% endtabs %}


# Sağlayıcılar

Sağlayıcılar, Paywall ekosisteminde tek entegrasyon ile (Paywall) kullanıcılarının ulaşabileceği kanalları göstermektedir. Tüm bu sağlayıcılara Paywall üzerinden erişebilirsiniz


# Sanal Pos Kullanımı

Sanal POS entegrasyonunu kullanabilmek için şu adımları tamamlamış olmalısınız.

1. Üye İşyeri Paneli > Sağlayıcılar > Sanal POS > anlaşmış olduğunuz sağlayıcıyı seçerek bağlantı kurabilirsiniz.

<figure><img src="/files/qmqR8UsHvIkMPgrUp2rN" alt=""><figcaption></figcaption></figure>

2. Üye İşyeri Paneli > Sağlayıcılar > Sanal POS > Bağlantı Kur > Genel Ayarlar bölümüne sanal POS bilgilerini giriniz.

<figure><img src="/files/Zo6PufAI6ra38wfzJj2G" alt=""><figcaption></figcaption></figure>

3. Üye İşyeri Paneli > Sağlayıcılar > Sanal POS > Bağlantı Kur > Entegrasyon Bilgileri bölümüne sağlayıcı tarafından size iletilmiş bilgileri giriniz.

<figure><img src="/files/jY5uVTMD9IC9gFbaB0Ou" alt=""><figcaption></figcaption></figure>

4. Üye İşyeri Paneli > Sağlayıcılar > Sanal POS > Bağlantı Kur > Ortam(Environment) bölümüne ortam ve adres(endpoint) bilgilerini seçtikten sonra bağlantı kurunuz.

<figure><img src="/files/HTpdSuKWR1aW5BqP2k6E" alt=""><figcaption></figcaption></figure>

**Tebrikler! Artık entegre ettiğiniz sanal POS üzerinden ödeme almaya hazırsınız. Satışlar başlasın!**


# Payout Kullanımı

Para transferi/para dağıtımı (IBAN'a transfer) servisidir. Bu servisi kullanmak için aşağıdaki adımları takip ediniz.

1. &#x20;Üye İşyeri Paneli > Sağlayıcılar > PayOut ekranından anlaşmış olduğunuz sağlayıcıyı seçerek bağlantı kurunuz.

<figure><img src="/files/kfivNtSxw0GedFaK0Auv" alt=""><figcaption></figcaption></figure>

2. Üye İşyeri Paneli > Sağlayıcılar > PayOut > Bağlantı Kur > Genel Ayarlar bölümünden  bağlantı bilgilerini giriniz.

<figure><img src="/files/t4bT3XlbfSqVeqoBLxpO" alt=""><figcaption></figcaption></figure>

3. Üye İşyeri Paneli > Sağlayıcılar > PayOut > Bağlantı Kur > Entegrasyon Bilgileri bölümüne sağlayıcı tarafından size iletilmiş pay-out bilgileri giriniz.&#x20;

<figure><img src="/files/4OiJdcGrgNp4YByNfS4M" alt=""><figcaption></figcaption></figure>

**Tebrikler! Artık Paywall ile ödeme dağıtımlarınızı kolayca gerçekleştirebilirsiniz. Kazançlarınız hesaplara ulaşmaya hazır!**


# Kart Üretim Kullanımı

İşletmelerin kendilerine, alt üye işyerlerine veya çalışanlarına sanal kart ve fiziksel ön ödemeli kart oluşturmalarını sağlayan bir servistir.

1. &#x20;Üye İşyeri Paneli > Sağlayıcılar > Kart Üretim > sağlayıcıyı seçerek bağlantı kurunuz.

<figure><img src="/files/Ha621I1zsH28TsV0tc5M" alt=""><figcaption></figcaption></figure>

2. Üye İşyeri Paneli > Sağlayıcılar > Kart Üretim > Genel ayarlar bölümünde üretmek istediğiniz kart tipini aktif ediniz ve diğer genel bilgileri giriniz.

<figure><img src="/files/tKKDN41dxc3G1pohNi83" alt=""><figcaption></figcaption></figure>

3. Üye İşyeri Paneli > Sağlayıcılar > Kart Üretim > Entegrasyon Bilgileri bölümüne sağlayıcı tarafından gönderilen API anahtarını (ApiKey) giriniz.

<figure><img src="/files/R3KPJO8ojj5Jxr3096pX" alt=""><figcaption></figcaption></figure>

**Tebrikler! Kart üretim sürecini başarıyla entegre ettiniz. Artık kullanıcılarınıza özel kartlar oluşturabilirsiniz!**


# APM Kullanımı

Alternatif Ödeme Metodu, İşletmelerin yemek kartlarıyla ve dijital cüzdanlarla ödeme almasını sağlayan bir servistir.

1. Üye İşyeri Paneli > Sağlayıcılar > Alternatif Ödeme > Cüzdan, Mikro Kredi ve Yemek Kartları listesinden bağlantı kurmak istediğiniz sağlayıcıyı seçiniz.

<figure><img src="/files/8zSkbAbfGwWuc3wX92d8" alt=""><figcaption></figcaption></figure>

2. Üye İşyeri Paneli > Sağlayıcılar > Alternatif Ödeme > Bağlantı Kur > Genel Ayarlar bölümüne bağlantı detaylarını giriniz.

<figure><img src="/files/noeKng0LtNTdhKD7uPqH" alt=""><figcaption></figcaption></figure>

3. Üye İşyeri Paneli > Sağlayıcılar > Alternatif Ödeme > Bağlantı Kur > Entegrasyon bilgileri bölümüne sağlayıcı tarafından gönderilen bağlantı bilgilerini giriniz.

<figure><img src="/files/Dk10Hd3W6ML703pIV0d1" alt=""><figcaption></figcaption></figure>

**Tebrikler! Alternatif ödeme yöntemleri entegrasyonunuz tamamlandı. Kullanıcılarınız dilediği yöntemle ödeme yapabilir!**


# Authentication

Paywall ile gerçekleştirilen API çağrılarında Paywall yetkilendirme mekanizmasının nasıl çalıştığını ve nasıl kullanılması gerektiğini bu sayfadan öğrenebilirsiniz

Tüm entegrasyon kimlik bilgileri Paywall API'lerine HTTP isteğin içerisinde Header alanında gönderilmelidir

{% hint style="info" %}
Entegrasyon kimlik bilgileri Paywall sistemlerinde **Public** ve **Private** olarak 2'ye ayırılır. Her iki kategorideki entegrasyon kimlikleri de client-side tarafında saklanmamalıdır. Public ve Private ayrımları Paywall'un güvenlik prosedürlerinde (istek adedi, ip limitleri vb) farklılık göstermektedir.
{% endhint %}

{% hint style="danger" %}
Entegrasyon kimlik bilgileri okunabilir olarak client-side'da saklanmamalıdır
{% endhint %}

<details>

<summary>Public</summary>

* apiclientpublic
* apikeypublic

Yukardaki entegrasyon kimlik bilgilerine PayWall panelinden ulaşabilirsiniz

</details>

<details>

<summary>Private</summary>

* apiclientprivate
* apikeyprivate

Yukardaki entegrasyon kimlik bilgilerine Paywall panelinden ulaşabilirsiniz

</details>

### Nereden temin edebilirim?

<table><thead><tr><th width="264.5">Ortam</th><th>Adres</th></tr></thead><tbody><tr><td><strong>Test Ortam</strong></td><td><a href="https://test-panel.itspaywall.com/">https://test-panel.itspaywall.com</a></td></tr><tr><td><strong>Prod Ortam  (itspaywall.com)</strong></td><td><a href="https://panel.itspaywall.com">https://panel.itspaywall.com</a></td></tr><tr><td><strong>Prod Ortam  (paywall.com.tr)</strong></td><td><a href="https://panel.paywall.com.tr">https://panel.paywall.com.tr</a></td></tr></tbody></table>

Panel'e giriş yaptıktan sonra **Geliştirici > Entegrasyon** sayfası altından ilgili bilgilere ulaşabilirsiniz


# Ortam

Paywall'un tüm ortam bilgilerini içeren doküman sayfasıdır.

🧪 [Test Ortam](/ortam/test-ortami)

⭐️ [Canlı Ortam](/ortam/canli-ortam)

🔥 [Felaket (DR) Ortam](/ortam/felaket-dr-ortam)


# Test Ortamı

Paywall entegrasyon sürecin tüm canlı ortamın sağlayıcı özelliklerin, servislerin aynısı sağlayan ve tüm entegrasyon sürecinde geliştirmelerinizi yapabileceğiniz ortamdır.

{% hint style="danger" %}
Ortamlar için **PublicClient**, **PublicKey**, **PrivateClient** ve **PrivateKey** olmak üzere toplam 4 adet key bilgisi almalısınız. İlgili kimlik bilgilerine Paywall paneli üzerinden de ulaşabilirsiniz
{% endhint %}

#### Public Kimlik Bilgileri:

{% hint style="success" %}
PublicClient: %PUBLICCLIENT%

PublicKey: %PUBLICKEY%
{% endhint %}

#### Private Kimlik Bilgileri:&#x20;

{% hint style="success" %}
PrivateClient: %PRIVATECLIENT%

PrivateKey: %PRIVATEKEY%
{% endhint %}

<table><thead><tr><th width="220.5">Ortam</th><th>Adres</th></tr></thead><tbody><tr><td>Payment API</td><td><a href="https://test-payment-api.itspaywall.com">https://test-payment-api.itspaywall.com </a></td></tr><tr><td>Payment Private API</td><td><a href="https://test-payment-private-api.itspaywall.com">https://test-payment-private-api.itspaywall.com </a></td></tr><tr><td>CardWall API</td><td><a href="https://test-card-api.itspaywall.com">https://test-card-api.itspaywall.com </a></td></tr><tr><td>Member API</td><td><a href="https://test-member-api.itspaywall.com">https://test-member-api.itspaywall.com </a></td></tr><tr><td>Physical API</td><td><a href="https://test-physicalpos-api.itspaywall.com">https://test-physicalpos-api.itspaywall.com</a></td></tr><tr><td>Wallet API</td><td><a href="https://test-wallet-api.itspaywall.com">https://test-wallet-api.itspaywall.com</a></td></tr><tr><td>Fraud API</td><td><a href="https://test-fraud.itspaywall.com">https://test-fraud.itspaywall.com</a></td></tr></tbody></table>


# Canlı Ortam

Paywall 'un gerçek ortam bilgilerini içeren sayfadır. Bu sayfa üzerinden ulaşamadığınız tüm bilgilere help\@paywall.one adresimiz üzerinden ulaşabilirsiniz.

{% hint style="danger" %}
Ortamlar için **PublicClient**, **PublicKey**, **PrivateClient** ve **PrivateKey** olmak üzere toplam 4 adet key bilgisi almalısınız. İlgili kimlik bilgilerine Paywall paneli üzerinden de ulaşabilirsiniz
{% endhint %}

#### Public Kimlik Bilgileri:&#x20;

{% hint style="success" %}
PublicClient: %PUBLICCLIENT%

PublicKey: %PUBLICKEY%
{% endhint %}

#### Private Kimlik Bilgileri:&#x20;

{% hint style="success" %}
PrivateClient: %PRIVATECLIENT%

PrivateKey: %PRIVATEKEY%
{% endhint %}

<table><thead><tr><th width="220.5">Ortam</th><th>Adres</th></tr></thead><tbody><tr><td>Payment API</td><td><mark style="color:orange;"><strong>Lütfen talep ediniz</strong></mark></td></tr><tr><td>Payment Private API</td><td><mark style="color:orange;"><strong>Lütfen talep ediniz</strong></mark></td></tr><tr><td>CardWall API</td><td><mark style="color:orange;"><strong>Lütfen talep ediniz</strong></mark></td></tr><tr><td>Member API</td><td><mark style="color:orange;"><strong>Lütfen talep ediniz</strong></mark></td></tr><tr><td>Physical API</td><td><mark style="color:orange;"><strong>Lütfen talep ediniz</strong></mark></td></tr><tr><td>Wallet API</td><td><mark style="color:orange;"><strong>Lütfen talep ediniz</strong></mark></td></tr><tr><td>Fraud API</td><td><mark style="color:orange;"><strong>Lütfen talep ediniz</strong></mark></td></tr></tbody></table>

{% hint style="danger" %}
**Disaster** süreçleri için lütfen inceleyiniz. Disaster süreçlerine kullanılacak olarak Paywall domain bilgileri kurgulanmalı ve entegrasyon aşamasında düşünülmelidir. Paywall, yaşanabilecek her türlü erişim sorununa önlemler geliştirdiği gibi domain seviyesinde de yaşanabilecek erişim sorunlarında yedef domainler sağlamaktadır.
{% endhint %}


# Felaket (DR) Ortam

Paywall'un sağladığı her bir domain adresinin, yaşanabilecek olası erişim sorunları (dış sağlayıcılar) için de disaster versiyonları bulunmaktadır.

<table><thead><tr><th width="220.5">Ortam</th><th>Adres</th></tr></thead><tbody><tr><td>Panel</td><td>Hangi domain kullanılıyorsa, ilgili domainin  <mark style="color:$danger;"><strong>-dr</strong></mark>  versiyonunu kullanmalısınız.<br><br>🔗 <mark style="color:orange;"><strong><code>panel-itspaywall-dr.com</code></strong></mark><br>🔗 <mark style="color:orange;"><strong><code>panel-paywall-dr.com.tr</code></strong></mark></td></tr><tr><td>Payment API</td><td>Hangi domain kullanılıyorsa, ilgili domainin  <mark style="color:$danger;"><strong>-dr</strong></mark>  versiyonunu kullanmalısınız.<br><br>🔗 <mark style="color:orange;"><strong><code>subdomain-itspaywall-dr.com</code></strong></mark><br>🔗 <mark style="color:orange;"><strong><code>subdomain-paywall-dr.com.tr</code></strong></mark></td></tr><tr><td>Payment Private API</td><td>Hangi domain kullanılıyorsa, ilgili domainin  <mark style="color:$danger;"><strong>-dr</strong></mark>  versiyonunu kullanmalısınız.<br><br>🔗 <mark style="color:orange;"><strong><code>subdomain-itspaywall-dr.com</code></strong></mark><br>🔗 <mark style="color:orange;"><strong><code>subdomain-paywall-dr.com.tr</code></strong></mark></td></tr><tr><td>CardWall API</td><td>Hangi domain kullanılıyorsa, ilgili domainin  <mark style="color:$danger;"><strong>-dr</strong></mark>  versiyonunu kullanmalısınız.<br><br>🔗 <mark style="color:orange;"><strong><code>subdomain-itspaywall-dr.com</code></strong></mark><br>🔗 <mark style="color:orange;"><strong><code>subdomain-paywall-dr.com.tr</code></strong></mark></td></tr><tr><td>Member API</td><td>Hangi domain kullanılıyorsa, ilgili domainin  <mark style="color:$danger;"><strong>-dr</strong></mark>  versiyonunu kullanmalısınız.<br><br>🔗 <mark style="color:orange;"><strong><code>subdomain-itspaywall-dr.com</code></strong></mark><br>🔗 <mark style="color:orange;"><strong><code>subdomain-paywall-dr.com.tr</code></strong></mark></td></tr><tr><td>Physical API</td><td>Hangi domain kullanılıyorsa, ilgili domainin  <mark style="color:$danger;"><strong>-dr</strong></mark>  versiyonunu kullanmalısınız.<br><br>🔗 <mark style="color:orange;"><strong><code>subdomain-itspaywall-dr.com</code></strong></mark><br>🔗 <mark style="color:orange;"><strong><code>subdomain-paywall-dr.com.tr</code></strong></mark></td></tr><tr><td>Wallet API</td><td>Hangi domain kullanılıyorsa, ilgili domainin  <mark style="color:$danger;"><strong>-dr</strong></mark>  versiyonunu kullanmalısınız.<br><br>🔗 <mark style="color:orange;"><strong><code>subdomain-itspaywall-dr.com</code></strong></mark><br>🔗 <mark style="color:orange;"><strong><code>subdomain-paywall-dr.com.tr</code></strong></mark></td></tr><tr><td>Fraud API</td><td>Hangi domain kullanılıyorsa, ilgili domainin  <mark style="color:$danger;"><strong>-dr</strong></mark>  versiyonunu kullanmalısınız.<br><br>🔗 <mark style="color:orange;"><strong><code>subdomain-itspaywall-dr.com</code></strong></mark><br>🔗 <mark style="color:orange;"><strong><code>subdomain-paywall-dr.com.tr</code></strong></mark></td></tr></tbody></table>

Disaster adresleri her hangi bir erişim sorunu olmadığı müddetçe erişime kapalıdır. Dış hizmet sağlayıcılar seviyesinde Paywall erişimlerine zarar verecek bir sorun olmadı durumunda Paywall yetkililer disaster (-dr) domain adreslerini


# Client-Side Servisler

Paywall ClientSide Servisler

#### ClientSide taraftan yapılabilecek servisler aşağıdaki gibidir;

Servislerin kullanımı öncesinde Yetkilendirme sayfasındaki şekilde token alınmalı ve bu token ile Client-Side'da işlem yapılmalıdır.

* [Yetkilendirme](/client-side-servisler/1.-yetkilendirme)
* [Yetkilendirme/Sdk](/client-side-servisler/2.-yetkilendirme-sdk)
* [TempCard](/client-side-servisler/3.-tempcard)


# 1. Yetkilendirme

Client tarafta yapacağınız işlemler için sunucu tarafından geçici bir token almanız gerekmektedir. Bu token bilgisini sunucunuzdan aşağıdaki adres ve parametrelerle alabilirsiniz

## TempToken

<mark style="color:green;">`POST`</mark> `{{Base Adres}}/api/paywall/temptoken`&#x20;

{% hint style="info" %}
Önemli: **TempToken** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PaymentAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="157">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td><pre><code>ClientCardSave
</code></pre></td><td>boolean</td><td>Evet</td><td>Token, client tarafta kart saklama için kullanılacak mı?</td></tr><tr><td><pre><code>ThreeDSession
</code></pre></td><td>boolean</td><td>Evet</td><td>Token, client tarafta 3D işlem yapmak için kullanılacak mı?</td></tr><tr><td><pre><code>ClientSdk
</code></pre></td><td>boolean</td><td>Evet</td><td>Token, Paywall'un client-side kütüphanesi için kullanılacak mı?</td></tr><tr><td><pre><code>ScopeBased
</code></pre></td><td>boolean</td><td>Evet</td><td>Token yetkilerini Scope parametresiyle belirlemek istediğiniz kullanmalısınız</td></tr><tr><td><pre><code>Scope
</code></pre></td><td>int</td><td>Evet/Hayır</td><td>Token yetkisi<br><br>0 = Yok<br>1 = ClientCardSave<br>2 = ThreeDSession<br>3 = ClientSdk</td></tr><tr><td><pre><code>ExpiryMin
</code></pre></td><td>int</td><td>Evet</td><td>Token, kaç dakika geçerli olacak?<br><br><mark style="color:blue;"><strong>0 ile 1440 arasında tanım yapılabilir</strong></mark></td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "ClientCardSave": true,
    "ThreeDSession": false,
    "ClientSdk": true,
    "ScopeBased": false,
    "Scope": 0,
    "ExpiryMin": 1440
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main()
    {
        var url = "{{BaseAddress}}/api/paywall/temptoken";
        var data = new
        {
            ClientCardSave = true,
            ThreeDSession = false,
            ClientSdk = true,
            ScopeBased = false,
            Scope = 0,
            ExpiryMin = 1440
        };

        var json = JsonConvert.SerializeObject(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        content.Headers.Add("apikeypublic", "%PUBLICKEY%");
        content.Headers.Add("apiclientpublic", "%PUBLICCLIENT%");

        var response = await client.PostAsync(url, content);
        var responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
    }
}
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

type RequestData struct {
    ClientCardSave bool `json:"ClientCardSave"`
    ThreeDSession  bool `json:"ThreeDSession"`
    ClientSdk      bool `json:"ClientSdk"`
    ScopeBased     bool `json:"ScopeBased"`
    Scope          int  `json:"Scope"`
    ExpiryMin      int  `json:"ExpiryMin"`
}

func main() {
    url := "{{BaseAddress}}/api/paywall/temptoken"
    data := RequestData{
        ClientCardSave: true,
        ThreeDSession:  false,
        ClientSdk:      true,
        ScopeBased:     false,
        Scope:          0,
        ExpiryMin:      1440,
    }

    requestBody, _ := json.Marshal(data)
    client := &http.Client{}
    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(requestBody))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("apikeypublic", "%PUBLICKEY%")
    req.Header.Set("apiclientpublic", "%PUBLICCLIENT%")

    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import org.json.JSONObject;

public class Main {
    public static void main(String[] args) {
        try {
            URL url = new URL("{{BaseAddress}}/api/paywall/temptoken");

            JSONObject jsonObject = new JSONObject();
            jsonObject.put("ClientCardSave", true);
            jsonObject.put("ThreeDSession", false);
            jsonObject.put("ClientSdk", true);
            jsonObject.put("ScopeBased", false);
            jsonObject.put("Scope", 0);
            jsonObject.put("ExpiryMin", 1440);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("apikeypublic", "%PUBLICKEY%");
            conn.setRequestProperty("apiclientpublic", "%PUBLICCLIENT%");

            OutputStream os = conn.getOutputStream();
            os.write(jsonObject.toString().getBytes());
            os.flush();

            Scanner scan = new Scanner(conn.getInputStream());
            String entireResponse = "";
            while (scan.hasNext())
                entireResponse += scan.nextLine();
            System.out.println("Response : " + entireResponse);
            scan.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$url = '{{BaseAddress}}/api/paywall/temptoken';
$header = array(
    'Content-Type: application/json',
    'apikeypublic: %%',
    'apiclientpublic: %%'
);
$data = array(
    'ClientCardSave' => true,
    'ThreeDSession' => false,
    'ClientSdk' => true,
    'ScopeBased' => false,
    'Scope' => 0,
    'ExpiryMin' => 1440
);
$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => $header,
        'content' => json_encode($data),
    )
));
$result = file_get_contents($url, false, $context);
echo $result;
?>
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = '{{BaseAddress}}/api/paywall/temptoken'
headers = {
    'Content-Type': 'application/json',
    'apikeypublic': '%%',
    'apiclientpublic': '%%'
}
data = {
    'ClientCardSave': True,
    'ThreeDSession': False,
    'ClientSdk': True,
    'ScopeBased': False,
    'Scope': 0,
    'ExpiryMin': 1440
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'uri'
require 'net/http'
require 'json'

url = URI("{{BaseAddress}}/api/paywall/temptoken")
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["apikeypublic"] = '%%'
request["apiclientpublic"] = '%%'
request.body = JSON.dump({
  "ClientCardSave" => true,
  "ThreeDSession" => false,
  "ClientSdk" => true,
  "ScopeBased" => false,
  "Scope" => 0,
  "ExpiryMin" => 1440
})

response = http.request(request)
puts response.read_body
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import axios from 'axios';

const url = '{{BaseAddress}}/api/paywall/temptoken';
const headers = {
  'Content-Type': 'application/json',
  'apikeypublic': '%%',
  'apiclientpublic': '%%'
};
const data = {
  ClientCardSave: true,
  ThreeDSession: false,
  ClientSdk: true,
  ScopeBased: false,
  Scope: 0,
  ExpiryMin: 1440
};

axios.post(url, data, { headers })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });
```

{% endtab %}

{% tab title="Curl" %}

```sh
curl --location --request POST '{{BaseAddress}}/api/paywall/temptoken' \
--header 'Content-Type: application/json' \
--header 'apikeypublic: %%' \
--header 'apiclientpublic: %%' \
--data-raw '{
    "ClientCardSave": true,
    "ThreeDSession": false,
    "ClientSdk": true,
    "ScopeBased": false,
    "Scope": 0,
    "ExpiryMin": 1440
}'
```

{% endtab %}
{% endtabs %}

Servisten dönen parametreler şu şekildedir:

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "TempTokenId": 14533994,
        "Token": "22ae3b5a-8eb0-41cc-88c7-219e25b95441",
        "ExpiryDateTime": "2024-06-13T22:25:08.0404774+03:00",
        "Scope": {
            "ClientCardSave": true,
            "ThreeDSession": false
        }
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Yetkilendirme/Sdk

Client tarafta yapacağınız işlemler için sunucu tarafından geçici bir token almanız gerekmektedir. Bu token bilgisini sunucunuzdan aşağıdaki adres ve parametrelerle alabilirsiniz.

## TempToken/Sdk

{% hint style="info" %}
TempToken/Sdk servisi, TempToken servisinden hariç olarak, Paywall SDK'lerinde kullanılmak üzere özelleştirilmiş istek ve cevap parametrelerine sahiptir. SDK'lerde yapılacak işler için,&#x20;
{% endhint %}

<mark style="color:green;">`POST`</mark> `{{Base Adres}}/api/paywall/temptoken/sdk`&#x20;

{% hint style="info" %}
Önemli: **TempToken/Sdk** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PaymentAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="157">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td><pre><code>ClientCardSave
</code></pre></td><td>boolean</td><td>Evet</td><td>Token, client tarafta kart saklama için kullanılacak mı?</td></tr><tr><td><pre><code>ThreeDSession
</code></pre></td><td>boolean</td><td>Evet</td><td>Token, client tarafta 3D işlem yapmak için kullanılacak mı?</td></tr><tr><td><pre><code>ClientSdk
</code></pre></td><td>boolean</td><td>Evet</td><td>Token, Paywall'un client-side kütüphanesi için kullanılacak mı?</td></tr><tr><td><pre><code>ScopeBased
</code></pre></td><td>boolean</td><td>Evet</td><td>Token yetkilerini Scope parametresiyle belirlemek istediğiniz kullanmalısınız</td></tr><tr><td><pre><code>Scope
</code></pre></td><td>int</td><td>Evet/Hayır</td><td>Token yetkisi<br><br>0 = Yok<br>1 = ClientCardSave<br>2 = ThreeDSession<br>3 = ClientSdk</td></tr><tr><td><pre><code>ExpiryMin
</code></pre></td><td>int</td><td>Evet</td><td>Token, kaç dakika geçerli olacak?<br><br><mark style="color:blue;"><strong>0 ile 1440 arasında tanım yapılabilir</strong></mark></td></tr><tr><td><pre><code>IncludeMasterpassSession
</code></pre></td><td>bool</td><td>Hayır</td><td>Eğer, temp token oluşturma isteğinin cevap nesnesi içerisinde Masterpass session bilgisi de dönülsün isteniyorsa, bu parametre true olarak iletilmelidir</td></tr><tr><td><pre><code>MasterpassSession
</code></pre></td><td><sup><mark style="color:$warning;">MasterpassSession</mark></sup></td><td>Evet/Hayır</td><td>IncludeMasterpassSession parametresi true gönderilmesi durumda, zorunlu bir parametredir. İçerisinde Masterpass session bilgisi için ihtiya ç</td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "ClientCardSave": true,
    "ThreeDSession": false,
    "ClientSdk": true,
    "ScopeBased": false,
    "Scope": 0,
    "ExpiryMin": 1440,
    "IncludeMasterpassSession": true,
    "MasterpassSession": {
        "ReferenceCode": "{{$guid}}",
        "UserId": "%UserId%", // Kullanıcının sisteminizdeki tekil kimlik bilgisi
        "UserPhone": "%UserPhone%", // Kullanıcının sisteminizdeki doğrulanmış telefon numarası
        "Force3D": false, // Kullanıcı tüm ödeme akışında 3D'ye zorlansın mı?
        "PhoneVerifiedByMerchant": true // Telefon doğrulaması yapıldı mı?
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main()
    {
        var url = "{{BaseAddress}}/api/paywall/temptoken/sdk";
        var data = new
        {
            ClientCardSave = true,
            ThreeDSession = false,
            ClientSdk = true,
            ScopeBased = false,
            Scope = 0,
            ExpiryMin = 1440,
            IncludeMasterpassSession = true,
            MasterpassSession = new
            {
                ReferenceCode = Guid.NewGuid().ToString(), // Her istek için tekil referans kodu
                UserId = "%UserId%",               // Kullanıcının sisteminizdeki tekil kimlik bilgisi
                UserPhone = "%UserPhone%",         // Kullanıcının sisteminizdeki doğrulanmış telefon numarası
                Force3D = false,                   // Kullanıcı tüm ödeme akışında 3D'ye zorlansın mı?
                PhoneVerifiedByMerchant = true      // Telefon doğrulaması yapıldı mı?
            }
        };

        var json = JsonConvert.SerializeObject(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        content.Headers.Add("apikeypublic", "%PUBLICKEY%");
        content.Headers.Add("apiclientpublic", "%PUBLICCLIENT%");

        var response = await client.PostAsync(url, content);
        var responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
    }
}
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
    "bytes"
    "crypto/rand"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

type MasterpassSession struct {
    ReferenceCode           string `json:"ReferenceCode"`
    UserId                  string `json:"UserId"`
    UserPhone               string `json:"UserPhone"`
    Force3D                 bool   `json:"Force3D"`
    PhoneVerifiedByMerchant bool   `json:"PhoneVerifiedByMerchant"`
}

type RequestData struct {
    ClientCardSave           bool              `json:"ClientCardSave"`
    ThreeDSession            bool              `json:"ThreeDSession"`
    ClientSdk                bool              `json:"ClientSdk"`
    ScopeBased               bool              `json:"ScopeBased"`
    Scope                    int               `json:"Scope"`
    ExpiryMin                int               `json:"ExpiryMin"`
    IncludeMasterpassSession bool              `json:"IncludeMasterpassSession"`
    MasterpassSession        MasterpassSession `json:"MasterpassSession"`
}

func newUUID() string {
    b := make([]byte, 16)
    rand.Read(b)
    b[6] = (b[6] & 0x0f) | 0x40
    b[8] = (b[8] & 0x3f) | 0x80
    return fmt.Sprintf("%x-%x-%x-%x-%x", b[0:4], b[4:6], b[6:8], b[8:10], b[10:])
}

func main() {
    url := "{{BaseAddress}}/api/paywall/temptoken/sdk"
    data := RequestData{
        ClientCardSave:           true,
        ThreeDSession:            false,
        ClientSdk:                true,
        ScopeBased:               false,
        Scope:                    0,
        ExpiryMin:                1440,
        IncludeMasterpassSession: true,
        MasterpassSession: MasterpassSession{
            ReferenceCode:           newUUID(),     // Her istek için tekil referans kodu
            UserId:                  "%UserId%",    // Kullanıcının sisteminizdeki tekil kimlik bilgisi
            UserPhone:               "%UserPhone%", // Kullanıcının sisteminizdeki doğrulanmış telefon numarası
            Force3D:                 false,         // Kullanıcı tüm ödeme akışında 3D'ye zorlansın mı?
            PhoneVerifiedByMerchant: true,           // Telefon doğrulaması yapıldı mı?
        },
    }

    requestBody, _ := json.Marshal(data)
    client := &http.Client{}
    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(requestBody))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("apikeypublic", "%PUBLICKEY%")
    req.Header.Set("apiclientpublic", "%PUBLICCLIENT%")

    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import java.util.UUID;
import org.json.JSONObject;

public class Main {
    public static void main(String[] args) {
        try {
            URL url = new URL("{{BaseAddress}}/api/paywall/temptoken/sdk");

            JSONObject masterpassSession = new JSONObject();
            masterpassSession.put("ReferenceCode", UUID.randomUUID().toString()); // Her istek için tekil referans kodu
            masterpassSession.put("UserId", "%UserId%");             // Kullanıcının sisteminizdeki tekil kimlik bilgisi
            masterpassSession.put("UserPhone", "%UserPhone%");       // Kullanıcının sisteminizdeki doğrulanmış telefon numarası
            masterpassSession.put("Force3D", false);                 // Kullanıcı tüm ödeme akışında 3D'ye zorlansın mı?
            masterpassSession.put("PhoneVerifiedByMerchant", true);  // Telefon doğrulaması yapıldı mı?

            JSONObject jsonObject = new JSONObject();
            jsonObject.put("ClientCardSave", true);
            jsonObject.put("ThreeDSession", false);
            jsonObject.put("ClientSdk", true);
            jsonObject.put("ScopeBased", false);
            jsonObject.put("Scope", 0);
            jsonObject.put("ExpiryMin", 1440);
            jsonObject.put("IncludeMasterpassSession", true);
            jsonObject.put("MasterpassSession", masterpassSession);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("apikeypublic", "%PUBLICKEY%");
            conn.setRequestProperty("apiclientpublic", "%PUBLICCLIENT%");

            OutputStream os = conn.getOutputStream();
            os.write(jsonObject.toString().getBytes());
            os.flush();

            Scanner scan = new Scanner(conn.getInputStream());
            String entireResponse = "";
            while (scan.hasNext())
                entireResponse += scan.nextLine();
            System.out.println("Response : " + entireResponse);
            scan.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
function guidv4() {
    $data = random_bytes(16);
    $data[6] = chr(ord($data[6]) & 0x0f | 0x40);
    $data[8] = chr(ord($data[8]) & 0x3f | 0x80);
    return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4));
}

$url = '{{BaseAddress}}/api/paywall/temptoken/sdk';
$header = array(
    'Content-Type: application/json',
    'apikeypublic: %%',
    'apiclientpublic: %%'
);
$data = array(
    'ClientCardSave' => true,
    'ThreeDSession' => false,
    'ClientSdk' => true,
    'ScopeBased' => false,
    'Scope' => 0,
    'ExpiryMin' => 1440,
    'IncludeMasterpassSession' => true,
    'MasterpassSession' => array(
        'ReferenceCode' => guidv4(),        // Her istek için tekil referans kodu
        'UserId' => '%UserId%',             // Kullanıcının sisteminizdeki tekil kimlik bilgisi
        'UserPhone' => '%UserPhone%',       // Kullanıcının sisteminizdeki doğrulanmış telefon numarası
        'Force3D' => false,                 // Kullanıcı tüm ödeme akışında 3D'ye zorlansın mı?
        'PhoneVerifiedByMerchant' => true   // Telefon doğrulaması yapıldı mı?
    )
);
$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => $header,
        'content' => json_encode($data),
    )
));
$result = file_get_contents($url, false, $context);
echo $result;
?>
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json
import uuid

url = '{{BaseAddress}}/api/paywall/temptoken/sdk'
headers = {
    'Content-Type': 'application/json',
    'apikeypublic': '%%',
    'apiclientpublic': '%%'
}
data = {
    'ClientCardSave': True,
    'ThreeDSession': False,
    'ClientSdk': True,
    'ScopeBased': False,
    'Scope': 0,
    'ExpiryMin': 1440,
    'IncludeMasterpassSession': True,
    'MasterpassSession': {
        'ReferenceCode': str(uuid.uuid4()),  # Her istek için tekil referans kodu
        'UserId': '%UserId%',                # Kullanıcının sisteminizdeki tekil kimlik bilgisi
        'UserPhone': '%UserPhone%',          # Kullanıcının sisteminizdeki doğrulanmış telefon numarası
        'Force3D': False,                    # Kullanıcı tüm ödeme akışında 3D'ye zorlansın mı?
        'PhoneVerifiedByMerchant': True      # Telefon doğrulaması yapıldı mı?
    }
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'uri'
require 'net/http'
require 'json'
require 'securerandom'

url = URI("{{BaseAddress}}/api/paywall/temptoken/sdk")
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["apikeypublic"] = '%%'
request["apiclientpublic"] = '%%'
request.body = JSON.dump({
  "ClientCardSave" => true,
  "ThreeDSession" => false,
  "ClientSdk" => true,
  "ScopeBased" => false,
  "Scope" => 0,
  "ExpiryMin" => 1440,
  "IncludeMasterpassSession" => true,
  "MasterpassSession" => {
    "ReferenceCode" => SecureRandom.uuid,  # Her istek için tekil referans kodu
    "UserId" => "%UserId%",                # Kullanıcının sisteminizdeki tekil kimlik bilgisi
    "UserPhone" => "%UserPhone%",          # Kullanıcının sisteminizdeki doğrulanmış telefon numarası
    "Force3D" => false,                    # Kullanıcı tüm ödeme akışında 3D'ye zorlansın mı?
    "PhoneVerifiedByMerchant" => true      # Telefon doğrulaması yapıldı mı?
  }
})

response = http.request(request)
puts response.read_body
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import axios from 'axios';
import { randomUUID } from 'crypto';

const url = '{{BaseAddress}}/api/paywall/temptoken/sdk';
const headers = {
  'Content-Type': 'application/json',
  'apikeypublic': '%%',
  'apiclientpublic': '%%'
};
const data = {
  ClientCardSave: true,
  ThreeDSession: false,
  ClientSdk: true,
  ScopeBased: false,
  Scope: 0,
  ExpiryMin: 1440,
  IncludeMasterpassSession: true,
  MasterpassSession: {
    ReferenceCode: randomUUID(),   // Her istek için tekil referans kodu
    UserId: '%UserId%',            // Kullanıcının sisteminizdeki tekil kimlik bilgisi
    UserPhone: '%UserPhone%',      // Kullanıcının sisteminizdeki doğrulanmış telefon numarası
    Force3D: false,                // Kullanıcı tüm ödeme akışında 3D'ye zorlansın mı?
    PhoneVerifiedByMerchant: true  // Telefon doğrulaması yapıldı mı?
  }
};

axios.post(url, data, { headers })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });
```

{% endtab %}

{% tab title="Curl" %}

```sh
curl --location --request POST '{{BaseAddress}}/api/paywall/temptoken/sdk' \
--header 'Content-Type: application/json' \
--header 'apikeypublic: %%' \
--header 'apiclientpublic: %%' \
--data-raw '{
    "ClientCardSave": true,
    "ThreeDSession": false,
    "ClientSdk": true,
    "ScopeBased": false,
    "Scope": 0,
    "ExpiryMin": 1440,
    "IncludeMasterpassSession": true,
    "MasterpassSession": {
        "ReferenceCode": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "UserId": "%UserId%",
        "UserPhone": "%UserPhone%",
        "Force3D": false,
        "PhoneVerifiedByMerchant": true
    }
}'
```

{% endtab %}
{% endtabs %}

Servisten dönen parametreler şu şekildedir:

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "TempTokenId": 504,
        "Token": "ee166e14-5670-410a-901c-db6b817c3cfa",
        "ExpiryDateTime": "2026-01-31T15:57:33.537137+03:00",
        "Scope": {
            "ClientCardSave": true,
            "ThreeDSession": false,
            "ClientSdk": true,
            "ScopeBased": false,
            "Scope": 0
        },
        // IncludeMasterpassSession parametresinin false ise, null döner
        // Nullable
        "Masterpass": {
            "SessionId": "c8f3663e-f36b-1410-80e8-004205aa382d",
            "SessionExpiryDate": "2026-01-30T16:12:34",
            "MasterpassToken": "%%JWT_TOKEN%%",
            "MasterpassMerchantId": "%%MERCHANT_MASTERPASS_MERCHANT_ID%%",
            "MasterpassTerminalGroupId": "%%MERCHANT_MASTERPASS_TERMINAL_GROUP_ID%%",
            "IsProd": false,
            "IsTest": true,
            "IsUat": false
        }
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 3. TempCard

Client-Side tarafta kart saklama yapmak için kullanılabilecek servistir. Tarayıcınızdan ödeme anında kartı token olarak Paywall'a saklayabilir. Saklı kart token ile sunucudan istek gönderebilirsiniz

{% hint style="success" %}
[**Yetkilendirme**](/client-side-servisler/1.-yetkilendirme) metodundan alınan geçici token ile kullanılabilir
{% endhint %}

{% hint style="info" %}
Hem E-Ticaret hem de Sigortacılık kapsamında kart saklama işlemi yapılabilmektedir. Kapsamı istek içerisindeki Scope parametresiyle belirleyebilirsiniz.
{% endhint %}

## TempCard

<mark style="color:green;">`POST`</mark> `{{Base Adres}}/api/paywall/tempcard`&#x20;

{% hint style="info" %}
Önemli: **TempCard** servisini kullanabilmeniz için 'Header' alanında '**token**' parametresini göndermeniz gerekmektedir. Bu bilgiyi [**Yetkilendirme**](/client-side-servisler/1.-yetkilendirme) sayfasındaki şekilde alabilirsiniz\
\
[<mark style="color:green;">**PaymentAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>token</td><td>string</td><td>Evet</td><td><a href="/pages/Xlup3CR2JHsiLiySFjO5"><strong>Yetkilendirme</strong></a> servisinden Client-Side işlemler için alınan geçici token bilgisidir</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="202">Parametre</th><th width="136">Kapsam</th><th>Tip</th><th>Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td><pre><code>CardType
</code></pre></td><td><mark style="color:blue;"><code>Normal</code></mark></td><td>int</td><td>Evet</td><td>Kart'ın kapsamını belirtmektedir<br><br>1. ECom<br>2. Insurance</td></tr><tr><td><pre><code>CardOwnerName
</code></pre></td><td><mark style="color:blue;"><code>Normal</code></mark></td><td>string</td><td>Evet</td><td>Kart sahibinin adı</td></tr><tr><td><pre><code>CardNumber
</code></pre></td><td><mark style="color:green;"><code>ECommerce</code></mark></td><td>string</td><td>Evet/Hayır</td><td>Kart numarası</td></tr><tr><td><pre><code>CardCvv
</code></pre></td><td><mark style="color:green;"><code>ECommerce</code></mark></td><td>string</td><td>Evet/Hayır</td><td>Kart CVV bilgisi</td></tr><tr><td><pre><code>CardExpiryMonth
</code></pre></td><td><mark style="color:green;"><code>ECommerce</code></mark></td><td>string</td><td>Evet/Hayır</td><td>Kart son kullanma ay</td></tr><tr><td><pre><code>CardExpiryYear
</code></pre></td><td><mark style="color:green;"><code>ECommerce</code></mark></td><td>string</td><td>Evet/Hayır</td><td>Kart son kullanma yıl</td></tr><tr><td><pre><code>CardNoFirst
</code></pre></td><td><mark style="color:orange;"><code>Insurance</code></mark></td><td>string</td><td>Evet/Hayır</td><td>Kart ilk 8</td></tr><tr><td><pre><code>CardNoLast
</code></pre></td><td><mark style="color:orange;"><code>Insurance</code></mark></td><td>string</td><td>Evet/Hayır</td><td>Kart son 4</td></tr><tr><td><pre><code>IdentityNumber
</code></pre></td><td><mark style="color:orange;"><code>Insurance</code></mark></td><td>string</td><td>Evet/Hayır</td><td>Kart sahibinin kimlik bilgisi</td></tr><tr><td><pre><code>ExpiryMinutes
</code></pre></td><td><mark style="color:blue;"><code>Normal</code></mark></td><td>int</td><td>Evet</td><td>Token, kaç dakika geçerli olacak?<br><br><mark style="color:blue;"><strong>0 ile 30 arasında tanım yapılabilir</strong></mark></td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "CardType": 1, // 1: ECom | 2: Insurance
    "CardOwnerName": "Enes Selman Tütüncü",
    "CardNumber": "5528790000000008", // Scope: ECom
    "CardCvv": "123", // Scope: ECom
    "CardExpiryMonth": "12", // Scope: ECom
    "CardExpiryYear": "30", // Scope: ECom
    // "CardNoFirst": "48249048", // Scope: Insurance
    // "CardNoLast": "8012", // Scope: Insurance
    // "IdentityNumber": "21234567890" // Scope: Insurance
    "ExpiryMinutes": 30
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main()
    {
        var url = "{{BaseAddress}}/api/paywall/tempcard";
        var data = new
        {
            CardType = 1, // 1: ECom | 2: Insurance
            CardOwnerName = "Enes Selman Tütüncü",
            CardNumber = "5528790000000008", // Scope: ECom
            CardCvv = "123",                 // Scope: ECom
            CardExpiryMonth = "12",          // Scope: ECom
            CardExpiryYear = "30",           // Scope: ECom
            // CardNoFirst = "48249048",       // Scope: Insurance
            // CardNoLast = "8012",            // Scope: Insurance
            // IdentityNumber = "21234567890", // Scope: Insurance
            ExpiryMinutes = 30
        };

        var json = JsonConvert.SerializeObject(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        content.Headers.Add("apikeypublic", "%PUBLICKEY%");
        content.Headers.Add("apiclientpublic", "%PUBLICCLIENT%");

        var response = await client.PostAsync(url, content);
        var responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
    }
}
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
)

type RequestData struct {
    CardType        int    `json:"CardType"`
    CardOwnerName   string `json:"CardOwnerName"`
    CardNumber      string `json:"CardNumber,omitempty"`
    CardCvv         string `json:"CardCvv,omitempty"`
    CardExpiryMonth string `json:"CardExpiryMonth,omitempty"`
    CardExpiryYear  string `json:"CardExpiryYear,omitempty"`
    IdentityNumber  string `json:"IdentityNumber,omitempty"`
    CardNoFirst     string `json:"CardNoFirst,omitempty"`
    CardNoLast      string `json:"CardNoLast,omitempty"`
    ExpiryMinutes   int    `json:"ExpiryMinutes"`
}

func main() {
    url := "{{BaseAddress}}/api/paywall/tempcard"
    data := RequestData{
        CardType:        1, // 1: ECom | 2: Insurance
        CardOwnerName:   "Enes Selman Tütüncü",
        CardNumber:      "5528790000000008", // Scope: ECom
        CardCvv:         "123",               // Scope: ECom
        CardExpiryMonth: "12",                // Scope: ECom
        CardExpiryYear:  "30",                // Scope: ECom
        // IdentityNumber: "21234567890", // Scope: Insurance
        // CardNoFirst:    "48249048",    // Scope: Insurance
        // CardNoLast:     "8012",        // Scope: Insurance
        ExpiryMinutes: 30,
    }

    requestBody, _ := json.Marshal(data)
    client := &http.Client{}
    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(requestBody))
    req.Header.Set("Content-Type", "application/json")
    req.Header.Set("apikeypublic", "%PUBLICKEY%")
    req.Header.Set("apiclientpublic", "%PUBLICCLIENT%")

    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := ioutil.ReadAll(resp.Body)
    fmt.Println(string(body))
}
```

{% endtab %}

{% tab title="Java" %}

```java
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;
import org.json.JSONObject;

public class Main {
    public static void main(String[] args) {
        try {
            URL url = new URL("{{BaseAddress}}/api/paywall/tempcard");

            JSONObject jsonObject = new JSONObject();
            jsonObject.put("CardType", 1); // 1: ECom | 2: Insurance
            jsonObject.put("CardOwnerName", "Enes Selman Tütüncü");
            jsonObject.put("CardNumber", "5528790000000008"); // Scope: ECom
            jsonObject.put("CardCvv", "123");                 // Scope: ECom
            jsonObject.put("CardExpiryMonth", "12");          // Scope: ECom
            jsonObject.put("CardExpiryYear", "30");           // Scope: ECom
            // jsonObject.put("CardNoFirst", "48249048");        // Scope: Insurance
            // jsonObject.put("CardNoLast", "8012");             // Scope: Insurance
            // jsonObject.put("IdentityNumber", "21234567890");  // Scope: Insurance
            jsonObject.put("ExpiryMinutes", 30);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Content-Type", "application/json");
            conn.setRequestProperty("apikeypublic", "%PUBLICKEY%");
            conn.setRequestProperty("apiclientpublic", "%PUBLICCLIENT%");

            OutputStream os = conn.getOutputStream();
            os.write(jsonObject.toString().getBytes());
            os.flush();

            Scanner scan = new Scanner(conn.getInputStream());
            String entireResponse = "";
            while (scan.hasNext())
                entireResponse += scan.nextLine();
            System.out.println("Response : " + entireResponse);
            scan.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$url = '{{BaseAddress}}/api/paywall/tempcard';
$header = array(
    'Content-Type: application/json',
    'apikeypublic: %%',
    'apiclientpublic: %%'
);
$data = array(
    'CardType' => 1, // 1: ECom | 2: Insurance
    'CardOwnerName' => 'Enes Selman Tütüncü',
    'CardNumber' => '5528790000000008', // Scope: ECom
    'CardCvv' => '123',                 // Scope: ECom
    'CardExpiryMonth' => '12',          // Scope: ECom
    'CardExpiryYear' => '30',           // Scope: ECom
    // 'CardNoFirst' => '48249048',        // Scope: Insurance
    // 'CardNoLast' => '8012',             // Scope: Insurance
    // 'IdentityNumber' => '21234567890',  // Scope: Insurance
    'ExpiryMinutes' => 30
);
$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => $header,
        'content' => json_encode($data),
    )
));
$result = file_get_contents($url, false, $context);
echo $result;
?>
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = '{{BaseAddress}}/api/paywall/tempcard'
headers = {
    'Content-Type': 'application/json',
    'apikeypublic': '%%',
    'apiclientpublic': '%%'
}
data = {
    'CardType': 1,  # 1: ECom | 2: Insurance
    'CardOwnerName': 'Enes Selman Tütüncü',
    'CardNumber': '5528790000000008',  # Scope: ECom
    'CardCvv': '123',                  # Scope: ECom
    'CardExpiryMonth': '12',           # Scope: ECom
    'CardExpiryYear': '30',            # Scope: ECom
    # 'CardNoFirst': '48249048',        # Scope: Insurance
    # 'CardNoLast': '8012',             # Scope: Insurance
    # 'IdentityNumber': '21234567890',  # Scope: Insurance
    'ExpiryMinutes': 30
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'uri'
require 'net/http'
require 'json'

url = URI("{{BaseAddress}}/api/paywall/tempcard")
http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["apikeypublic"] = '%%'
request["apiclientpublic"] = '%%'
request.body = JSON.dump({
  "CardType" => 1, # 1: ECom | 2: Insurance
  "CardOwnerName" => "Enes Selman Tütüncü",
  "CardNumber" => "5528790000000008", # Scope: ECom
  "CardCvv" => "123",                 # Scope: ECom
  "CardExpiryMonth" => "12",          # Scope: ECom
  "CardExpiryYear" => "30",           # Scope: ECom
  # "CardNoFirst" => "48249048",        # Scope: Insurance
  # "CardNoLast" => "8012",             # Scope: Insurance
  # "IdentityNumber" => "21234567890",  # Scope: Insurance
  "ExpiryMinutes" => 30
})

response = http.request(request)
puts response.read_body
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import axios from 'axios';

const url = '{{BaseAddress}}/api/paywall/tempcard';
const headers = {
  'Content-Type': 'application/json',
  'apikeypublic': '%%',
  'apiclientpublic': '%%'
};
const data = {
  CardType: 1, // 1: ECom | 2: Insurance
  CardOwnerName: 'Enes Selman Tütüncü',
  CardNumber: '5528790000000008', // Scope: ECom
  CardCvv: '123',                 // Scope: ECom
  CardExpiryMonth: '12',          // Scope: ECom
  CardExpiryYear: '30',           // Scope: ECom
  // CardNoFirst: '48249048',        // Scope: Insurance
  // CardNoLast: '8012',             // Scope: Insurance
  // IdentityNumber: '21234567890',  // Scope: Insurance
  ExpiryMinutes: 30
};

axios.post(url, data, { headers })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });
```

{% endtab %}

{% tab title="Curl" %}

```sh
# CardType: 1 = ECom (CardNumber/CardCvv/CardExpiryMonth/CardExpiryYear), 2 = Insurance (CardNoFirst/CardNoLast/IdentityNumber)
curl --location --request POST '{{BaseAddress}}/api/paywall/tempcard' \
--header 'Content-Type: application/json' \
--header 'apikeypublic: %%' \
--header 'apiclientpublic: %%' \
--data-raw '{
    "CardType": 1,
    "CardOwnerName": "Enes Selman Tütüncü",
    "CardNumber": "5528790000000008",
    "CardCvv": "123",
    "CardExpiryMonth": "12",
    "CardExpiryYear": "30",
    "ExpiryMinutes": 30
}'
```

{% endtab %}
{% endtabs %}

Servisten dönen parametreler şu şekildedir:

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "TempCardId": 2211290,
        "CardToken": "701b5df5-a50a-461d-9763-6107bea48184",
        "ExpiryDateTime": "2024-07-11T23:09:29.4294449+03:00"
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Fiziksel Pos

Burada, Paywall servisimizin FizikPos dünyasında nasıl kullanılacağını, sağladığı özellikleri ve fonksiyonları keşfedeceksiniz.

{% content-ref url="/pages/O0NIjJ8V2euJHQV1IoHI" %}
[1. Sağlayıcı](/fiziksel-pos/1.-saglayici)
{% endcontent-ref %}

{% content-ref url="/pages/yJc43weTV2WQpITsHzYT" %}
[2. Bağlantı](/fiziksel-pos/2.-baglanti)
{% endcontent-ref %}

{% content-ref url="/pages/cZu9XUIlYPUWLT7DbE3b" %}
[3. Terminal](/fiziksel-pos/3.-terminal)
{% endcontent-ref %}

{% content-ref url="/pages/CkLwRBv5OCvGm2JxJhAE" %}
[4. Terminal Etiketi](/fiziksel-pos/4.-terminal-etiketi)
{% endcontent-ref %}

{% content-ref url="/pages/i7Mj6mB4ZZkMbCFgQavJ" %}
[5. Eşleşme](/fiziksel-pos/5.-eslesme)
{% endcontent-ref %}

{% content-ref url="/pages/2rFLS1YYNLBfL1UtBCBw" %}
[6. Ödeme](/fiziksel-pos/6.-odeme)
{% endcontent-ref %}

{% content-ref url="/pages/tphLCLYeTb1tEOavYcZF" %}
[Sistem Verileri](/fiziksel-pos/sistem-verileri)
{% endcontent-ref %}


# 1. Sağlayıcı


# 1. Liste

Fiziksel Pos sağlayıcılarını bu servis üzerinden alabilirsiniz

<mark style="color:blue;">`GET`</mark> `{{Base Address}}/api/provider/list`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Sağlayıcı Liste** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Providers": [
        {
            "Brand": 10,
            "Provider": 10,
            "Region": 1,
            "IsActive": true,
            "Name": "Pavo - Papara",
            "IsReporting": true,
            "IsAsyncPayment": true,
            "IsSocketPayment": true,
            "ServiceParameters": [
                {
                    "Name": "Reporting_ApiKey",
                    "Type": "text",
                    "GroupType": 10,
                    "Desciption": "Api Key",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "Reporting_ApiToken",
                    "Type": "password",
                    "GroupType": 10,
                    "Desciption": "Api Token",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "AsyncPayment_ApiKey",
                    "Type": "text",
                    "GroupType": 20,
                    "Desciption": "Api Key",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "AsyncPayment_ApiToken",
                    "Type": "password",
                    "GroupType": 20,
                    "Desciption": "Api Token",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                }
            ]
        },
        {
            "Brand": 10,
            "Provider": 20,
            "Region": 1,
            "IsActive": true,
            "Name": "Pavo - Vepara",
            "IsReporting": true,
            "IsAsyncPayment": true,
            "IsSocketPayment": true,
            "ServiceParameters": [
                {
                    "Name": "Reporting_ApiKey",
                    "Type": "text",
                    "GroupType": 10,
                    "Desciption": "Api Key",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "Reporting_ApiToken",
                    "Type": "password",
                    "GroupType": 10,
                    "Desciption": "Api Token",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "AsyncPayment_ApiKey",
                    "Type": "text",
                    "GroupType": 20,
                    "Desciption": "Api Key",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "AsyncPayment_ApiToken",
                    "Type": "password",
                    "GroupType": 20,
                    "Desciption": "Api Token",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                }
            ]
        }
    ],
    "Brands": [
        {
            "Id": 10,
            "Brand": 10,
            "Name": "Pavo",
            "IsActive": true
        }
    ],
    "Regions": [
        {
            "Id": 1,
            "Region": 1,
            "Name": "Türkiye",
            "IsActive": true
        },
        {
            "Id": 2,
            "Region": 2,
            "Name": "Amerika",
            "IsActive": false
        },
        {
            "Id": 3,
            "Region": 3,
            "Name": "Global",
            "IsActive": false
        }
    ]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Liste (ByRegion)

Fiziksel Pos sağlayıcılarını bu servis üzerinden alabilirsiniz

<mark style="color:blue;">`GET`</mark> `{{Base Address}}/api/provider/`<mark style="color:red;">`{regionid}`</mark>`/list`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Ülke Bazlı Sağlayıcı Liste** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Providers": [
        {
            "Brand": 10,
            "Provider": 10,
            "Region": 1,
            "IsActive": true,
            "Name": "Pavo - Papara",
            "IsReporting": true,
            "IsAsyncPayment": true,
            "IsSocketPayment": true,
            "ServiceParameters": [
                {
                    "Name": "Reporting_ApiKey",
                    "Type": "text",
                    "GroupType": 10,
                    "Desciption": "Api Key",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "Reporting_ApiToken",
                    "Type": "password",
                    "GroupType": 10,
                    "Desciption": "Api Token",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "AsyncPayment_ApiKey",
                    "Type": "text",
                    "GroupType": 20,
                    "Desciption": "Api Key",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "AsyncPayment_ApiToken",
                    "Type": "password",
                    "GroupType": 20,
                    "Desciption": "Api Token",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                }
            ]
        },
        {
            "Brand": 10,
            "Provider": 20,
            "Region": 1,
            "IsActive": true,
            "Name": "Pavo - Vepara",
            "IsReporting": true,
            "IsAsyncPayment": true,
            "IsSocketPayment": true,
            "ServiceParameters": [
                {
                    "Name": "Reporting_ApiKey",
                    "Type": "text",
                    "GroupType": 10,
                    "Desciption": "Api Key",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "Reporting_ApiToken",
                    "Type": "password",
                    "GroupType": 10,
                    "Desciption": "Api Token",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "AsyncPayment_ApiKey",
                    "Type": "text",
                    "GroupType": 20,
                    "Desciption": "Api Key",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                },
                {
                    "Name": "AsyncPayment_ApiToken",
                    "Type": "password",
                    "GroupType": 20,
                    "Desciption": "Api Token",
                    "Length": "100",
                    "IsRequired": true,
                    "Value": null
                }
            ]
        }
    ],
    "Brands": [
        {
            "Id": 10,
            "Brand": 10,
            "Name": "Pavo",
            "IsActive": true
        }
    ],
    "Regions": [
        {
            "Id": 1,
            "Region": 1,
            "Name": "Türkiye",
            "IsActive": true
        },
        {
            "Id": 2,
            "Region": 2,
            "Name": "Amerika",
            "IsActive": false
        },
        {
            "Id": 3,
            "Region": 3,
            "Name": "Global",
            "IsActive": false
        }
    ]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Bağlantı


# 1. Liste

Fiziksel Pos bağlantılarınızın listesini bu servis üzerinden alabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/connection/list`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Bağlantı Listesi** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "pageIndex": 0,
  "pageSize": 10
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Items": [
            {
                "Id": "1b63d83f-d8ba-4476-9886-4b2f1d103e74",
                "Name": "Varsayılan 2",
                "DisplayName": "Paywall Uygulamam", // Cihazda görünür
                "EndOfDayId": 1,
                "IsReporting": true,
                "IsAsyncPayment": true,
                "IsSocketPayment": false,
                "BrandId": 10,
                "ProviderId": 30,
                "RegionId": 1,
                "IsProd": false,
                "IsConnected": true
            },
            {
                "Id": "70b2190b-e47b-455f-b05e-8c132a05534c",
                "Name": "Varsayılan 1",
                "DisplayName": "Paywall Uygulamam", // Cihazda görünür
                "EndOfDayId": 10,
                "IsReporting": true,
                "IsAsyncPayment": true,
                "IsSocketPayment": false,
                "BrandId": 10,
                "ProviderId": 10,
                "RegionId": 1,
                "IsProd": false,
                "IsConnected": true
            }
        ],
        "Pagination": {
            "CurrentPage": 0,
            "PageCount": 1,
            "PageSize": 10,
            "TotalCount": 2
        }
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Detay

Fiziksel Pos bağlantılarınızın detaylarını bu servis üzerinden alabilirsiniz

<mark style="color:blue;">`GET`</mark> `{{Base Address}}/api/connection/`<mark style="color:red;">`{ConnectionId}`</mark>`/detail`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Bağlantı Detay** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Id": "70b2190b-e47b-455f-b05e-8c132a05534c",
        "Name": "Varsayılan 1",
        "DisplayName": "Paywall Uygulamam",
        "BrandId": 10,
        "ProviderId": 10,
        "RegionId": 1,
        "EndOfDayId": 10,
        "IsReporting": true,
        "IsAsyncPayment": true,
        "IsSocketPayment": false,
        "IsConnected": true,
        "IsDelete": false,
        "IsProd": false,
        "ServiceParameters": { // Sağlayıcı özelinde Key/Value
            "Reporting_ApiKey": "***", // Response'da döner
            "Reporting_ApiToken": "***", // Response'da döner
            "AsyncPayment_ApiKey": "***", // Response'da döner
            "AsyncPayment_ApiToken": "***" // Response'da döner
        }
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 3. Bağlantı Kur

Fiziksel Pos bağlantısı kurmak için bu servis üzerinden alabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/connection`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Bağlantı Kur** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "BrandId": 10,
  "ProviderId": 20,
  "RegionId": 1,
  "EndOfDayId": 1,
  "DisplayName": "Uygulama İsmi",
  "IsProd": true,
  "IsReporting": true,
  "IsAsyncPayment": true,
  "IsSocketPayment": true,
  "ServiceParameters": {
    "Key1": "Value", // Key, listeleme anında döner
    "Key2": "Value", // Key, listeleme anında döner
    "Key3": "Value", // Key, listeleme anında döner
    "Key4": "Value" // Key, listeleme anında döner
  },
  "Name": "Bağlantı İsmi"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="218">Parametre</th><th width="136.33333333333331">Tip</th><th width="90">Zorunlu</th><th width="111">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>BrandId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/nddsxvxAxtXyx5f5CZpU">Marka</a></td></tr><tr><td><pre><code>ProviderId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/pqU8xMPwneKm0UxnSUBW">Sağlayıcı</a></td></tr><tr><td><pre><code>RegionId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/zAUP8ORuGu7uD0arr1Zu">Ülke/Bölge</a></td></tr><tr><td><pre><code>EndOfDayId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/aoi9AO1LjsnImHApFm8P">Valör Günü</a></td></tr><tr><td><pre><code>DisplayName
</code></pre></td><td>string</td><td>Hayır</td><td>25</td><td>Pos cihazlarının ekranlarında uygulama ismi vb gösterilmesi gereken durumlarda bu bilgi kullanılmaktadır</td></tr><tr><td><pre><code>IsProd
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Bağlantının Canlı/Test olduğunu ifade eder</td></tr><tr><td><pre><code>IsReporting
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Bağlantı raporlama özelliğini desteklesin mi?</td></tr><tr><td><pre><code>IsAsyncPayment
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Bağlantı asenkron ödeme yöntemini desteklesin mi?</td></tr><tr><td><pre><code>IsSocketPayment
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Bağlantı socket alt yapısında ödeme yöntemini desteklesin mi?</td></tr><tr><td><pre><code>ServiceParameters
</code></pre></td><td>Dictionary&#x3C;string, string></td><td>Evet</td><td>-</td><td>Bağlantı kurmak istediğiniz sağlayıcı (Papara vb) hangi parametreleri alıyorsa, key-value olarak iletilmelidir</td></tr><tr><td><pre><code>Name
</code></pre></td><td>string</td><td>Evet</td><td>100</td><td>Bağlantınıza verdiğiniz özel isim</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "status": true
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 4. Güncelle

Fiziksel Pos bağlantınızı güncellemek için bu servis üzerinden alabilirsiniz

<mark style="color:orange;">`PUT`</mark> `{{Base Address}}/api/connection`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Bağlantı Güncelleme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "Id": "70b2190b-e47b-455f-b05e-8c132a055300",
  "BrandId": 10,
  "ProviderId": 20,
  "RegionId": 1,
  "EndOfDayId": 1,
  "DisplayName": "Uygulama İsmi değişti",
  "IsProd": false,
  "IsReporting": true,
  "IsAsyncPayment": true,
  "IsSocketPayment": true,
  "ServiceParameters": {
    "Key1": "Value", // Key, listeleme anında döner
    "Key2": "Value", // Key, listeleme anında döner
    "Key3": "Value", // Key, listeleme anında döner
    "Key4": "Value" // Key, listeleme anında döner
  },
  "Name": "Bağlantı İsmi Değişti"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="218">Parametre</th><th width="80.33333333333331">Tip</th><th width="90">Zorunlu</th><th width="95">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>Id
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Bağlantınıza ait Id bilgisi</td></tr><tr><td><pre><code>BrandId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/nddsxvxAxtXyx5f5CZpU">Marka</a></td></tr><tr><td><pre><code>ProviderId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/pqU8xMPwneKm0UxnSUBW">Sağlayıcı</a></td></tr><tr><td><pre><code>RegionId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/zAUP8ORuGu7uD0arr1Zu">Ülke/Bölge</a></td></tr><tr><td><pre><code>EndOfDayId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/aoi9AO1LjsnImHApFm8P">Valör Günü</a></td></tr><tr><td><pre><code>DisplayName
</code></pre></td><td>string</td><td>Hayır</td><td>25</td><td>Pos cihazlarının ekranlarında uygulama ismi vb gösterilmesi gereken durumlarda bu bilgi kullanılmaktadır</td></tr><tr><td><pre><code>IsProd
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Bağlantının Canlı/Test olduğunu ifade eder</td></tr><tr><td><pre><code>IsReporting
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Bağlantı raporlama özelliğini desteklesin mi?</td></tr><tr><td><pre><code>IsAsyncPayment
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Bağlantı asenkron ödeme yöntemini desteklesin mi?</td></tr><tr><td><pre><code>IsSocketPayment
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Bağlantı socket alt yapısında ödeme yöntemini desteklesin mi?</td></tr><tr><td><pre><code>ServiceParameters
</code></pre></td><td>Dictionary&#x3C;string, string></td><td>Evet</td><td>-</td><td>Bağlantı kurmak istediğiniz sağlayıcı (Papara vb) hangi parametreleri alıyorsa, key-value olarak iletilmelidir</td></tr><tr><td><pre><code>Name
</code></pre></td><td>string</td><td>Evet</td><td>100</td><td>Bağlantınıza verdiğiniz özel isim</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "status": true
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 5. Sil

Fiziksel Pos bağlantınızı silmek için bu servis üzerinden alabilirsiniz

<mark style="color:red;">`DELETE`</mark> `{{Base Address}}/api/connection`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Bağlantı Silme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "Id": "70b2190b-e47b-455f-b05e-8c132a05534c"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="218">Parametre</th><th width="80.33333333333331">Tip</th><th width="90">Zorunlu</th><th width="95">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>Id
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Bağlantınıza ait Id bilgisi</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "status": true
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 6. Bağlantı Kopar

Fiziksel Pos bağlantınızı pasife almak / koparmak için bu servis üzerinden alabilirsiniz

<mark style="color:orange;">`PUT`</mark> `{{Base Address}}/api/connection/disconnect`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Bağlantı Kopar** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "Id": "70b2190b-e47b-455f-b05e-8c132a055300"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="218">Parametre</th><th width="80.33333333333331">Tip</th><th width="90">Zorunlu</th><th width="95">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>Id
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Bağlantınıza ait Id bilgisi</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "status": true
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 7. Tekrar Bağla

Fiziksel Pos bağlantısı koparılmış bağlantınızı aktif etmek için bu servis üzerinden alabilirsiniz

<mark style="color:orange;">`PUT`</mark> `{{Base Address}}/api/connection/reconnect`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Tekrar Bağla** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "Id": "70b2190b-e47b-455f-b05e-8c132a055300"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="218">Parametre</th><th width="80.33333333333331">Tip</th><th width="90">Zorunlu</th><th width="95">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>Id
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Bağlantınıza ait Id bilgisi</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "status": true
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 3. Terminal


# 1. Liste

Fiziksel Pos bağlantılarınızın hepsine ait terminallerin listesini bu servis üzerinden alabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/terminal/list`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Bağlantı Listesi** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "pageIndex": 0,
  "pageSize": 10
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Items": [
            {
                "Id": "c5e049d4-626f-4e0e-81a9-18a4e9da0e32",
                "ConnectionId": "70b2190b-e47b-455f-b05e-8c132a05534c",
                "BrandId": 10,
                "ProviderId": 10,
                "RegionId": 1,
                "ConnectionName": "Varsayılan 1",
                "SourceId": null,
                "TerminalId": "10177",
                "SerialNo": "PAV960000015-passive",
                "SourceCreatedDate": null,
                "SourceUpdateDate": null,
                "MerchantId": "1308"
            },
            {
                "Id": "3332d81c-e047-4bef-8385-6f8eba337fac",
                "ConnectionId": "1b63d83f-d8ba-4476-9886-4b2f1d103e74",
                "BrandId": 10,
                "ProviderId": 30,
                "RegionId": 1,
                "ConnectionName": "Varsayılan 2",
                "SourceId": null,
                "TerminalId": "10040",
                "SerialNo": "PAV860027766",
                "SourceCreatedDate": null,
                "SourceUpdateDate": null,
                "MerchantId": "1308"
            },
            {
                "Id": "ead51e59-33ea-49e3-bd47-19673794dce9",
                "ConnectionId": "1b63d83f-d8ba-4476-9886-4b2f1d103e74",
                "BrandId": 10,
                "ProviderId": 30,
                "RegionId": 1,
                "ConnectionName": "Varsayılan 2",
                "SourceId": null,
                "TerminalId": "10177",
                "SerialNo": "PAV960000015-passive",
                "SourceCreatedDate": null,
                "SourceUpdateDate": null,
                "MerchantId": "1308"
            },
            {
                "Id": "38e895c3-1a9a-4b73-8816-8557d1d031d6",
                "ConnectionId": "70b2190b-e47b-455f-b05e-8c132a05534c",
                "BrandId": 10,
                "ProviderId": 10,
                "RegionId": 1,
                "ConnectionName": "Varsayılan 1",
                "SourceId": null,
                "TerminalId": "10040",
                "SerialNo": "PAV860027766",
                "SourceCreatedDate": null,
                "SourceUpdateDate": null,
                "MerchantId": "1308"
            }
        ],
        "Pagination": {
            "CurrentPage": 0,
            "PageCount": 1,
            "PageSize": 10,
            "TotalCount": 4
        }
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Liste (ByConnection)

Fiziksel Pos bağlantılarınıza ait terminallerin bağlantı özelinde listesini bu servis üzerinden alabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/terminal/`<mark style="color:red;">`{ConnectionId}`</mark>`/list`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Bağlantı Listesi** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "pageIndex": 0,
  "pageSize": 10
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Items": [
            {
                "Id": "c5e049d4-626f-4e0e-81a9-18a4e9da0e32",
                "ConnectionId": "70b2190b-e47b-455f-b05e-8c132a05534c",
                "BrandId": 10,
                "ProviderId": 10,
                "RegionId": 1,
                "ConnectionName": "Varsayılan 1",
                "SourceId": null,
                "TerminalId": "10177",
                "SerialNo": "PAV960000015-passive",
                "SourceCreatedDate": null,
                "SourceUpdateDate": null,
                "MerchantId": "1308"
            },
            {
                "Id": "3332d81c-e047-4bef-8385-6f8eba337fac",
                "ConnectionId": "1b63d83f-d8ba-4476-9886-4b2f1d103e74",
                "BrandId": 10,
                "ProviderId": 30,
                "RegionId": 1,
                "ConnectionName": "Varsayılan 2",
                "SourceId": null,
                "TerminalId": "10040",
                "SerialNo": "PAV860027766",
                "SourceCreatedDate": null,
                "SourceUpdateDate": null,
                "MerchantId": "1308"
            },
            {
                "Id": "ead51e59-33ea-49e3-bd47-19673794dce9",
                "ConnectionId": "1b63d83f-d8ba-4476-9886-4b2f1d103e74",
                "BrandId": 10,
                "ProviderId": 30,
                "RegionId": 1,
                "ConnectionName": "Varsayılan 2",
                "SourceId": null,
                "TerminalId": "10177",
                "SerialNo": "PAV960000015-passive",
                "SourceCreatedDate": null,
                "SourceUpdateDate": null,
                "MerchantId": "1308"
            },
            {
                "Id": "38e895c3-1a9a-4b73-8816-8557d1d031d6",
                "ConnectionId": "70b2190b-e47b-455f-b05e-8c132a05534c",
                "BrandId": 10,
                "ProviderId": 10,
                "RegionId": 1,
                "ConnectionName": "Varsayılan 1",
                "SourceId": null,
                "TerminalId": "10040",
                "SerialNo": "PAV860027766",
                "SourceCreatedDate": null,
                "SourceUpdateDate": null,
                "MerchantId": "1308"
            }
        ],
        "Pagination": {
            "CurrentPage": 0,
            "PageCount": 1,
            "PageSize": 10,
            "TotalCount": 4
        }
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 3. Senkronize Et

Fiziksel Pos bağlantılarınıza ait terminallerin Paywall-Sağlayıcı arasındaki senkronizasyonu için bu servisi kullanabilirsiniz.

{% hint style="info" %}
**Örnek Akış:** Şirketinize yeni 100 adet terminal daha konumlandırdınız. Paywall terminallerin senkronizasyonunu belli bir periyotta yapmaktadır ancak akışınız gereği senkronizasyonu tetikleyebilir. Paywall'un periyodunu beklemeden senkronizasyon emri verebilirsiniz
{% endhint %}

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/terminal/sync`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Terminal Senkronizasyon Emri** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "ConnectionId": "70b2190b-e47b-455f-b05e-8c132a05534c"
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": true,
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 4. Bağlantı Durumu

Belli bir terminalin Paywall sistemine bağlı olup olmadığını kontrol etmeniz için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/terminal/connectivity/check`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Terminal Bağlantı Durumu** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "TerminalId": "6f297d9a-758b-4de4-a837-9d8e37179b8f",
    "TerminalTagCode": ""
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "IsSocketConnected": true
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 4. Terminal Etiketi


# 1. Liste

Terminalinize ait etiketleri listesini bu servis üzerinden alabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/terminal/tag/list`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Terminal Etiket Listeleme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "pageIndex": 0,
  "pageSize": 10,
  "terminalId": "38e895c3-1a9a-4b73-8816-8557d1d031d6" // Terminal Id
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Items": [
            {
                "Id": "3f13e5ab-0087-4267-b8a6-162e6c6963e6",
                "TerminalId": "38e895c3-1a9a-4b73-8816-8557d1d031d6",
                "Name": "Levent Şube 1. Cihaz",
                "Code": "sube_levent_cihaz_1",
                "IsActive": false,
                "CreatedDate": "2024-09-01T19:13:32.546991",
                "UpdateDate": null
            }
        ],
        "Pagination": {
            "CurrentPage": 0,
            "PageCount": 1,
            "PageSize": 10,
            "TotalCount": 1
        }
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Ekle

Terminallerinize etiketi eklemek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/terminal/tag`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Terminal Etiket Ekleme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "TerminalId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "Name": "Levent Şube 2. Cihaz",
  "Code": "levent_sube_cihaz_2"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="218">Parametre</th><th width="80.33333333333331">Tip</th><th width="90">Zorunlu</th><th width="122">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalId
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Terminalinizin Id'si</td></tr><tr><td><pre><code>Name
</code></pre></td><td>string</td><td>Evet</td><td>100</td><td>Etiket ismi</td></tr><tr><td><pre><code>Code
</code></pre></td><td>string</td><td>Evet</td><td>25</td><td>Etiket'e ait <mark style="color:red;"><strong>benzersiz</strong></mark> kod</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "status": true
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 3. Güncelle

Terminallerinize etiketi güncelleme işlemi için bu servisi kullanabilirsiniz

<mark style="color:orange;">`PUT`</mark> `{{Base Address}}/api/terminal/tag`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Terminal Etiket Güncelleme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "TerminalTagId": "00a85f64-5717-4562-b3fc-2c963f66afa6",
  "Name": "Levent Şube 3. Cihaz",
  "Code": "levent_sube_cihaz_3",
  "IsActive": false
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="218">Parametre</th><th width="80.33333333333331">Tip</th><th width="90">Zorunlu</th><th width="138">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalId
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Terminalinizin Id'si</td></tr><tr><td><pre><code>Name
</code></pre></td><td>string</td><td>Evet</td><td>100</td><td>Etiket ismi</td></tr><tr><td><pre><code>Code
</code></pre></td><td>string</td><td>Evet</td><td>25</td><td>Etiket'e ait <mark style="color:red;"><strong>benzersiz</strong></mark> kod</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açılama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "status": true
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 4. Sil

Terminallerinize etiketi silme işlemi için bu servisi kullanabilirsiniz

<mark style="color:red;">`DELETE`</mark> `{{Base Address}}/api/terminal/tag`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Terminal Etiket Silme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "TerminalTagId": "00a85f64-5717-4562-b3fc-2c963f66afa6"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="218">Parametre</th><th width="80.33333333333331">Tip</th><th width="90">Zorunlu</th><th width="124">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalId
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Terminalinizin Id'si</td></tr><tr><td><pre><code>Name
</code></pre></td><td>string</td><td>Evet</td><td>100</td><td>Etiket ismi</td></tr><tr><td><pre><code>Code
</code></pre></td><td>string</td><td>Evet</td><td>25</td><td>Etiket'e ait <mark style="color:red;"><strong>benzersiz</strong></mark> kod</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "status": true
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 5. Eşleşme


# Async

Async Eşleşme

Fiziksel pos sağlayıcılarının <mark style="color:yellow;">**kendi (Pavo vb)**</mark> uygulamalarının kullanılması durumunda kullanılan akışlar, Paywall ekosisteminde "Async" olarak adlandırılır


# 1. Talep Et

Terminallerinize async bağlantı kurma talebi göndermek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/pair/async/request`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Async Eşleşme Talep Etme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% hint style="warning" %}
**Dikkat**: TerminalId veya TerminalTagCode parametrelerinden sadece biriyle işlem yapılabilir. 2'sini aynı anda göndermeyi denediğinizde servis uyarı döner
{% endhint %}

{% tabs %}
{% tab title="Json" %}

```json
{
    // "TerminalId": "38e895c3-1a9a-4b73-8816-8557d1d031d6"
    "TerminalTagCode": "dükkan_1"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="80.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalId
</code></pre></td><td>Guid</td><td>Evet/Hayır</td><td>-</td><td>Terminalinizin Id'si</td></tr><tr><td><pre><code>TerminalTagCode
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>25</td><td>Etiket kodu</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "PairAsyncRequestId": "4c1bcf08-d842-4e4a-9570-449c1f364f5c",
        "PairCode": "902997"
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PairAsyncRequestId
</code></pre></td><td>Guid</td><td>Eşleşme talep kimliğidir. Diğer gerek duyulan servislerde kullanılmaktadır. Kendi tarafınızda saklamalısınız</td></tr><tr><td><pre><code>PairCode
</code></pre></td><td>string</td><td>Eşleşme kodu yine tarafınızda saklanmalı ve cihaza girilmesi için cihaz kullanıcısına iletilmelidir</td></tr></tbody></table>


# 2. Talep Onayla

Terminallerinize async bağlantı kurma talebi göndermek için bu servisi kullanabilirsiniz

<mark style="color:orange;">`PUT`</mark> `{{Base Address}}/api/pair/async/confirm`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Async Eşleşme Onaylama** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "PairAsyncRequestId": "4c1bcf08-d842-4e4a-9570-449c1f364f5c"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="80.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PairAsyncRequestId
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Eşleşme talep kimliği</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "TerminalPairId": "616e4bc7-8661-4040-86b8-e660b936b85f"
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalPairId
</code></pre></td><td>Guid</td><td>Saklanması zorunlu değildir. Cihazın eşleşme kimlik bilgisidir</td></tr></tbody></table>


# 3. Eşleşme Kopar

Terminalinizle kurduğunuz async eşleşmeyi kopartmak için bu servisi kullanabilirsiniz

<mark style="color:red;">`DELETE`</mark> `{{Base Address}}/api/pair/async/unpair`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Async Eşleşme Kopar** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "TerminalTagCode": "levent_sube_pos_1"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="80.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalTagCode
</code></pre></td><td>string</td><td>Evet</td><td>25</td><td>Terminalinize verdiğiniz etiket kodu</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "TerminalPairId": "616e4bc7-8661-4040-86b8-e660b936b85f"
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalPairId
</code></pre></td><td>Guid</td><td>Saklanması zorunlu değildir. Cihazın eşleşme kimlik bilgisidir</td></tr></tbody></table>


# 4. Talep İptali

Terminalinizle async eşleşme talebinizi iptal etmek için bu servisi kullanabilirsiniz

<mark style="color:red;">`DELETE`</mark> `{{Base Address}}/api/pair/async/request/delete`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Async Eşleşme Talep İptali** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "PairAsyncRequestId": "4c1bcf08-d842-4e4a-9570-449c1f364f5c"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="80.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PairAsyncRequestId
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Eşleşme talep kimliği</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "PairRequestId": "93d27c03-c38e-4711-819b-c796f009c17f"
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Sync

Sync Eşleşme

Fiziksel pos dünyasında <mark style="color:green;">**PayWall'un**</mark> kendi uygulamalarını kullanmanız durumunda kullanılan akışlar, PayWall ekosisteminde "Sync" olarak adlandırılır


# 1. Talep Et

Terminallerinize sync bağlantı kurma talebi göndermek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/pair/sync/request`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Sync Eşleşme Talep Etme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% hint style="warning" %}
**Dikkat**: TerminalId veya TerminalTagCode parametrelerinden sadece biriyle işlem yapılabilir. 2'sini aynı anda göndermeyi denediğinizde servis uyarı döner
{% endhint %}

{% tabs %}
{% tab title="Json" %}

```json
{
    // "TerminalId": "38e895c3-1a9a-4b73-8816-8557d1d031d6"
    "TerminalTagCode": "dükkan_1"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="80.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalId
</code></pre></td><td>Guid</td><td>Evet/Hayır</td><td>-</td><td>Terminalinizin Id'si</td></tr><tr><td><pre><code>TerminalTagCode
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>25</td><td>Etiket kodu</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "PairRequestId": "765c1ea9-bf03-4ee5-8d77-8e4893e5afe3",
        "TerminalId": "38e895c3-1a9a-4b73-8816-8557d1d031d6",
        "PairCode": "949161"
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PairRequestId
</code></pre></td><td>Guid</td><td>Eşleşme talep kimliğidir. Diğer gerek duyulan servislerde kullanılmaktadır. Kendi tarafınızda saklamalısınız</td></tr><tr><td><pre><code>TerminalId
</code></pre></td><td>Guid</td><td>Talepte bulunduğunuz terminale ait kimlik bilgisi</td></tr><tr><td><pre><code>PairCode
</code></pre></td><td>string</td><td>Eşleşme kodu yine tarafınızda saklanmalı ve cihaza girilmesi için cihaz kullanıcısına iletilmelidir</td></tr></tbody></table>


# 2. Eşleşme Kopar

Terminalinizle kurduğunuz sync eşleşmeyi kopartmak için bu servisi kullanabilirsiniz

<mark style="color:red;">`DELETE`</mark> `{{Base Address}}/api/pair/sync/unpair`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Sync Eşleşme Kopar** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "TerminalTagCode": "levent_sube_pos_1"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="80.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalTagCode
</code></pre></td><td>string</td><td>Evet</td><td>25</td><td>Terminalinize verdiğiniz etiket kodu</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "TerminalPairId": "616e4bc7-8661-4040-86b8-e660b936b85f"
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalPairId
</code></pre></td><td>Guid</td><td>Saklanması zorunlu değildir. Cihazın eşleşme kimlik bilgisidir</td></tr></tbody></table>


# 3. Talep İptali

Terminalinizle sync eşleşme talebinizi iptal etmek için bu servisi kullanabilirsiniz

<mark style="color:red;">`DELETE`</mark> `{{Base Address}}/api/pair/sync/request/delete`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Sync Eşleşme Talep İptali** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "PairRequestId": "4c1bcf08-d842-4e4a-9570-449c1f364f5c"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="80.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PairRequestId
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Eşleşme talep kimliği</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Status": true
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 6. Ödeme


# Async

Async Ödeme

Fiziksel pos sağlayıcılarının <mark style="color:yellow;">**kendi (Pavo vb)**</mark> uygulamalarının kullanılması durumunda kullanılan akışlar, Paywall ekosisteminde "Async" olarak adlandırılır


# 1. Satış

Terminallerinize async satış emri göndermek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/async/sale`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Async Satış** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "TerminalId": "38e895c3-1a9a-4b73-8816-8557d1d031d6",
    // "TerminalTagCode": "",
    "MerchantUniqueCode": "{{$guid}}",
    "DisplayCode": "Kişisel Bakım",
    "Amount": 22,
    "CurrencyId": 1,
    "Methods": [
        {
            "PaymentMethodId": 1
        },
        {
            "PaymentMethodId": 2
        }
    ],
    "CallbackAddress": "https://webhook.site/276d912e-090e-461a-aad5-5f137ab03cf4",
    "SplitPaymentSupport": false,
    "Customer": {
        "Type": 1,
        "FirstName": "eda",
        "MiddleName": "seda",
        "LastName": "meda",
        "CompanyName": "",
        "TaxOfficeCode": "",
        "TaxNumber": "",
        "Phone": "",
        "Email": "",
        "Identity": "11111111110",
        "Country": "Türkiye",
        "City": "İstanbul",
        "District": "Mesela",
        "Neighborhood": "Öyle",
        "Address": "Tam sokağın ortası"
    },
    "Products": [
        {
            "Name": "Saç Tıraşı",
            "TaxGroupId": 10,
            "UnitCodeId": 1,
            "Amount": 22,
            "Quantity": 1,
            "PaymentMethodId": 2
        }
    ],
    "SkipPrintCustomer": false,
    "SkipPrintMerchant": false
    "SkipPaymentOptionScreen": false,
    "ReceiptOptions": { // Opsiyonal
        "TopSupport": true,
        "Top": {
            "Text": "Üst başlık",
            "FontSize": 10
        },
        "BottomSupport": true,
        "Bottom": {
            "Text": "Alt başlık",
            "FontSize": 50
        }
    }
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="98.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalId
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>Guid</td><td>Terminalinizin kimlik (Id) bilgisiniz</td></tr><tr><td><pre><code>TerminalTagCode
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>25</td><td>Etiket kodu</td></tr><tr><td><pre><code>MerchantUniqueCode
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Ödemenin sizin tarafınızdan oluşturulan takip numarası</td></tr><tr><td><pre><code>Amount
</code></pre></td><td>decimal</td><td>Evet</td><td>-</td><td>Satış tutarı</td></tr><tr><td><pre><code>DisplayCode
</code></pre></td><td>string</td><td>Hayır</td><td>25</td><td>Ödemenin terminalde görüntülenmesi anında görülecek ödeme kodu</td></tr><tr><td><pre><code>CurrencyId
</code></pre></td><td>string</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/QsatIyGIDePwte5dqDwx">Para Birimi</a></td></tr><tr><td><pre><code>CallbackAddress
</code></pre></td><td>string</td><td>Hayır</td><td>150</td><td>Ödeme durumunu ilettiğimiz geri bildirim adresiniz<br><br>Bkz: <a href="/pages/hXX3TGYPp3u25HkpxjWN">Örnek</a> </td></tr><tr><td><pre><code>Methods
</code></pre></td><td>Array&#x3C;<mark style="color:orange;">Method</mark>></td><td>Hayır</td><td>-</td><td>Ödemenin hangi yöntemleri desteklemesini istediğinizi bu parametrelerle belirleyebilirsiniz</td></tr><tr><td><pre><code>Customer
</code></pre></td><td><mark style="color:orange;">Customer</mark></td><td>Hayır</td><td>-</td><td>Ödemenin gerçekleştirildiği müşterinin bilgileri</td></tr><tr><td><pre><code>Products
</code></pre></td><td>Array&#x3C;<mark style="color:orange;">Product</mark>></td><td>Evet</td><td>-</td><td>Ürün bilgileri</td></tr></tbody></table>

<mark style="color:orange;">**Yöntem Nesnesi \<Method>**</mark>

<table><thead><tr><th width="214">Parametre</th><th width="106.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="114">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentMethodId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td><a href="/pages/Fua8gSCQ6ume8MJIuO8u">Ödeme Yöntemleri</a></td></tr></tbody></table>

<mark style="color:orange;">**Yöntem Nesnesi \<ReceiptOptions>**</mark>

<table><thead><tr><th width="237">Parametre</th><th width="97.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="123">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TopSupport
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Fiş'in üst kısmına yazı konumlandırılacak mı?</td></tr><tr><td><pre><code>Top > Text
</code></pre></td><td>string</td><td>Evet</td><td>150</td><td>Fiş'in üst kısmına yazılacak bilgi</td></tr><tr><td><pre><code>Top > FontSize
</code></pre></td><td>int</td><td>Evet</td><td>2</td><td>Fiş'in üst kısmına yazılacak bilginin boyutu</td></tr><tr><td><pre><code>BottomSupport
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Fiş'in alt kısmına yazı konumlandırılacak mı?</td></tr><tr><td><pre><code>Bottom > Text
</code></pre></td><td>string</td><td>Evet</td><td>150</td><td>Fiş'in alt kısmına yazılacak bilgi</td></tr><tr><td><pre><code>Bottom > FontSize
</code></pre></td><td>int</td><td>Evet</td><td>2</td><td>Fiş'in alt kısmına yazılacak bilginin boyutu</td></tr></tbody></table>

<mark style="color:orange;">**Müşteri Nesnesi \<Customer>**</mark>

<table><thead><tr><th width="188">Parametre</th><th width="116.33333333333331">Tip</th><th width="134">Zorunlu</th><th width="129">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>Type
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Müşteri Tipleri<br><br>Bkz: <a href="/pages/csxxzrJZKW73CRRvRwH3">Tipleri</a></td></tr><tr><td><pre><code>FirstName
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>50</td><td>Müşteri adı</td></tr><tr><td><pre><code>MiddleName
</code></pre></td><td>string</td><td>Hayır</td><td>50</td><td>Müşteri 2. adı</td></tr><tr><td><pre><code>LastName
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>50</td><td>Müşteri soyadı</td></tr><tr><td><pre><code>CompanyName
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>175</td><td>Şirket ismi</td></tr><tr><td><pre><code>TaxOfficeCode
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>50</td><td>Şirket vergi daire kodu</td></tr><tr><td><pre><code>TaxNumber
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>25</td><td>Şirket vergi numarası</td></tr><tr><td><pre><code>Phone
</code></pre></td><td>string</td><td>Hayır</td><td>20</td><td>Telefon</td></tr><tr><td><pre><code>Email
</code></pre></td><td>string</td><td>Hayır</td><td>100</td><td>Eposta adresi</td></tr><tr><td><pre><code>Identity
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>20</td><td>Kimlik numarası</td></tr><tr><td><pre><code>Country
</code></pre></td><td>string</td><td>Hayır</td><td>50</td><td>Ülke</td></tr><tr><td><pre><code>City
</code></pre></td><td>string</td><td>Hayır</td><td>100</td><td>Şehir</td></tr><tr><td><pre><code>District
</code></pre></td><td>string</td><td>Hayır</td><td>100</td><td>Semt/Mahalle</td></tr><tr><td><pre><code>Neighborhood
</code></pre></td><td>string</td><td>Hayır</td><td>100</td><td>Sokak</td></tr><tr><td><pre><code>Address
</code></pre></td><td>string</td><td>Hayır</td><td>255</td><td>Açık adres</td></tr></tbody></table>

<mark style="color:orange;">**Ürün Nesnesi \<Product>**</mark>

<table><thead><tr><th width="188">Parametre</th><th width="123.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="132">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>Name
</code></pre></td><td>string</td><td>Evet</td><td>75</td><td>Ürün adı</td></tr><tr><td><pre><code>TaxGroupId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Ürünün KDV dilimi<br><br>Bkz: <a href="/pages/DtntSxqoQvScYjhrCO68">Vergi Grubu</a></td></tr><tr><td><pre><code>UnitCodeId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Ürünün birim bilgisi<br><br>Bkz: <a href="/pages/x8WeJ6R6UKUmLQfvqvXM">Birim Kodları</a></td></tr><tr><td><pre><code>CurrencyId
</code></pre></td><td>string</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/QsatIyGIDePwte5dqDwx">Para Birimi</a></td></tr><tr><td><pre><code>Amount
</code></pre></td><td>decimal</td><td>Evet</td><td>150</td><td>Ürün tutarı<br><br><strong>Not:</strong> Ürün tutarlarının toplamı satış tutarına eşit olmalıdır</td></tr><tr><td><pre><code>Quantity
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Ürün adedi</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "PaymentRequestId": "1eb856a8-1d41-49ab-8994-ecee2880d62c",
        "PaymentRequestActivityId": "2015c508-4029-4f6b-b7e2-4bf34a213c41",
        "PaymentRequestActivityTypeId": 1,
        "PaymentStatus": 4
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Async ödemenin Paywall'daki kimlik bilgisidir. <strong>Saklanmalıdır</strong></td></tr><tr><td><pre><code>PaymentRequestActivityId
</code></pre></td><td>Guid</td><td>Async ödemenin son hareketinin kimlik bilgisidir</td></tr><tr><td><pre><code>PaymentRequestActivityTypeId
</code></pre></td><td>int</td><td>Async ödemenin son işlem tipi<br><br>Bkz: <a href="/pages/r4byguUuzDCdaFZE5hOM">Ödeme Tipi</a></td></tr><tr><td><pre><code>PaymentStatus
</code></pre></td><td>int</td><td>Async ödemenin son durumu<br><br>Bkz: <a href="/pages/xRrVHeb3yeYB9gbKcgUS">Ödeme Durumu</a></td></tr></tbody></table>


# 2. İptal

Terminallerinize async iptal emri göndermek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/async/cancel`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Async İptal** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "PaymentRequestId": "7cc7c8e8-9d92-41b6-9378-e9ecef5a7812"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="98.33333333333331">Tip</th><th width="112">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Evet</td><td>Satış emri anında Paywall'dan dönen kimlik bilgisidir</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "paymentRequestId": "72ec8714-d116-4306-8881-38a43c485da9",
        "paymentRequestActivityId": "3a7deace-d437-4d3f-8ef8-1cba82f18e8f",
        "paymentRequestActivityTypeId": 2,
        "paymentStatus": 4
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Async ödemenin PayWall'daki kimlik bilgisidir. <strong>Saklanmalıdır</strong></td></tr><tr><td><pre><code>PaymentRequestActivityId
</code></pre></td><td>Guid</td><td>Async ödemenin son hareketinin kimlik bilgisidir</td></tr><tr><td><pre><code>PaymentRequestActivityTypeId
</code></pre></td><td>int</td><td>Async ödemenin son işlem tipi<br><br>Bkz: <a href="/pages/r4byguUuzDCdaFZE5hOM">Ödeme Tipi</a></td></tr><tr><td><pre><code>PaymentStatus
</code></pre></td><td>int</td><td>Async ödemenin son durumu<br><br>Bkz: <a href="/pages/xRrVHeb3yeYB9gbKcgUS">Ödeme Durumu</a></td></tr></tbody></table>


# Sync

Sync Ödeme

Fiziksel pos dünyasında <mark style="color:green;">**PayWall'un**</mark> kendi uygulamalarını kullanmanız durumunda kullanılan akışlar, PayWall ekosisteminde "Sync" olarak adlandırılır.

Sync ödemeler cihaza direkt olarak sunucularda gerçek zamanlı (real-time) şekilde iletilir


# 1. Satış

Terminallerinize sync satış emri göndermek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/sync/sale`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Sync Satış** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "TerminalId": "8ff33705-57c7-42dc-8341-a0053e7f3009",
    "SendNotificationDeviceDisconnected": false,
    // "TerminalTagCode": "testpos",
    "MerchantUniqueCode": "{{$guid}}",
    "DisplayCode": "Kişisel Bakım",
    "Amount": 22,
    "CurrencyId": 1,
    "Methods": [
        {
            "PaymentMethodId": 1
        }
    ],
    "CallbackAddress": "https://webhook.site/4768e8e7-12c9-4c3f-949c-c7a616e72acf",
    "SplitPaymentSupport": false,
    "Customer": {
        "Type": 1,
        "FirstName": "eda",
        "MiddleName": "seda",
        "LastName": "meda",
        "CompanyName": "",
        "TaxOfficeCode": "",
        "TaxNumber": "",
        "Phone": "",
        "Email": "",
        "Identity": "11111111110",
        "Country": "Türkiye",
        "City": "İstanbul",
        "District": "Mesela",
        "Neighborhood": "Öyle",
        "Address": "Tam sokağın ortası"
    },
    "Products": [
        {
            "Name": "Saç Tıraşı",
            "TaxGroupId": 10,
            "UnitCodeId": 1,
            "Amount": 22,
            "Quantity": 1,
            "PaymentMethodId": 2
        }
    ],
    "SkipPrintCustomer": false,
    "SkipPrintMerchant": false,
    "SkipPaymentOptionScreen": false,
    "ReceiptOptions": { // Opsiyonal
        "TopSupport": true,
        "Top": {
            "Text": "Üst başlık",
            "FontSize": 10
        },
        "BottomSupport": true,
        "Bottom": {
            "Text": "Alt başlık",
            "FontSize": 50
        }
    }
}

```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="98.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="116">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TerminalId
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>Guid</td><td>Terminalinizin kimlik (Id) bilgisiniz</td></tr><tr><td><pre><code>SendNotificationDeviceDisconnected
</code></pre></td><td>bool</td><td>Hayır</td><td>-</td><td>Cihaz Paywall sunucularına bağlı değilse (kilitli modda) ödemeler push bildirimi olarak iletilsin mi?</td></tr><tr><td><pre><code>TerminalTagCode
</code></pre></td><td>string</td><td>Evet</td><td>25</td><td>Etiket kodu</td></tr><tr><td><pre><code>MerchantUniqueCode
</code></pre></td><td>Guid</td><td>Evet</td><td>-</td><td>Ödemenin sizin tarafınızdan oluşturulan takip numarası</td></tr><tr><td><pre><code>SplitPaymentSupport
</code></pre></td><td>bool</td><td>Hayır</td><td>-</td><td>Her ürün özelinde ödeme almak için kullanılır</td></tr><tr><td><pre><code>Amount
</code></pre></td><td>decimal</td><td>Evet</td><td>-</td><td>Satış tutarı</td></tr><tr><td><pre><code>DisplayCode
</code></pre></td><td>string</td><td>Hayır</td><td>25</td><td>Ödemenin terminalde görüntülenmesi anında görülecek ödeme kodu</td></tr><tr><td><pre><code>CurrencyId
</code></pre></td><td>string</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/QsatIyGIDePwte5dqDwx">Para Birimi</a></td></tr><tr><td><pre><code>CallbackAddress
</code></pre></td><td>string</td><td>Hayır</td><td>150</td><td>Ödeme durumunu ilettiğimiz geri bildirim adresiniz<br><br>Bkz: <a href="/pages/hXX3TGYPp3u25HkpxjWN">Örnek</a> </td></tr><tr><td><pre><code>Methods
</code></pre></td><td>Array&#x3C;<mark style="color:orange;">Method</mark>></td><td>Hayır</td><td>-</td><td>Ödemenin hangi yöntemleri desteklemesini istediğinizi bu parametrelerle belirleyebilirsiniz</td></tr><tr><td><pre><code>Customer
</code></pre></td><td><mark style="color:orange;">Customer</mark></td><td>Hayır</td><td>-</td><td>Ödemenin gerçekleştirildiği müşterinin bilgileri</td></tr><tr><td><pre><code>Products
</code></pre></td><td>Array&#x3C;<mark style="color:orange;">Product</mark>></td><td>Evet</td><td>-</td><td>Ürün bilgileri</td></tr><tr><td><pre><code>SkipPrintCustomer
</code></pre></td><td>bool</td><td>Hayır</td><td>-</td><td>Müşteri fişinin çıktı alma işlemi yapılmaz</td></tr><tr><td><pre><code>SkipPrintMerchant
</code></pre></td><td>bool</td><td>Hayır</td><td>-</td><td>Kurum fişinin çıktı alma işlemi yapılmaz</td></tr><tr><td><pre><code>SkipPaymentOptionScreen
</code></pre></td><td>bool</td><td>Hayır</td><td>-</td><td>Ödeme anında kartlı işlem detay ekranı ekranda gösterilmez (Taksit vb)</td></tr><tr><td><pre><code>ReceiptOptions
</code></pre></td><td><mark style="color:orange;">ReceiptOptions</mark></td><td>Hayır</td><td>-</td><td>Ödeme sonrasında çıkacak fiş için özel ayarlamalar</td></tr></tbody></table>

<mark style="color:orange;">**Yöntem Nesnesi \<Method>**</mark>

<table><thead><tr><th width="214">Parametre</th><th width="97.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="123">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentMethodId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td><a href="/pages/Fua8gSCQ6ume8MJIuO8u">Ödeme Yöntemleri</a></td></tr></tbody></table>

<mark style="color:orange;">**Yöntem Nesnesi \<ReceiptOptions>**</mark>

<table><thead><tr><th width="237">Parametre</th><th width="97.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="123">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>TopSupport
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Fiş'in üst kısmına yazı konumlandırılacak mı?</td></tr><tr><td><pre><code>Top > Text
</code></pre></td><td>string</td><td>Evet</td><td>150</td><td>Fiş'in üst kısmına yazılacak bilgi</td></tr><tr><td><pre><code>Top > FontSize
</code></pre></td><td>int</td><td>Evet</td><td>2</td><td>Fiş'in üst kısmına yazılacak bilginin boyutu</td></tr><tr><td><pre><code>BottomSupport
</code></pre></td><td>bool</td><td>Evet</td><td>-</td><td>Fiş'in alt kısmına yazı konumlandırılacak mı?</td></tr><tr><td><pre><code>Bottom > Text
</code></pre></td><td>string</td><td>Evet</td><td>150</td><td>Fiş'in alt kısmına yazılacak bilgi</td></tr><tr><td><pre><code>Bottom > FontSize
</code></pre></td><td>int</td><td>Evet</td><td>2</td><td>Fiş'in alt kısmına yazılacak bilginin boyutu</td></tr></tbody></table>

<mark style="color:orange;">**Müşteri Nesnesi \<Customer>**</mark>

<table><thead><tr><th width="188">Parametre</th><th width="135.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="150">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>Type
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Müşteri Tipleri<br><br>Bkz: <a href="/pages/csxxzrJZKW73CRRvRwH3">Tipleri</a></td></tr><tr><td><pre><code>FirstName
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>50</td><td>Müşteri adı</td></tr><tr><td><pre><code>MiddleName
</code></pre></td><td>string</td><td>Hayır</td><td>50</td><td>Müşteri 2. adı</td></tr><tr><td><pre><code>LastName
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>50</td><td>Müşteri soyadı</td></tr><tr><td><pre><code>CompanyName
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>175</td><td>Şirket ismi</td></tr><tr><td><pre><code>TaxOfficeCode
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>50</td><td>Şirket vergi daire kodu</td></tr><tr><td><pre><code>TaxNumber
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>25</td><td>Şirket vergi numarası</td></tr><tr><td><pre><code>Phone
</code></pre></td><td>string</td><td>Hayır</td><td>20</td><td>Telefon</td></tr><tr><td><pre><code>Email
</code></pre></td><td>string</td><td>Hayır</td><td>100</td><td>Eposta adresi</td></tr><tr><td><pre><code>Identity
</code></pre></td><td>string</td><td>Evet/Hayır</td><td>20</td><td>Kimlik numarası</td></tr><tr><td><pre><code>Country
</code></pre></td><td>string</td><td>Hayır</td><td>50</td><td>Ülke</td></tr><tr><td><pre><code>City
</code></pre></td><td>string</td><td>Hayır</td><td>100</td><td>Şehir</td></tr><tr><td><pre><code>District
</code></pre></td><td>string</td><td>Hayır</td><td>100</td><td>Semt/Mahalle</td></tr><tr><td><pre><code>Neighborhood
</code></pre></td><td>string</td><td>Hayır</td><td>100</td><td>Sokak</td></tr><tr><td><pre><code>Address
</code></pre></td><td>string</td><td>Hayır</td><td>255</td><td>Açık adres</td></tr></tbody></table>

<mark style="color:orange;">**Ürün Nesnesi \<Product>**</mark>

<table><thead><tr><th width="188">Parametre</th><th width="117.33333333333331">Tip</th><th width="112">Zorunlu</th><th width="145">Uzunluk</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>Name
</code></pre></td><td>string</td><td>Evet</td><td>75</td><td>Ürün adı</td></tr><tr><td><pre><code>TaxGroupId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Ürünün KDV dilimi<br><br>Bkz: <a href="/pages/DtntSxqoQvScYjhrCO68">Vergi Grubu</a></td></tr><tr><td><pre><code>UnitCodeId
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Ürünün birim bilgisi<br><br>Bkz: <a href="/pages/x8WeJ6R6UKUmLQfvqvXM">Birim Kodları</a></td></tr><tr><td><pre><code>CurrencyId
</code></pre></td><td>string</td><td>Evet</td><td>-</td><td>Bkz: <a href="/pages/QsatIyGIDePwte5dqDwx">Para Birimi</a></td></tr><tr><td><pre><code>Amount
</code></pre></td><td>decimal</td><td>Evet</td><td>150</td><td>Ürün tutarı<br><br><strong>Not:</strong> Ürün tutarlarının toplamı satış tutarına eşit olmalıdır</td></tr><tr><td><pre><code>Quantity
</code></pre></td><td>int</td><td>Evet</td><td>-</td><td>Ürün adedi</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "PaymentRequestId": "1eb856a8-1d41-49ab-8994-ecee2880d62c",
        "PaymentRequestActivityId": "2015c508-4029-4f6b-b7e2-4bf34a213c41",
        "PaymentRequestActivityTypeId": 1,
        "PaymentStatus": 4
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Async ödemenin Paywall'daki kimlik bilgisidir. <strong>Saklanmalıdır</strong></td></tr><tr><td><pre><code>PaymentRequestActivityId
</code></pre></td><td>Guid</td><td>Async ödemenin son hareketinin kimlik bilgisidir</td></tr><tr><td><pre><code>PaymentRequestActivityTypeId
</code></pre></td><td>int</td><td>Async ödemenin son işlem tipi<br><br>Bkz: <a href="/pages/r4byguUuzDCdaFZE5hOM">Ödeme Tipi</a></td></tr><tr><td><pre><code>PaymentStatus
</code></pre></td><td>int</td><td>Async ödemenin son durumu<br><br>Bkz: <a href="/pages/xRrVHeb3yeYB9gbKcgUS">Ödeme Durumu</a></td></tr></tbody></table>


# 2. Satış Geri Çek

Terminallerinize gönderilen sync satış emirlerini geri çekmek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/sync/sale/rollback`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="warning" %}
Satış emirlerinizi ilk 5 saniye içerisinde geri alamazsınız
{% endhint %}

{% hint style="warning" %}
Cihazda devreye giren satış emirleri geri alınamaz. **Satış emirlerinin geri alınabilmesi için cihaz tarafından teslim alınmamış olması gerekmektedir**
{% endhint %}

{% hint style="info" %}
Önemli: **Sync Satış Geri Çekme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "PaymentRequestId": "cc67bd38-ed83-4031-8be7-3ed4b80b7042"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="98.33333333333331">Tip</th><th width="112">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Evet</td><td>Satış emri anında Paywall'dan dönen kimlik bilgisidir</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "PaymentRequestId": "fb9c4719-945d-45b9-9f9c-fd79d8e4af85",
        "PaymentRequestActivityId": "3653663e-6237-42b3-8255-3951959c3fe1",
        "PaymentRequestActivityTypeId": 1,
        "PaymentStatus": 12
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="316">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Async ödemenin Paywall'daki kimlik bilgisidir. <strong>Saklanmalıdır</strong></td></tr><tr><td><pre><code>PaymentRequestActivityId
</code></pre></td><td>Guid</td><td>Async ödemenin son hareketinin kimlik bilgisidir</td></tr><tr><td><pre><code>PaymentRequestActivityTypeId
</code></pre></td><td>int</td><td>Async ödemenin son işlem tipi<br><br>Bkz: <a href="/pages/1xYupwNBhCGkf5K8pF0S">Ödeme Tipi</a></td></tr><tr><td><pre><code>PaymentStatus
</code></pre></td><td>int</td><td>Async ödemenin son durumu<br><br>Bkz: <a href="/pages/J3yOjFSwZlEKFz4zXQa7">Ödeme Durumu</a></td></tr></tbody></table>


# 3. İptal

Terminallerinize sync iptal emri göndermek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/sync/cancel`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Sync İptal** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "PaymentRequestId": "7cc7c8e8-9d92-41b6-9378-e9ecef5a7812",
    "SendNotificationDeviceDisconnected": false
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="98.33333333333331">Tip</th><th width="112">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Evet</td><td>Satış emri anında Paywall'dan dönen kimlik bilgisidir</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "paymentRequestId": "72ec8714-d116-4306-8881-38a43c485da9",
        "paymentRequestActivityId": "3a7deace-d437-4d3f-8ef8-1cba82f18e8f",
        "paymentRequestActivityTypeId": 2,
        "paymentStatus": 4
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="263">Parametre</th><th width="139.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Async ödemenin Paywall'daki kimlik bilgisidir. <strong>Saklanmalıdır</strong></td></tr><tr><td><pre><code>PaymentRequestActivityId
</code></pre></td><td>Guid</td><td>Async ödemenin son hareketinin kimlik bilgisidir</td></tr><tr><td><pre><code>PaymentRequestActivityTypeId
</code></pre></td><td>int</td><td>Async ödemenin son işlem tipi<br><br>Bkz: <a href="/pages/r4byguUuzDCdaFZE5hOM">Ödeme Tipi</a></td></tr><tr><td><pre><code>PaymentStatus
</code></pre></td><td>int</td><td>Async ödemenin son durumu<br><br>Bkz: <a href="/pages/xRrVHeb3yeYB9gbKcgUS">Ödeme Durumu</a></td></tr></tbody></table>


# 4. İptal Geri Çek

Terminallerinize gönderilen sync iptal emirlerini geri çekmek için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/sync/cancel/rollback`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="warning" %}
İptal emirlerinizi ilk 5 saniye içerisinde geri alamazsınız
{% endhint %}

{% hint style="warning" %}
Cihazda devreye giren iptal emirleri geri alınamaz. **İptal emirlerinin geri alınabilmesi için cihaz tarafından teslim alınmamış olması gerekmektedir**
{% endhint %}

{% hint style="info" %}
Önemli: **Sync İptal Geri Çekme** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
    "PaymentRequestId": "cc67bd38-ed83-4031-8be7-3ed4b80b7042"
}
```

{% endtab %}
{% endtabs %}

<table><thead><tr><th width="268">Parametre</th><th width="98.33333333333331">Tip</th><th width="112">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Evet</td><td>Satış emri anında PayWall'dan dönen kimlik bilgisidir</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "result": {
        "paymentRequestId": "72ec8714-d116-4306-8881-38a43c485da9",
        "paymentRequestActivityId": "3a7deace-d437-4d3f-8ef8-1cba82f18e8f",
        "paymentRequestActivityTypeId": 2,
        "paymentStatus": 4
    },
    "failed": false,
    "message": null,
    "clientMessage": null,
    "succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="319">Parametre</th><th width="83.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td><pre><code>PaymentRequestId
</code></pre></td><td>Guid</td><td>Async ödemenin Paywall'daki kimlik bilgisidir. <strong>Saklanmalıdır</strong></td></tr><tr><td><pre><code>PaymentRequestActivityId
</code></pre></td><td>Guid</td><td>Async ödemenin son hareketinin kimlik bilgisidir</td></tr><tr><td><pre><code>PaymentRequestActivityTypeId
</code></pre></td><td>int</td><td>Async ödemenin son işlem tipi<br><br>Bkz: <a href="/pages/1xYupwNBhCGkf5K8pF0S">Ödeme Tipi</a></td></tr><tr><td><pre><code>PaymentStatus
</code></pre></td><td>int</td><td>Async ödemenin son durumu<br><br>Bkz: <a href="/pages/J3yOjFSwZlEKFz4zXQa7">Ödeme Durumu</a></td></tr></tbody></table>


# 1. Ödemeler

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/list`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Ödeme Listesi** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "pageIndex": 0,
  "pageSize": 10,
  "startDate": "2024-12-23",
  "endDate": "2024-12-30"
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Items": [
            {
                "Id": "8850e51c-b09a-43fd-855f-83c4037cce45",
                "TerminalId": "38e895c3-1a9a-4b73-8816-8557d1d031d6",
                "ConnectionId": "70b2190b-e47b-455f-b05e-8c132a05534c",
                "ConnectionName": "Varsayılan 1",
                "ProviderId": 20,
                "ProviderName": "Vepara",
                "BrandId": 10,
                "BrandName": "Pavo",
                "RegionId": 1,
                "RegionName": "Turkey",
                "MerchantUniqueCode": "432e795d-1a69-4461-97c8-ebaab658ff55",
                "DisplayCode": "İndirimli Hizmet",
                "Amount": 1.44,
                "PaymentChannelId": 1,
                "PaymentChannelName": "Async",
                "CurrencyId": 1,
                "CurrencyName": "TRY",
                "IP": "::1",
                "PaymentRequestActivityId": "0f7dc0c2-8b3f-466e-b646-22b23e1fa052",
                "PaymentTypeId": 1,
                "PaymentTypeName": "Sale",
                "PaymentStatusId": 2,
                "PaymentStatusName": "SentToDevice",
                "Date": "2024-09-02T19:33:06.199765"
            }
        ],
        "Pagination": {
            "CurrentPage": 0,
            "PageCount": 1,
            "PageSize": 10,
            "TotalCount": 1
        }
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Ödeme/Hareketler

Gerçekleştirdiğiniz ödemelere ait işlem adımlarının listesini almak için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/activities`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Ödeme Hareketleri** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "pageIndex": 0,
  "pageSize": 10,
  "PaymentRequestId": "8850e51c-b09a-43fd-855f-83c4037cce45"
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Items": [
            {
                "Id": "65d79a67-335a-4a4f-b159-01f26315af95",
                "PaymentTypeId": 1,
                "PaymentTypeName": "Sale",
                "PaymentStatusId": 1,
                "PaymentStatusName": "Generated",
                "Date": "2024-09-02T19:33:06.247743"
            },
            {
                "Id": "0f7dc0c2-8b3f-466e-b646-22b23e1fa052",
                "PaymentTypeId": 1,
                "PaymentTypeName": "Sale",
                "PaymentStatusId": 2,
                "PaymentStatusName": "SentToDevice",
                "Date": "2024-09-02T19:33:06.700298"
            }
        ],
        "Pagination": {
            "CurrentPage": 0,
            "PageCount": 1,
            "PageSize": 10,
            "TotalCount": 2
        }
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 3. Ödeme/Ürünler

Gerçekleştirdiğiniz ödemelere ait işlem adımlarının listesini almak için bu servisi kullanabilirsiniz

<mark style="color:green;">`POST`</mark> `{{Base Address}}/api/payment/products`

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Ödeme Ürünleri** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servise gönderilmesi gereken body bilgileri şu şekildedir:**

{% tabs %}
{% tab title="Json" %}

```json
{
  "pageIndex": 0,
  "pageSize": 10,
  "PaymentRequestId": "8850e51c-b09a-43fd-855f-83c4037cce45"
}
```

{% endtab %}
{% endtabs %}

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "Items": [
            {
                "Id": "e9542707-459a-438f-8354-7388e5bdea5b",
                "Name": "Saç Tıraşı",
                "Amount": 1.44,
                "Quantity": 1,
                "TaxGroupId": 10,
                "TaxGroupName": "Ten",
                "UnitCodeId": 1,
                "UnitCodeName": "Kilogram"
            }
        ],
        "Pagination": {
            "CurrentPage": 0,
            "PageCount": 1,
            "PageSize": 10,
            "TotalCount": 1
        }
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 4. Sorgulama

Terminallerinize satış emirlerinizi sorgulamak için bu servisi kullanabilirsiniz

<mark style="color:blue;">`GET`</mark> `{{Base Address}}/api/payment/inquiry/`<mark style="color:red;">`{paymentRequestId}`</mark>

Yukarıda verilmiş olan adrese istek atmanız yeterli olacaktır. Test ortamı ve Gerçek ortam için 'Base Address' istediğiniz gibi kullanabilirsiniz.

{% hint style="info" %}
Önemli: **Ödeme Sorgulama** servisini kullanabilmeniz için 'Header' alanında '**apikeyprivate**' ve '**apiclientprivate**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PhysicalAPI Adresi**</mark>](/ortam)
{% endhint %}

#### Servise gönderilmesi gereken header bilgileri şu şekildedir:

<table><thead><tr><th width="243">Parametre</th><th width="106.33333333333331">Tip</th><th width="97">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>apikeyprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Key.</td></tr><tr><td>apiclientprivate</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Private Client.</td></tr></tbody></table>

**Servisten dönen cevap:**

<table><thead><tr><th width="182">Parametre</th><th width="107.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>Result</td><td>object</td><td>Servisin detayındaki bilgileri döner</td></tr><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Succeeded</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:green;">başarılı</mark> iste 'true' değerini döner</td></tr><tr><td>Failed</td><td>bool</td><td>True ya da false değeri döner. İşlem <mark style="color:red;">başarısız</mark> iste 'true' değerini döner</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>ClientMessage</td><td>string</td><td>Paywall hata kodlarının sabit değerlerini döner. Map'leme yapabilirsiniz</td></tr></tbody></table>

{% tabs %}
{% tab title="Json" %}
{% code overflow="wrap" lineNumbers="true" %}

```json5
{
    "Result": {
        "PaymentRequestId": "1eb856a8-1d41-49ab-8994-ecee2880d62c",
        "PaymentRequestActivityId": "78e71139-2227-48ee-9bf9-1e4389a399db",
        "TerminalId": "38e895c3-1a9a-4b73-8816-8557d1d031d6",
        "MerchantUniqueCode": "432e795d-1a69-4461-97c8-ebaab658ff47",
        "DisplayCode": "İndirimli Hizmet",
        "CallbackAddress": "https://webhook.site/445d7d94-962b-4350-a936-1a066c6367b3",
        "Amount": 1.44,
        "PaymentChannelId": 1,
        "PaymentChannel": "Async",
        "CurrencyId": 1,
        "Currency": "TRY",
        "IP": "::1",
        "PaymentTypeId": 1,
        "PaymentType": "Sale",
        "PaymentStatusId": 2,
        "PaymentStatus": "SentToDevice",
        "CreatedDate": "2024-09-02T13:52:34.504179",
        "ModifiedDate": null
    },
    "Failed": false,
    "Message": null,
    "ClientMessage": null,
    "Succeeded": true
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Sistem Verileri

Paywall genelinde kullanılan sabit değerleri sizler için Sistem Verileri sayfası altında topladık. Para birimleri, ödeme kanalları ve IP listesi gibi verilere buradan erişim sağlayabilirsiniz.

Sistem Verileri

* Tekrarlı Ödeme
* Geri Bildirim Tipleri
* Ödeme Kanalları
* Para Birimleri
* IP Listesi
* Kargo Tipleri
* Pazaryeri Valör Tipleri
* Üye Tipleri
* Kart Hareket Tipleri
* APM (Alternatif Ödeme Yöntemleri)
* İndirim Sahibi Tipleri
* İndirim Tipleri
* Valör Günleri (Sanal Pos)
* Dil Seçenekleri
* Kart Aileleri


# Cihaz Sağlayıcı

Paywall'un desteklediği fiziksel pos cihazlarının listesi

Cihaz Sağlayıcı (BrandId)

<table><thead><tr><th width="160.5">Id</th><th>İsim</th><th>Durum</th></tr></thead><tbody><tr><td>10</td><td><pre><code>Pavo
</code></pre></td><td><mark style="color:green;">Destekleniyor</mark></td></tr><tr><td>20</td><td><pre><code>Ingenico
</code></pre></td><td><mark style="color:orange;">Yakında</mark></td></tr><tr><td>30</td><td><pre><code>Hugin
</code></pre></td><td><mark style="color:orange;">Yakında</mark></td></tr></tbody></table>


# Kart Markaları

Kart marka listesi

**Kart Markaları (CardBrandId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Visa
</code></pre></td></tr><tr><td>2</td><td><pre><code>MasterCard
</code></pre></td></tr><tr><td>3</td><td><pre><code>Amex
</code></pre></td></tr><tr><td>4</td><td><pre><code>Troy
</code></pre></td></tr><tr><td>5</td><td><pre><code><strong>Diners
</strong></code></pre></td></tr><tr><td>6</td><td><pre><code>Jcb
</code></pre></td></tr><tr><td>7</td><td><pre><code>Cup
</code></pre></td></tr></tbody></table>


# Kart Menşei

Kart üretim süreçlerinde kullanılan sabit değerlere bu sayfadan ulaşabilirsiniz

**Kart Hareket Tipi (ActivityTypeId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>0</td><td><pre><code>Diğer
</code></pre></td></tr><tr><td>1</td><td><pre><code>Yurtiçi
</code></pre></td></tr><tr><td>2</td><td><pre><code>Onus
</code></pre></td></tr><tr><td>3</td><td><pre><code>Marka Paylaşımlı
</code></pre></td></tr><tr><td>4</td><td><pre><code>Yurtdışı
</code></pre></td></tr></tbody></table>


# Kart Tipi

Kart tipi listesi

**Kart Tipi (CardTypeId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>0</td><td><pre><code>Diğer
</code></pre></td></tr><tr><td>1</td><td><pre><code>Kredi Kartı
</code></pre></td></tr><tr><td>2</td><td><pre><code>Debit
</code></pre></td></tr><tr><td>3</td><td><pre><code>Ön Ödemeli (Prepaid)
</code></pre></td></tr></tbody></table>


# Para Birimi

Para birimi listesi

**Para Birimi (CurrencyId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>TRY
</code></pre></td></tr><tr><td>2</td><td><pre><code>USD
</code></pre></td></tr><tr><td>3</td><td><pre><code>EUR
</code></pre></td></tr><tr><td>4</td><td><pre><code>BAM
</code></pre></td></tr><tr><td>5</td><td><pre><code>MKD
</code></pre></td></tr><tr><td>6</td><td><pre><code>ALL
</code></pre></td></tr><tr><td>7</td><td><pre><code>GBP
</code></pre></td></tr></tbody></table>


# Ödeme Kanalı

Ödeme kanalı listesi

**Ödeme Kanalı Listesi (PaymentChannelId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Async
</code></pre></td></tr><tr><td>2</td><td><pre><code>Socket
</code></pre></td></tr></tbody></table>


# Ödeme Durumu

Ödeme durum listesi

**Ödeme Durumu (PaymentStatusId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Oluşturuldu
</code></pre></td></tr><tr><td>2</td><td><pre><code>Cihaza Gönderildi
</code></pre></td></tr><tr><td>3</td><td><pre><code>Cihaza Gönderilemedi
</code></pre></td></tr><tr><td>4</td><td><pre><code>Başarılı
</code></pre></td></tr><tr><td>5</td><td><pre><code>Başarısız
</code></pre></td></tr><tr><td>6</td><td><pre><code>Bilinmiyor
</code></pre></td></tr><tr><td>7</td><td><pre><code>Bildirim Gönderilemedi (Firebase)
</code></pre></td></tr><tr><td>8</td><td><pre><code>Bildirim Gönderilemedi (Socket)
</code></pre></td></tr><tr><td>9</td><td><pre><code>Bildirim Gönderildi (Firebase)
</code></pre></td></tr><tr><td>10</td><td><pre><code>Bildirim Gönderildi (Socket)
</code></pre></td></tr><tr><td>11</td><td><pre><code>İşlem Cihaz Tarafından İşleme Alındı
</code></pre></td></tr><tr><td>12</td><td><pre><code>İşlem Geri Çekildi (Satış/İptal/İade)
</code></pre></td></tr></tbody></table>


# Valör Günü

Valör günlere ait liste

**Valör Günü (PaymentTermId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Ertesi Gün
</code></pre></td></tr><tr><td>2</td><td><pre><code>Haftalık
</code></pre></td></tr><tr><td>3</td><td><pre><code>1 Gün
</code></pre></td></tr><tr><td>4</td><td><pre><code>2 Gün
</code></pre></td></tr><tr><td>5</td><td><pre><code>3 Gün
</code></pre></td></tr><tr><td>6</td><td><pre><code>4 Gün
</code></pre></td></tr><tr><td>7</td><td><pre><code>5 Gün
</code></pre></td></tr><tr><td>8</td><td><pre><code>6 Gün
</code></pre></td></tr><tr><td>9</td><td><pre><code>7 Gün
</code></pre></td></tr><tr><td>10</td><td><pre><code>8 Gün
</code></pre></td></tr><tr><td>11</td><td><pre><code>9 Gün
</code></pre></td></tr><tr><td>12</td><td><pre><code>10 Gün
</code></pre></td></tr><tr><td>13</td><td><pre><code>11 Gün
</code></pre></td></tr><tr><td>14</td><td><pre><code>12 Gün
</code></pre></td></tr><tr><td>15</td><td><pre><code>13 Gün
</code></pre></td></tr><tr><td>16</td><td><pre><code>14 Gün
</code></pre></td></tr><tr><td>17</td><td><pre><code>15 Gün
</code></pre></td></tr><tr><td>18</td><td><pre><code>16 Gün
</code></pre></td></tr><tr><td>19</td><td><pre><code>17 Gün
</code></pre></td></tr><tr><td>20</td><td><pre><code>18 Gün
</code></pre></td></tr><tr><td>21</td><td><pre><code>19 Gün
</code></pre></td></tr><tr><td>22</td><td><pre><code>20 Gün
</code></pre></td></tr><tr><td>23</td><td><pre><code>21 Gün
</code></pre></td></tr><tr><td>24</td><td><pre><code>22 Gün
</code></pre></td></tr><tr><td>25</td><td><pre><code>23 Gün
</code></pre></td></tr><tr><td>26</td><td><pre><code>24 Gün
</code></pre></td></tr><tr><td>27</td><td><pre><code>25 Gün
</code></pre></td></tr><tr><td>28</td><td><pre><code>26 Gün
</code></pre></td></tr><tr><td>29</td><td><pre><code>27 Gün
</code></pre></td></tr><tr><td>30</td><td><pre><code>28 Gün
</code></pre></td></tr></tbody></table>


# Ödeme Tipleri

Ödeme Tipi Listesi

**Ödeme Tipi (PaymentTypeId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Satış/Ödeme
</code></pre></td></tr><tr><td>2</td><td><pre><code>İptal
</code></pre></td></tr><tr><td>3</td><td><pre><code>İade
</code></pre></td></tr><tr><td>4</td><td><pre><code>Bilinmiyor
</code></pre></td></tr></tbody></table>


# Sağlayıcı

Sağlayıcı Listesi

**Sağlayıcı (Provider)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>10</td><td><pre><code>Papara
</code></pre></td></tr><tr><td>20</td><td><pre><code>Vepara
</code></pre></td></tr><tr><td>30</td><td><pre><code>Sipay
</code></pre></td></tr><tr><td>40</td><td><pre><code>Param
</code></pre></td></tr></tbody></table>


# Bölge/Ülke

Bölge/Ülke Listesi

**Bölge/Ülke (RegionId)**

<table><thead><tr><th width="160.5">Id</th><th>Bölge/Ülke</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Türkiye
</code></pre></td><td><mark style="color:green;">Aktif</mark></td></tr><tr><td>2</td><td><pre><code>Amerika
</code></pre></td><td><mark style="color:orange;">Yakında</mark></td></tr><tr><td>3</td><td><pre><code>Global
</code></pre></td><td><mark style="color:orange;">Yakında</mark></td></tr></tbody></table>


# Vergi Grupları

Vergi Grubu Listesi

**Vergi Grubu (TaxGroupId)**

<table><thead><tr><th width="160.5">Id</th><th>Vergi</th></tr></thead><tbody><tr><td>0</td><td><pre><code>KDV0
</code></pre></td></tr><tr><td>1</td><td><pre><code>KDV1
</code></pre></td></tr><tr><td>10</td><td><pre><code>KDV10
</code></pre></td></tr><tr><td>20</td><td><pre><code>KDV20
</code></pre></td></tr></tbody></table>


# İşlem Durumları (Trx)

İşlem Durum Listesi

{% hint style="info" %}
İşlem (Transaction) **`StatusId`** parametresi işlemlerin listelendiği servisten dönen JSON içerisindeki StatusId'leri temsil etmektedir. Diğer StatusId'ler ile karıştırılmamalıdır.
{% endhint %}

**İşlem Durumu (StatusId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Waiting
</code></pre></td></tr><tr><td>2</td><td><pre><code>Success
</code></pre></td></tr><tr><td>3</td><td><pre><code>Unsuccessful
</code></pre></td></tr><tr><td>4</td><td><pre><code>InProgress
</code></pre></td></tr><tr><td>5</td><td><pre><code>Abandoned
</code></pre></td></tr></tbody></table>


# İşlem Tipleri (Trx)

{% hint style="info" %}
İşlem (Transaction) **`TypeId`** parametresi işlemlerin listelendiği servisten dönen JSON içerisindeki TypeId'leri temsil etmektedir. Diğer TypeId'ler ile karıştırılmamalıdır.
{% endhint %}

**İşlem Tipi (TypeId)**

<table><thead><tr><th width="160.5">Id</th><th>Durum</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Satış/Ödeme
</code></pre></td></tr><tr><td>2</td><td><pre><code>İptal
</code></pre></td></tr><tr><td>3</td><td><pre><code>İade
</code></pre></td></tr><tr><td>4</td><td><pre><code>Terk Edilmiş
</code></pre></td></tr><tr><td>5</td><td><pre><code>Eşlenikli İade
</code></pre></td></tr><tr><td>6</td><td><pre><code>Eşleniksiz İade
</code></pre></td></tr><tr><td>7</td><td><pre><code>Ön Provizyon
</code></pre></td></tr><tr><td>8</td><td><pre><code>Ön Provizyon - Kapatma
</code></pre></td></tr><tr><td>9</td><td><pre><code>Loyalty Taksit
</code></pre></td></tr><tr><td>10</td><td><pre><code>Loyalty Puan Sorgulama
</code></pre></td></tr><tr><td>11</td><td><pre><code>Loyalty Puan Kullanım
</code></pre></td></tr><tr><td>12</td><td><pre><code>Qr Oluşturma
</code></pre></td></tr><tr><td>13</td><td><pre><code>Qr Sorgulama
</code></pre></td></tr><tr><td>14</td><td><pre><code>Puanlı Satış
</code></pre></td></tr><tr><td>15</td><td><pre><code>Puanlı Taksit
</code></pre></td></tr></tbody></table>


# Birim Kodları

Birim kodları, ödemelerin hangi birimde satılan ürün olduğunu ifade etmek için kullanılır

**Birim Kodları (UnitCodeId)**

<table><thead><tr><th width="160.5">Id</th><th>Birim</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Kilogram
</code></pre></td></tr><tr><td>2</td><td><pre><code>Paket
</code></pre></td></tr><tr><td>3</td><td><pre><code>Gram
</code></pre></td></tr><tr><td>4</td><td><pre><code>Adet
</code></pre></td></tr><tr><td>5</td><td><pre><code>Litre
</code></pre></td></tr><tr><td>6</td><td><pre><code>Ton
</code></pre></td></tr><tr><td>7</td><td><pre><code>Dekar
</code></pre></td></tr><tr><td>8</td><td><pre><code>Dönüm
</code></pre></td></tr><tr><td>9</td><td><pre><code>Metre
</code></pre></td></tr><tr><td>10</td><td><pre><code>Kilometre
</code></pre></td></tr></tbody></table>


# Ödeme Yöntemleri

Cihaz üzerinde geçerli olmasını istediğiniz yöntemlerin listesine bu sayfadan ulaşabilirsiniz

**Ödeme Yöntemleri (**&#x50;aymentMethodI&#x64;**)**

<table><thead><tr><th width="160.5">Id</th><th>Birim</th></tr></thead><tbody><tr><td>1</td><td><pre><code>Nakit
</code></pre></td></tr><tr><td>2</td><td><pre><code>BKMTechPos (Kredi Kartı)
</code></pre></td></tr><tr><td>3</td><td><pre><code>Multinet
</code></pre></td></tr><tr><td>4</td><td><pre><code>Harici Yemek Kartları
</code></pre></td></tr><tr><td>5</td><td><pre><code>Metropol
</code></pre></td></tr><tr><td>6</td><td><pre><code>Harici Ödeme Geçitleri
</code></pre></td></tr><tr><td>7</td><td><pre><code>Ödemesiz
</code></pre></td></tr><tr><td>8</td><td><pre><code>Havale
</code></pre></td></tr><tr><td>9</td><td><pre><code>Açık Hesap
</code></pre></td></tr><tr><td>10</td><td><pre><code>Ticket Restaurant
</code></pre></td></tr><tr><td>11</td><td><pre><code>İşbank
</code></pre></td></tr><tr><td>12</td><td><pre><code>Harici Kapalı Devre
</code></pre></td></tr><tr><td>13</td><td><pre><code>Paye
</code></pre></td></tr><tr><td>14</td><td><pre><code>İstanbul Kart
</code></pre></td></tr></tbody></table>


# Müşteri Tipleri

**Müşteri Tipleri (**&#x43;ustomer > Typ&#x65;**)**

<table><thead><tr><th width="160.5">Id</th><th>Birim</th></tr></thead><tbody><tr><td>0</td><td><pre><code>Bilinmiyor
</code></pre></td></tr><tr><td>1</td><td><pre><code>Bireysel
</code></pre></td></tr><tr><td>2</td><td><pre><code>Şirket
</code></pre></td></tr></tbody></table>


# Pazaryeri

Paywall Pazaryeri Servisi

Paywall üzerinden ödeme servisleri, pazaryeri akışları için de kullanılabilir. Pazaryeri modeli, alt şirketlerinizi de tek bir kanaldan yönettiğiniz ve hakedişlerinizi sizin verdiğiniz bilgiler doğrultusunda Paywall'un hesaplayıp, dağıttığı modeldir.

Tüm ödeme akışlarınızı, sadece ödeme parametreleri içindeki Product parametresinin **MemberId** parametresini doldurarak pazaryeri modeline dönüştürebilirsiniz.

Süreç zor değil :tada:

Belirttiğimiz gibi sadece ürünlerinizin hangi alt üye işyerinize ait olduğunu ödeme isteklerinde belirtiyorsunuz.

Peki **MemberId** hangi bilgiyle dolacak? Çok doğru bir soru :smile: Üye Servisi altındaki servislerle alt üye işyerlerinizi Paywall'a da tanımlayacaksınız. Bu tanımlamayla birlikte artık MemberId üreyecek ve siz de ödemelerinizde kullanabileceksiniz.

Tüm alt üye işyerlerinize uygulayacağınız komisyon/valör yönetimleri size bırakılmış durumda.


# Üye Servisi

Pazaryeri kapsamında alt şirketleri ve şirketlerin banka hesaplarını yönetebileceğiniz altyapı


# Üye Yönetimi


# 1. Üye Oluştur

## Üye Oluştur

<mark style="color:green;">`POST`</mark> `{{MemberBaseAddress}}/api/paywall/member`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="157">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>IsSubMerchant</td><td>boolean</td><td>Evet</td><td>Eklenen üye bir alt üye işyeri mi?</td></tr><tr><td>MemberType</td><td>int</td><td>Evet/Hayır</td><td>Üye'nin tipi, eğer IsSubMerchant true gönderiliyorsa zorunlu alandır<br><br>Bkz: <a href="/pages/m4RNmBXTVbMGDgHgn9G3">Üye Tipleri</a></td></tr><tr><td>MemberExternalId</td><td>string</td><td>Evet</td><td>Üye'nin sisteminizdeki Id bilgisi</td></tr><tr><td>MemberName</td><td>string</td><td>Evet</td><td>Üye'ye sizin tarafınızdan verilen takma isim</td></tr><tr><td>MemberTitle</td><td>string</td><td>Evet</td><td>Üye'ye ait gerçek isim.<br><br>Şirket: Ünvan<br>Şahıs: İsim Soyisim</td></tr><tr><td>MemberTaxOffice</td><td>string</td><td>Evet/Hayır</td><td>Üye'nin vergi dairesi. Şirket tipinde bir üyeyse zorunlu</td></tr><tr><td>MemberTaxNumber</td><td>string</td><td>Evet/Hayır</td><td>Üye'nin vergi numarası. Şirket tipinde bir üyeyse zorunlu</td></tr><tr><td>MemberIdentityNumber</td><td>string</td><td>Evet/Hayır</td><td>Üye'nin kimlik numarası. Şahıs veya şahıs şirketi tipinde bir üyeyse zorunlu</td></tr><tr><td>MemberEmail</td><td>string</td><td>Evet</td><td>Üye'nin e-posta adresi</td></tr><tr><td>MemberPhone</td><td>string</td><td>Evet</td><td>Üye'nin telefon numarası</td></tr><tr><td>MemberAddress</td><td>string</td><td>Evet</td><td>Üye'nin adresi</td></tr><tr><td>ContactName</td><td>string</td><td>Evet</td><td>Üye'nin iletişim adı. Şahıs veya şahıs şirketi tipinde bir üyeyse zorunlu</td></tr><tr><td>ContactLastname</td><td>string</td><td>Evet</td><td>Üye'nin iletişim adı. Şahıs veya şahıs şirketi tipinde bir üyeyse zorunlu</td></tr><tr><td>BankAccounts</td><td><mark style="color:orange;">BankAccount</mark></td><td>Hayır</td><td>Üye tanımı esnasında üye'nin banka bilgileri de tanımlanmak istenirse kullanılabilir. Nesne örneğini aşağıda bulabilirsiniz.</td></tr><tr><td>ValueDate</td><td><mark style="color:orange;">ValueDate</mark></td><td>Hayır</td><td>Üye tanımı esnasında üye'nin valör/komisyon tanımları da yapılmak istenirse kullanılabilir. Nesne örneğini aşağıda bulabilirsiniz.</td></tr></tbody></table>

#### <mark style="color:orange;">BankAccount Nesne</mark>:

<table><thead><tr><th width="220">Parametre</th><th width="157">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Üye işyeri banka hesabının hangi para birimine ait olduğunu gösterir</td></tr><tr><td>Title</td><td>string</td><td>Evet</td><td>Üye işyeri banka hesabının ünvanı. Para gönderimlerinde kullanılır, <mark style="color:red;">eksiksiz ve doğru</mark> olmalıdır</td></tr><tr><td>Iban</td><td>string</td><td>Evet</td><td><p>Üye işyerinin banka hesabına ait Iban </p><p>bilgisi</p></td></tr></tbody></table>

#### <mark style="color:orange;">ValueDate Nesne</mark>:

<table><thead><tr><th width="220">Parametre</th><th width="157">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>CalculationType</td><td>int</td><td>Evet</td><td>Üye işyerinin hakedişinin hangi aralık tipinde hesaplanacağını belirtir. Sistem verilerinden daha detaylı ulaşabilirsiniz.<br><br><mark style="color:green;"><strong>1</strong></mark> = <mark style="color:purple;"><strong>PlusDay</strong></mark><br><mark style="color:green;"><strong>2</strong></mark> = <mark style="color:purple;"><strong>ADayOfWeek</strong></mark><br><mark style="color:green;"><strong>3</strong></mark> = <mark style="color:purple;"><strong>ADayOfMonth</strong></mark></td></tr><tr><td>CalculationValue</td><td>int</td><td>Evet</td><td>Üye işyeri hakedişini hangi aralıkta alacağının değeri. Bu değer tipe göre farklı aralıklar almaktadır.<br><br>1 ise (1-100) arasında<br>2 ise (1-7) arasında<br>3 ise (1-28) arasında</td></tr><tr><td>Commission</td><td>decimal</td><td>Evet</td><td>Alt üye işyerinden alınacak komisyon yüzdesi belirtilir, hak ediş hesaplandığında alt üye işyerinde yüzde kadar kazanç düşülür<br><br>Alışveriş 100TL, hak edişiniz 10% ve gün sonunda 90TL üye işyerine 10TL (<mark style="color:red;">ödeme sağlayıcı komisyonu düşülecektir</mark>) sizin hesabınıza yansır</td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "IsSubMerchant": true,
    "MemberType": 1,
    "MemberExternalId": "111aa11135552244413",
    "MemberName": "Intranet Technology",
    "MemberTitle": "Intranet Technology Yazılım A.S",
    "MemberTaxOffice": "Besiktas",
    "MemberTaxNumber": "4651176935",
    "MemberIdentityNumber": "11111111110",
    "MemberEmail": "member@paywall.one",
    "MemberPhone": "5554443322",
    "MemberAddress": "test adresi",
    "ContactName": "Member Name",
    "ContactLastname": "Lastname",
    "BankAccounts": [
        {
            "CurrencyId": 1,
            "Title": "Ünvan",
            "Iban": "TR370006400012345678987654"
        }
    ],
    "ValueDate": {
        "CalculationType": 1,
        "CalculationValue": 10,
        "Commission": 10   
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

class Program
{
    static readonly HttpClient client = new HttpClient();

    static async Task Main()
    {
        var url = "{{MemberBaseAddress}}/api/paywall/member";
        var data = new
        {
            IsSubMerchant = true,
            MemberType = 1,
            MemberExternalId = "111aa11135552244413",
            MemberName = "Intranet Technology",
            MemberTitle = "Intranet Technology Yazılım A.S",
            MemberTaxOffice = "Besiktas",
            MemberTaxNumber = "4651176935",
            MemberIdentityNumber = "11111111110",
            MemberEmail = "member@paywall.one",
            MemberPhone = "5554443322",
            MemberAddress = "test adresi",
            ContactName = "Member Name",
            ContactLastname = "Lastname",
            BankAccounts = new[]
            {
                new {
                    CurrencyId = 1,
                    Title = "Ünvan",
                    Iban = "TR370006400012345678987654"
                }
            },
            ValueDate = new
            {
                CalculationType = 1,
                CalculationValue = 10,
                Commission = 10   
            }
        };

        var json = JsonConvert.SerializeObject(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        content.Headers.Add("apikeypublic", "%PUBLICKEY%");
        content.Headers.Add("apiclientpublic", "%PUBLICCLIENT%");

        var response = await client.PostAsync(url, content);

        if (response.IsSuccessStatusCode)
        {
            var responseBody = await response.Content.ReadAsStringAsync();
            dynamic result = JsonConvert.DeserializeObject(responseBody);

            Console.WriteLine($"ErrorCode: {result.ErrorCode}");
            Console.WriteLine($"Result: {result.Result}");
            Console.WriteLine($"Message: {result.Message}");

            if (result.Body != null)
            {
                dynamic body = result.Body;
                Console.WriteLine($"Id: {body.Id}");
                Console.WriteLine($"IsSubMerchant: {body.IsSubMerchant}");
                Console.WriteLine($"MemberType: {body.MemberType}");
                Console.WriteLine($"MemberExternalId: {body.MemberExternalId}");
                Console.WriteLine($"MemberName: {body.MemberName}");
                Console.WriteLine($"MemberTitle: {body.MemberTitle}");
                Console.WriteLine($"MemberTaxOffice: {body.MemberTaxOffice}");
                Console.WriteLine($"MemberTaxNumber: {body.MemberTaxNumber}");
                Console.WriteLine($"MemberEmail: {body.MemberEmail}");
                Console.WriteLine($"MemberPhone: {body.MemberPhone}");
                Console.WriteLine($"MemberAddress: {body.MemberAddress}");
                Console.WriteLine($"ContactName: {body.ContactName}");
                Console.WriteLine($"ContactLastname: {body.ContactLastname}");
                Console.WriteLine($"InsertDateTime: {body.InsertDateTime}");
            }
        }
    }
}
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

type RequestData struct {
	IsSubMerchant      bool   `json:"IsSubMerchant"`
	MemberType         int    `json:"MemberType"`
	MemberExternalId   string `json:"MemberExternalId"`
	MemberName         string `json:"MemberName"`
	MemberTitle        string `json:"MemberTitle"`
	MemberTaxOffice    string `json:"MemberTaxOffice"`
	MemberTaxNumber    string `json:"MemberTaxNumber"`
	MemberIdentityNumber string `json:"MemberIdentityNumber"`
	MemberEmail        string `json:"MemberEmail"`
	MemberPhone        string `json:"MemberPhone"`
	MemberAddress      string `json:"MemberAddress"`
	ContactName        string `json:"ContactName"`
	ContactLastname    string `json:"ContactLastname"`
	BankAccounts       []BankAccount `json:"BankAccounts"`
	ValueDate          ValueDate `json:"ValueDate"`
}

type BankAccount struct {
	CurrencyId int    `json:"CurrencyId"`
	Title      string `json:"Title"`
	Iban       string `json:"Iban"`
}

type ValueDate struct {
	CalculationType  int `json:"CalculationType"`
	CalculationValue int `json:"CalculationValue"`
	Commission       int `json:"Commission"`
}

type ResponseData struct {
	ErrorCode int    `json:"ErrorCode"`
	Result    bool   `json:"Result"`
	Message   string `json:"Message"`
	Body      BodyData `json:"Body"`
}

type BodyData struct {
	Id                 int    `json:"Id"`
	IsSubMerchant      bool   `json:"IsSubMerchant"`
	MemberType         int    `json:"MemberType"`
	MemberExternalId   string `json:"MemberExternalId"`
	MemberName         string `json:"MemberName"`
	MemberTitle        string `json:"MemberTitle"`
	MemberTaxOffice    string `json:"MemberTaxOffice"`
	MemberTaxNumber    string `json:"MemberTaxNumber"`
	MemberIdentityNumber string `json:"MemberIdentityNumber"`
	MemberEmail        string `json:"MemberEmail"`
	MemberPhone        string `json:"MemberPhone"`
	MemberAddress      string `json:"MemberAddress"`
	ContactName        string `json:"ContactName"`
	ContactLastname    string `json:"ContactLastname"`
	InsertDateTime     string `json:"InsertDateTime"`
}

func main() {
	url := "{{MemberBaseAddress}}/api/paywall/member"
	data := RequestData{
		IsSubMerchant:      true,
		MemberType:         1,
		MemberExternalId:   "111aa11135552244413",
		MemberName:         "Intranet Technology",
		MemberTitle:        "Intranet Technology Yazılım A.S",
		MemberTaxOffice:    "Besiktas",
		MemberTaxNumber:    "4651176935",
		MemberIdentityNumber: "11111111110",
		MemberEmail:        "member@paywall.one",
		MemberPhone:        "5554443322",
		MemberAddress:      "test adresi",
		ContactName:        "Member Name",
		ContactLastname:    "Lastname",
		BankAccounts:       []BankAccount{
			{
				CurrencyId: 1,
				Title:      "Ünvan",
				Iban:       "TR370006400012345678987654",
			},
		},
		ValueDate: ValueDate{
			CalculationType:  1,
			CalculationValue: 10,
			Commission:       10,
		},
	}

	requestBody, _ := json.Marshal(data)

	client := &http.Client{}
	req, _ := http.NewRequest("POST", url, bytes.NewBuffer(requestBody))
	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("apikeypublic", "%PUBLICKEY%")
	req.Header.Set("apiclientpublic", "%PUBLICCLIENT%")
	resp, _ := client.Do(req)

	defer resp.Body.Close()

	body, _ := ioutil.ReadAll(resp.Body)

	var responseData ResponseData
	json.Unmarshal(body, &responseData)

	fmt.Println("ErrorCode:", responseData.ErrorCode)
	fmt.Println("Result:", responseData.Result)
	fmt.Println("Message:", responseData.Message)
	fmt.Println("Body.Id:", responseData.Body.Id)
	fmt.Println("Body.IsSubMerchant:", responseData.Body.IsSubMerchant)
	fmt.Println("Body.MemberType:", responseData.Body.MemberType)
	fmt.Println("Body.MemberExternalId:", responseData.Body.MemberExternalId)
	fmt.Println("Body.MemberName:", responseData.Body.MemberName)
	fmt.Println("Body.MemberTitle:", responseData.Body.MemberTitle)
	fmt.Println("Body.MemberTaxOffice:", responseData.Body.MemberTaxOffice)
	fmt.Println("Body.MemberTaxNumber:", responseData.Body.MemberTaxNumber)
	fmt.Println("Body.MemberIdentityNumber:", responseData.Body.MemberIdentityNumber)
	fmt.Println("Body.MemberEmail:", responseData.Body.MemberEmail)
	fmt.Println("Body.MemberPhone:", responseData.Body.MemberPhone)
	fmt.Println("Body.MemberAddress:", responseData.Body.MemberAddress)
	fmt.Println("Body.ContactName:", responseData.Body.ContactName)
	fmt.Println("Body.ContactLastname:", responseData.Body.ContactLastname)
	fmt.Println("Body.InsertDateTime:", responseData.Body.InsertDateTime)
}
```

{% endtab %}

{% tab title="Java" %}

```java
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Scanner;

import org.json.JSONArray;
import org.json.JSONObject;

public class Main {

    public static void main(String[] args) {
        try {
            URL url = new URL("{{MemberBaseAddress}}/api/paywall/member");

            JSONObject jsonObject = new JSONObject();
            jsonObject.put("IsSubMerchant", true);
            jsonObject.put("MemberType", 1);
            jsonObject.put("MemberExternalId", "111aa11135552244413");
            jsonObject.put("MemberName", "Intranet Technology");
            jsonObject.put("MemberTitle", "Intranet Technology Yazılım A.S");
            jsonObject.put("MemberTaxOffice", "Besiktas");
            jsonObject.put("MemberTaxNumber", "4651176935");
            jsonObject.put("MemberIdentityNumber", "11111111110");
            jsonObject.put("MemberEmail", "member@paywall.one");
            jsonObject.put("MemberPhone", "5554443322");
            jsonObject.put("MemberAddress", "test adresi");
            jsonObject.put("ContactName", "Member Name");
            jsonObject.put("ContactLastname", "Lastname");

            JSONArray bankAccounts = new JSONArray();
            JSONObject bankAccount = new JSONObject();
            bankAccount.put("CurrencyId", 1);
            bankAccount.put("Title", "Ünvan");
            bankAccount.put("Iban", "TR370006400012345678987654");
            bankAccounts.put(bankAccount);

            jsonObject.put("BankAccounts", bankAccounts);

            JSONObject valueDate = new JSONObject();
            valueDate.put("CalculationType", 1);
            valueDate.put("CalculationValue", 10);
            valueDate.put("Commission", 10);

            jsonObject.put("ValueDate", valueDate);

            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("apikeypublic", "%PUBLICKEY%")
            conn.setRequestProperty("apiclientpublic", "%PUBLICCLIENT%")

            OutputStream os = conn.getOutputStream();
            os.write(jsonObject.toString().getBytes());
            os.flush();

            if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
                throw new RuntimeException("Failed : HTTP error code : " + conn.getResponseCode());
            }

            Scanner scan = new Scanner(url.openStream());
            String entireResponse = new String();
            while (scan.hasNext())
                entireResponse += scan.nextLine();

            System.out.println("Response : "+entireResponse);

            scan.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$url = '{{MemberBaseAddress}}/api/paywall/member';

$header = array(
    'Content-Type: application/json',
    'apikeypublic: %%',
    'apiclientpublic: %%'
);

$data = array(
    'IsSubMerchant' => true,
    'MemberType' => 1,
    'MemberExternalId' => '111aa11135552244413',
    'MemberName' => 'Intranet Technology',
    'MemberTitle' => 'Intranet Technology Yazılım A.S',
    'MemberTaxOffice' => 'Besiktas',
    'MemberTaxNumber' => '4651176935',
    'MemberIdentityNumber' => '11111111110',
    'MemberEmail' => 'member@paywall.one',
    'MemberPhone' => '5554443322',
    'MemberAddress' => 'test adresi',
    'ContactName' => 'Member Name',
    'ContactLastname' => 'Lastname',
    'BankAccounts' => array(
        array(
            'CurrencyId' => 1,
            'Title' => 'Ünvan',
            'Iban' => 'TR370006400012345678987654'
        )
    ),
    'ValueDate' => array(
        'CalculationType' => 1,
        'CalculationValue' => 10,
        'Commission' => 10
    )
);

$context = stream_context_create(array(
    'http' => array(
        'method' => 'POST',
        'header' => $header,
        'content' => json_encode($data),
    )
));

$result = file_get_contents($url, false, $context);
?>
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = '{{MemberBaseAddress}}/api/paywall/member'
headers = {
    'Content-Type': 'application/json',
    'apikeypublic': '%%',
    'apiclientpublic': '%%'
}

data = {
    'IsSubMerchant': True,
    'MemberType': 1,
    'MemberExternalId': '111aa11135552244413',
    'MemberName': 'Intranet Technology',
    'MemberTitle': 'Intranet Technology Yazılım A.S',
    'MemberTaxOffice': 'Besiktas',
    'MemberTaxNumber': '4651176935',
    'MemberIdentityNumber': '11111111110',
    'MemberEmail': 'member@paywall.one',
    'MemberPhone': '5554443322',
    'MemberAddress': 'test adresi',
    'ContactName': 'Member Name',
    'ContactLastname': 'Lastname',
    'BankAccounts': [
        {
            'CurrencyId': 1,
            'Title': 'Ünvan',
            'Iban': 'TR370006400012345678987654'
        }
    ],
    'ValueDate': {
        'CalculationType': 1,
        'CalculationValue': 10,
        'Commission': 10   
    }
}

response = requests.post(url, headers=headers, data=json.dumps(data))
print(response.json())
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'uri'
require 'net/http'
require 'json'

url = URI("{{MemberBaseAddress}}/api/paywall/member")

http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request["apikeypublic"] = '%%'
request["apiclientpublic"] = '%%'
request.body = JSON.dump({
  "IsSubMerchant" => true,
  "MemberType" => 1,
  "MemberExternalId" => '111aa11135552244413',
  "MemberName" => 'Intranet Technology',
  "MemberTitle" => 'Intranet Technology Yazılım A.S',
  "MemberTaxOffice" => 'Besiktas',
  "MemberTaxNumber" => '4651176935',
  "MemberIdentityNumber" => '11111111110',
  "MemberEmail" => 'member@paywall.one',
  "MemberPhone" => '5554443322',
  "MemberAddress" => 'test adresi',
  "ContactName" => 'Member Name',
  "ContactLastname" => 'Lastname',
  "BankAccounts" => [
    {
      "CurrencyId" => 1,
      "Title" => 'Ünvan',
      "Iban" => 'TR370006400012345678987654'
    }
  ],
  "ValueDate" => {
    "CalculationType" => 1,
    "CalculationValue" => 10,
    "Commission" => 10
  }
})

response = http.request(request)
puts response.read_body
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import axios from 'axios';

const url = '{{MemberBaseAddress}}/api/paywall/member';
const headers = {
  'Content-Type': 'application/json',
  'apikeypublic': '%%',
  'apiclientpublic': '%%'
};

const data = {
  'IsSubMerchant': true,
  'MemberType': 1,
  'MemberExternalId': '111aa11135552244413',
  'MemberName': 'Intranet Technology',
  'MemberTitle': 'Intranet Technology Yazılım A.S',
  'MemberTaxOffice': 'Besiktas',
  'MemberTaxNumber': '4651176935',
  'MemberIdentityNumber': '11111111110',
  'MemberEmail': 'member@paywall.one',
  'MemberPhone': '5554443322',
  'MemberAddress': 'test adresi',
  'ContactName': 'Member Name',
  'ContactLastname': 'Lastname',
  'BankAccounts': [
    {
      'CurrencyId': 1,
      'Title': 'Ünvan',
      'Iban': 'TR370006400012345678987654'
    }
  ],
  'ValueDate': {
    'CalculationType': 1,
    'CalculationValue': 10,
    'Commission': 10
  }
};

axios.post(url, data, { headers })
  .then(response => {
    console.log(response.data);
  })
  .catch(error => {
    console.error(error);
  });
```

{% endtab %}

{% tab title="Curl" %}

```sh
curl --location --request POST '{{MemberBaseAddress}}/api/paywall/member' \
--header 'Content-Type: application/json' \
--header 'apikeypublic: %%' \
--header 'apiclientpublic: %%' \
--data-raw '{
    "IsSubMerchant": true,
    "MemberType": 1,
    "MemberExternalId": "111aa11135552244413",
    "MemberName": "Intranet Technology",
    "MemberTitle": "Intranet Technology Yazılım A.S",
    "MemberTaxOffice": "Besiktas",
    "MemberTaxNumber": "4651176935",
    "MemberIdentityNumber": "11111111110",
    "MemberEmail": "member@paywall.one",
    "MemberPhone": "5554443322",
    "MemberAddress": "test adresi",
    "ContactName": "Member Name",
    "ContactLastname": "Lastname",
    "BankAccounts": [
        {
            "CurrencyId": 1,
            "Title": "Ünvan",
            "Iban": "TR370006400012345678987654"
        }
    ],
    "ValueDate": {
        "CalculationType": 1,
        "CalculationValue": 10,
        "Commission": 10
    }
}'
```

{% endtab %}
{% endtabs %}

Servisten dönen parametreler şu şekildedir:

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Id": 15,
        "IsSubMerchant": true,
        "MemberType": 1,
        "MemberExternalId": "111aa11135552244413",
        "MemberName": "Intranet Technology",
        "MemberTitle": "Intranet Technology Yazılım A.S",
        "MemberTaxOffice": "Besiktas",
        "MemberTaxNumber": "*6*1*7*9*5",
        "MemberIdentityNumber": "",
        "MemberEmail": "member@paywall.one",
        "MemberPhone": "5554443322",
        "MemberAddress": "test adresi",
        "ContactName": "Member Name",
        "ContactLastname": "Lastname",
        "InsertDateTime": "2023-06-29T15:32:52.570869+03:00"
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Üye Güncelle

## Üye Güncelle

<mark style="color:orange;">`PUT`</mark> `{{MemberBaseAddress}}/api/paywall/member`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="217">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="157">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>Id</td><td>int</td><td>Evet</td><td>Üye'nin Paywall'daki Id bilgisi</td></tr><tr><td>IsSubMerchant</td><td>boolean</td><td>Evet</td><td>Eklenen üye bir alt üye işyeri mi?</td></tr><tr><td>MemberType</td><td>int</td><td>Evet/Hayır</td><td>Üye'nin tipi, eğer IsSubMerchant true gönderiliyorsa zorunlu alandır</td></tr><tr><td>MemberExternalId</td><td>string</td><td>Evet</td><td>Üye'nin sisteminizdeki Id bilgisi</td></tr><tr><td>MemberName</td><td>string</td><td>Evet</td><td>Üye'ye sizin tarafınızdan verilen takma isim</td></tr><tr><td>MemberTitle</td><td>string</td><td>Evet</td><td>Üye'ye ait gerçek isim.<br><br>Şirket: Ünvan<br>Şahıs: İsim Soyisim</td></tr><tr><td>MemberTaxOffice</td><td>string</td><td>Evet/Hayır</td><td>Üye'nin vergi dairesi. Şirket tipinde bir üyeyse zorunlu</td></tr><tr><td>MemberTaxNumber</td><td>string</td><td>Evet/Hayır</td><td>Üye'nin vergi numarası. Şirket tipinde bir üyeyse zorunlu</td></tr><tr><td>MemberIdentityNumber</td><td>string</td><td>Evet/Hayır</td><td>Üye'nin kimlik numarası. Şahıs veya şahıs şirketi tipinde bir üyeyse zorunlu</td></tr><tr><td>MemberEmail</td><td>string</td><td>Evet</td><td>Üye'nin e-posta adresi</td></tr><tr><td>MemberPhone</td><td>string</td><td>Evet</td><td>Üye'nin telefon numarası</td></tr><tr><td>MemberAddress</td><td>string</td><td>Evet</td><td>Üye'nin adresi</td></tr><tr><td>ContactName</td><td>string</td><td>Evet</td><td>Üye'nin iletişim adı. Şahıs veya şahıs şirketi tipinde bir üyeyse zorunlu</td></tr><tr><td>ContactLastname</td><td>string</td><td>Evet</td><td>Üye'nin iletişim adı. Şahıs veya şahıs şirketi tipinde bir üyeyse zorunlu</td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "Id": 12,
    "IsSubMerchant": true,
    "MemberType": 3,
    "MemberExternalId": "11111211aa111",
    "MemberName": "Intranet Technology",
    "MemberTitle": "Intranet Technology Yazılım A.S",
    "MemberTaxOffice": "Besiktas",
    "MemberTaxNumber": "4651176935",
    "MemberIdentityNumber": "38350370122",
    "MemberEmail": "member2@paywall.one",
    "MemberPhone": "5554443311",
    "MemberAddress": "test adresi",
    "ContactName": "MemberName",
    "ContactLastname": "Lastname"
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
// Soon
```

{% endtab %}

{% tab title="GO" %}

```go
// Soon
```

{% endtab %}

{% tab title="Java" %}

```java
// Soon
```

{% endtab %}

{% tab title="PHP" %}

```php
// Soon
```

{% endtab %}

{% tab title="Python" %}

```python
// Soon
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
// Soon
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
// Soon
```

{% endtab %}

{% tab title="Curl" %}

```sh
// Soon
```

{% endtab %}
{% endtabs %}

Servisten dönen parametreler şu şekildedir:

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Id": 12,
        "IsSubMerchant": true,
        "MemberType": 1,
        "MemberExternalId": "111aa11135552244413",
        "MemberName": "Intranet Technology",
        "MemberTitle": "Intranet Technology Yazılım A.S",
        "MemberTaxOffice": "Besiktas",
        "MemberTaxNumber": "*6*1*7*9*5",
        "MemberIdentityNumber": "",
        "MemberEmail": "member@paywall.one",
        "MemberPhone": "5554443322",
        "MemberAddress": "test adresi",
        "ContactName": "Member Name",
        "ContactLastname": "Lastname",
        "InsertDateTime": "2023-06-29T15:32:52.570869+03:00"
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 3. Üye Sil

## Üye Sil

<mark style="color:red;">`DELETE`</mark> `{{MemberBaseAddress}}/api/paywall/member`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="195">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="157">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>Id</td><td>int</td><td>Evet/Hayır</td><td>Üye'nin Paywall'daki Id bilgisi</td></tr><tr><td>MemberExternalId</td><td>string</td><td>Evet/Hayır</td><td>Üye'nin sizin sisteminizdeki Id bilgisi</td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "Id": 14, // Id veya MemberExternalId
    "MemberExternalId": "" // MemberExternalId veya Id
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
// Soon
```

{% endtab %}

{% tab title="GO" %}

```go
// Soon
```

{% endtab %}

{% tab title="Java" %}

```java
// Soon
```

{% endtab %}

{% tab title="PHP" %}

```php
// Soon
```

{% endtab %}

{% tab title="Python" %}

```python
// Soon
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
// Soon
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
// Soon
```

{% endtab %}

{% tab title="Curl" %}

```sh
// Soon
```

{% endtab %}
{% endtabs %}

Servisten dönen parametreler şu şekildedir:

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": null
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 4. Üyeler

## Üye Listesi

<mark style="color:blue;">`GET`</mark> `{{MemberBaseAddress}}/api/paywall/member`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

**Servise gönderilen Header bilgileri şu şekildedir:**

<table><thead><tr><th width="199">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr><tr><td>start</td><td>int</td><td>Evet</td><td>Liste'nin hangi kayıttan itibaren üye getireceğini belirler</td></tr><tr><td>length</td><td>int</td><td>Evet</td><td>Liste'nin hangi kayıttan itibaren <mark style="color:orange;"><strong>kaç tane</strong></mark> üye getireceğini belirler</td></tr></tbody></table>

**Servisten dönen parametreler şu şekildedir:**

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>Üye işyeri listesini içerir</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": [
        {
            "Id": 14,
            "IsSubMerchant": true,
            "MemberType": 1,
            "MemberExternalId": "111aa11135552244413",
            "MemberName": "Intranet Technology",
            "MemberTitle": "Intranet Technology Yazılım A.S",
            "MemberTaxOffice": "Besiktas",
            "MemberTaxNumber": "",
            "MemberIdentityNumber": "*1*1*1*1*1*",
            "MemberEmail": "member@paywall.one",
            "MemberPhone": "5554443322",
            "MemberAddress": "test adresi",
            "ContactName": "Member Name",
            "ContactLastname": "Lastname",
            "BankAccounts": [
                {
                    "Id": 24,
                    "CurrencyId": 2,
                    "Currency": "USD",
                    "Title": "Member Title A.S",
                    "Iban": "TR370006400000123456789876"
                },
                {
                    "Id": 25,
                    "CurrencyId": 3,
                    "Currency": "EUR",
                    "Title": "Member Title A.S",
                    "Iban": "TR370006407890987654312345"
                }
            ],
            "ValueDate": {
                "Id": 16,
                "CalculationType": 3, // Her ayın 1 günü
                "CalculationValue": 28, // 28. gün
                "Commission": 10.00 // %10 komisyon
            },
            "InsertDateTime": "2023-06-28T16:55:41.070934",
            "UpdateDateTime": "0001-01-01T00:00:00"
        }
    ]
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 5. Üye Ara

## Üye Ara

<mark style="color:blue;">`GET`</mark> `{{MemberBaseAddress}}/api/paywall/member/search`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

**Servise gönderilen Header bilgileri şu şekildedir:**

<table><thead><tr><th width="198">Parametre</th><th width="79">Tip</th><th width="129">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr><tr><td>memberid</td><td>int</td><td>Evet/Hayır</td><td>Üye'nin Paywall'daki Id bilgisi</td></tr><tr><td>memberexternalid</td><td>int</td><td>Evet/Hayır</td><td>Üye'nin sizin sisteminizdeki Id bilgisi</td></tr></tbody></table>

**Servisten dönen parametreler şu şekildedir:**

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Id": 15,
        "IsSubMerchant": true,
        "MemberType": 3,
        "MemberExternalId": "111aa1113551",
        "MemberName": "Intranet Technology",
        "MemberTitle": "Intranet Technology Yazılım A.S",
        "MemberTaxOffice": "Besiktas",
        "MemberTaxNumber": "*6*1*7*9*5",
        "MemberIdentityNumber": "",
        "MemberEmail": "member@paywall.one",
        "MemberPhone": "5554443322",
        "MemberAddress": "test adresi",
        "ContactName": "Member Name",
        "ContactLastname": "Lastname",
        "BankAccounts": [
            {
                "Id": 26,
                "CurrencyId": 1,
                "Currency": "TRY",
                "Title": "Enes Selman Tütüncü",
                "Iban": "TR370006400000123456789876"
            }
        ],
        "ValueDate": {
            "Id": 17,
            "CalculationType": 1, // PlusDay, onay sonrası value kadar gün sonrası
            "CalculationValue": 10, // Onay'dan 10 gün sonrası
            "Commission": 10.00 // %10
        },
        "InsertDateTime": "2023-06-29T15:32:52.570869",
        "UpdateDateTime": "0001-01-01T00:00:00"
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Üye Banka Yönetimi


# 1. Banka Yöntemi Ekle

## Banka Yöntemi Ekle

<mark style="color:green;">`POST`</mark> `{{MemberBaseAddress}}/api/paywall/member/bankaccount`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="141">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>MemberId</td><td>int</td><td>Evet</td><td>Üye'nin Paywall'daki Id bilgisi</td></tr><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Eklenecek banka yönteminin para birimi<br><br>Sistem verilerinden tüm para birimlerine ulaşabilirsiniz</td></tr><tr><td>Title</td><td>string</td><td>Evet</td><td>Banka yöntemindeki Iban'a ait alıcı adı. Doğru girilmelidir</td></tr><tr><td>Iban</td><td>string</td><td>Evet</td><td>Banka yöntemine ait Iban bilgisi</td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "MemberId": 14,
    "CurrencyId": 3,
    "Title": "MemberName Lastname",
    "Iban": "TR370006400000123456789876"
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
// Soon
```

{% endtab %}

{% tab title="GO" %}

```go
// Soon
```

{% endtab %}

{% tab title="Java" %}

```java
// Soon
```

{% endtab %}

{% tab title="PHP" %}

```php
// Soon
```

{% endtab %}

{% tab title="Python" %}

```python
// Soon
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
// Soon
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
// Soon
```

{% endtab %}

{% tab title="Curl" %}

```sh
// Soon
```

{% endtab %}
{% endtabs %}

**Servisten dönen parametreler şu şekildedir:**

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": null
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Banka Yöntemi Düzenle

## Banka Yöntemi Düzenle

<mark style="color:orange;">`PUT`</mark> `{{MemberBaseAddress}}/api/paywall/member/bankaccount`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="141">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>Id</td><td>int</td><td>Evet</td><td>Banka yönteminin Paywall'daki Id bilgisi</td></tr><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Eklenecek banka yönteminin para birimi<br><br>Sistem verilerinden tüm para birimlerine ulaşabilirsiniz</td></tr><tr><td>Title</td><td>string</td><td>Evet</td><td>Banka yöntemindeki Iban'a ait alıcı adı. Doğru girilmelidir</td></tr><tr><td>Iban</td><td>string</td><td>Evet</td><td>Banka yöntemine ait Iban bilgisi</td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "Id": 24,
    "CurrencyId": 3,
    "Title": "MemberName Lastname",
    "Iban": "TR370006400000123456789876"
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
// Soon
```

{% endtab %}

{% tab title="GO" %}

```go
// Soon
```

{% endtab %}

{% tab title="Java" %}

```java
// Soon
```

{% endtab %}

{% tab title="PHP" %}

```php
// Soon
```

{% endtab %}

{% tab title="Python" %}

```python
// Soon
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
// Soon
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
// Soon
```

{% endtab %}

{% tab title="Curl" %}

```sh
// Soon
```

{% endtab %}
{% endtabs %}

**Servisten dönen parametreler şu şekildedir:**

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": null
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 3. Banka Yöntemi Sil

## Banka Yöntemi Sil

<mark style="color:red;">`DELETE`</mark> `{{MemberBaseAddress}}/api/paywall/member/bankaccount`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="141">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>Id</td><td>int</td><td>Evet</td><td>Banka yönteminin PayWall'daki Id bilgisi</td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "Id": 23
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
// Soon
```

{% endtab %}

{% tab title="GO" %}

```go
// Soon
```

{% endtab %}

{% tab title="Java" %}

```java
// Soon
```

{% endtab %}

{% tab title="PHP" %}

```php
// Soon
```

{% endtab %}

{% tab title="Python" %}

```python
// Soon
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
// Soon
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
// Soon
```

{% endtab %}

{% tab title="Curl" %}

```sh
// Soon
```

{% endtab %}
{% endtabs %}

**Servisten dönen parametreler şu şekildedir:**

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": null
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 4. Banka Yöntemleri

## Banka Yöntemlerini Listele

<mark style="color:blue;">`GET`</mark> `{{MemberBaseAddress}}/api/paywall/member/bankaccount`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

Servise gönderilen Header bilgileri şu şekildedir:

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr><tr><td>memberid</td><td>int</td><td>Evet</td><td>Üye'nin Paywall'daki Id bilgisi</td></tr></tbody></table>

Servisten dönen parametreler şu şekildedir:

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": null
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Üye Valör/Komisyon


# 1. Valör/Komisyon Getir

## Valör/Komisyon Ayarını Getir

<mark style="color:blue;">`GET`</mark> `{{MemberBaseAddress}}/api/paywall/member/valuedate`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

**Servise gönderilen Header bilgileri şu şekildedir:**

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr><tr><td>memberid</td><td>int</td><td>Evet</td><td>Üye'nin Paywall'daki Id bilgisi</td></tr></tbody></table>

**Servisten dönen parametreler şu şekildedir:**

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Id": 17, // PayWall'daki Id bilgisi
        "CalculationType": 1, // MarketPlace Hakediş Hesaplama Tipi
        "CalculationValue": 10, // MarketPlace Hakediş Hesaplama Değeri
        "Commission": 10.00 // MarketPlace Üye İşyeri Satış Komisyonu
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Valör/Komisyon Ekle

## Valör/Komisyon Ayarını Ekle (Var olanı da günceller)

<mark style="color:green;">`POST`</mark> `{{MemberBaseAddress}}/api/paywall/member/valuedate`

{% hint style="info" %}
Önemli: **Üye** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**MemberAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="188">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir:

<table><thead><tr><th width="244">Parametre</th><th width="141">Tip</th><th width="131">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>MemberId</td><td>int</td><td>Evet</td><td>Üye'nin Paywall'daki Id bilgisi</td></tr><tr><td>CalculationType</td><td>int</td><td>Evet</td><td>Hakediş hesaplama tipi. Sistem verileri alanından daha detaylı bilgiye ulaşabilirsiniz</td></tr><tr><td>CalculationValue</td><td>int</td><td>Evet</td><td>Hakediş hesaplama değeri. Sistem verileri alanından daha detaylı bilgiye ulaşabilirsiniz</td></tr><tr><td>Commission</td><td>decimal</td><td>Evet</td><td>Hakediş hesaplama anında alt üye işyerine uygulanacak komisyon değeri</td></tr></tbody></table>

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "MemberId": 14,
    "CalculationType": 2, // ADayOfWeek - Haftanın bir günü 
    "CalculationValue": 4, // Haftanın Perşembe günü
    "Commission": 10 // Uygulanacak komisyon
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
// Soon
```

{% endtab %}

{% tab title="GO" %}

```go
// Soon
```

{% endtab %}

{% tab title="Java" %}

```java
// Soon
```

{% endtab %}

{% tab title="PHP" %}

```php
// Soon
```

{% endtab %}

{% tab title="Python" %}

```python
// Soon
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
// Soon
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
// Soon
```

{% endtab %}

{% tab title="Curl" %}

```sh
// Soon
```

{% endtab %}
{% endtabs %}

**Servisten dönen parametreler şu şekildedir:**

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem detay bilgileri</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": null
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# Ödeme Servisi

Ödeme Servisi, müşterilerimize güvenli, hızlı ve kolay bir şekilde ödeme yapma imkanı sunar. Sistemimizdeki versiyon kontrol özelliği sayesinde her zaman güncel kalın, direkt ödeme, 3D ödeme, iade, kısmi iade, iptal, ödeme sorgulama ve işlem listeleme gibi özelliklerle ödemelerinizi kolayca yapabilirsiniz.

<details>

<summary><strong>Versiyon Kontrol</strong></summary>

Sistemin güncel versiyonunu gösterir ve güncellemeleri yapmanızı sağlar.

</details>

<details>

<summary><strong>Direkt Ödeme</strong></summary>

Kullanıcıların doğrudan kredi kartı ya da banka kartı ile ödeme yapmasını sağlar.

</details>

<details>

<summary><strong>3D ile Ödeme</strong></summary>

Tek çekim, taksitli ve tek tıkla ödeme işlemleri için uygundur. İşleme gönderilen kartın bakiyesinden ilgili miktarı çekme işlemi yapar. Bu servis ile ilgili detaylı bilgiyi Ödeme Başlatma sayfamızdan edinebilirsiniz.

</details>

<details>

<summary><strong>İade</strong></summary>

Kullanıcıların yapmış oldukları ödemeleri iade etmelerini sağlar.

</details>

<details>

<summary><strong>Kısmi İade</strong></summary>

Kullanıcıların yapmış oldukları ödemenin sadece bir kısmını iade etmelerini sağlar.

</details>

<details>

<summary><strong>İptal</strong></summary>

Kullanıcıların yapmış oldukları ödemeleri iptal etmelerini sağlar.

</details>

<details>

<summary><strong>Ödeme Sorgulama Servisi</strong></summary>

Kullanıcıların yapmış oldukları ödemeleri sorgulama ve durumlarını kontrol etme imkanı sunar.

</details>

<details>

<summary><strong>İşlem Listeleme</strong></summary>

Kullanıcıların yapmış oldukları tüm ödemeleri listelemelerini ve durumlarını kontrol etmelerini sağlar.

</details>


# 1. Versiyon Kontrol

Sürüm Geçmişi

## Versiyon Kontrol

<mark style="color:blue;">`GET`</mark> `{{Base Adres}}/api/paywall/payment/version`

{% tabs %}
{% tab title="200: OK Geri dönüş parametreleri aşağıdaki gibidir." %}
{% code overflow="wrap" lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": "Always fresh, always ahead!"
}
```

{% endcode %}
{% endtab %}
{% endtabs %}

<table><thead><tr><th width="107">Sürüm</th><th width="134.33333333333331">Tarih</th><th>Açıklama</th></tr></thead><tbody><tr><td>1.0.0</td><td>11/09/2022</td><td>Metod, parametre ve web servis adres değişikliği yapıldı. Test verileri eklendi.</td></tr></tbody></table>

{% hint style="info" %}
Önemli: Ödeme başlatma servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PaymentAPI Adresi**</mark>](/ortam)
{% endhint %}

<table><thead><tr><th width="162">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

#### Servise gönderilmesi gereken parametreler şu şekildedir :

{% hint style="info" %}
Sistemin versiyon kontrolünü yapabilirsiniz. Bunun için sisteme aşağıdaki gibi istek atabilirsiniz.&#x20;
{% endhint %}


# 2. Non-Secure

Direkt ödeme servisi, istek gönderdiğiniz anda kart bilgilerinden ödemeyi tahsil etme işlemini başlatır ve işlem sonucunu cevap içerisinde döner

<mark style="color:green;">`POST`</mark> `{{Base Adres}}/api/paywall/payment/startdirect`

{% hint style="info" %}
Önemli: **Ödeme** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PaymentAPI Adresi**</mark>](/ortam)
{% endhint %}

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

<table><thead><tr><th width="162">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr><tr><td></td><td></td><td></td><td></td></tr></tbody></table>

<mark style="color:blue;">**Paywall İstek Payload**</mark>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "PaymentDetail": {
        "Amount": 1.00,
        "MerchantUniqueCode": "22123222256226225",
        "TrackingCode": "TrackingCode1",
        "Half2D": false,
        "ClientIP": "0.0.0.0",
        "CurrencyId": 1,
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "EndOfTheDay": 1,
        "RegionId": 1,
        "ProviderBased": false,
        "ProviderKey": "providerkey",
        "PosBased": false,
        "PosId": 0,
        "MarketPlace": {
            "BasketAmount": 1.00
        },
        "PayRouteByPass": false,
        "PayRouteType": 0,
        "RouteGroupKey": "route-003"
    },
    "Card":{
        "OwnerName":"Iyzico Kartı",
        "Number":"5528790000000008",
        "ExpireMonth":"12",
        "ExpireYear":"2030",
        "Cvv":"123",
        "ForceCvv": false, // Sadece kayıtlı kartlar için
        "UniqueCode":"",
        "TempCardToken": "",
        "Partner": { // Nullable
            "PartnerBased": false,
            "PartnerIdentity": ""
        },
        "CardSave": {
            "Nickname": "Kredi kartım",
            "RelationalId1": "userid19283746",
            "RelationalId2": "",
            "RelationalId3": "",
            "Save": true,
            "PreventDuplicate":true,
            "PreventDuplicateHours":10
        }
    },
    "Customer":{
        "FullName":"FullName",
        "Phone":"5336662211",
        "Email":"enes@xcompany.com",
        "Country":"Country",
        "City":"City",
        "Address":"Address",
        "IdentityNumber":"IdentityNumber",
        "TaxNumber":"TaxNumber"
    },
    "Products":[{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 1.0,
        "MemberId": 0,
        "MemberCustomCommission": false,
        "MemberCommission": 0,
        "MemberEarningCalculated": false,
        "MemberEarning": 0
    }]
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class Program
{
    static readonly HttpClient client = new HttpClient();

    public class PaymentDetail
    {
        public double Amount { get; set; }
        public string MerchantUniqueCode { get; set; }
        public int CurrencyId { get; set; }
        public string MerchantSuccessBackUrl { get; set; }
        public string MerchantFailBackUrl { get; set; }
        public int Installment { get; set; }
        public int ChannelId { get; set; }
        public int TagId { get; set; }
        public bool Half2D { get; set; }
    }

    public class Card
    {
        public string OwnerName { get; set; }
        public string Number { get; set; }
        public string ExpireMonth { get; set; }
        public string ExpireYear { get; set; }
        public string Cvv { get; set; }
        public string UniqueCode { get; set; }
    }

    public class Customer
    {
        public string FullName { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public string Country { get; set; }
        public string City { get; set; }
        public string Address { get; set; }
        public string IdentityNumber { get; set; }
        public string TaxNumber { get; set; }
    }

    public class Product
    {
        public string ProductId { get; set; }
        public string ProductName { get; set; }
        public string ProductCategory { get; set; }
        public string ProductDescription { get; set; }
        public double ProductAmount { get; set; }
    }

    public class Root
    {
        public PaymentDetail PaymentDetail { get; set; }
        public Card Card { get; set; }
        public Customer Customer { get; set; }
        public Product[] Products { get; set; }
    }

    public static async Task Main()
    {
        Root root = new Root
        {
            PaymentDetail = new PaymentDetail
            {
                Amount = 9.85,
                MerchantUniqueCode = "AJSHFSAKFHASKHFA",
                CurrencyId = 1,
                MerchantSuccessBackUrl = "https://merchantsite.site.com/success",
                MerchantFailBackUrl = "https://merchantsite.site.com/fail",
                Installment = 1,
                ChannelId = 0,
                TagId = 0,
                Half2D = false
            },
            Card = new Card
            {
                OwnerName = "John Doe",
                Number = "5528790000000008",
                ExpireMonth = "12",
                ExpireYear = "2030",
                Cvv = "123",
                UniqueCode = ""
            },
            Customer = new Customer
            {
                FullName = "FullName",
                Phone = "5336662211",
                Email = "enes@xcompany.com",
                Country = "Country",
                City = "City",
                Address = "Address",
                IdentityNumber = "IdentityNumber",
                TaxNumber = "TaxNumber"
            },
            Products = new Product[] {
                new Product {
                    ProductId = "ProductId",
                    ProductName = "ProductName",
                    ProductCategory = "ProductCategory",
                    ProductDescription = "ProductDescription",
                    ProductAmount = 9.85
                }
            }
        };

        string json = JsonConvert.SerializeObject(root, Formatting.Indented);
        var data = new StringContent(json, Encoding.UTF8, "application/json");

        client.DefaultRequestHeaders.Add("apikeypublic", "%%");
        client.DefaultRequestHeaders.Add("apiclientpublic", "%%");

        var url = "{{Base Adres}}/api/paywall/payment/startdirect";
        var response = await client.PostAsync(url, data);

        string result = response.Content.ReadAsStringAsync().Result;
        Console.WriteLine(result);
    }
}
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

type PaymentDetail struct {
	Amount                 float64 `json:"Amount"`
	MerchantUniqueCode     string  `json:"MerchantUniqueCode"`
	CurrencyId             int     `json:"CurrencyId"`
	MerchantSuccessBackUrl string  `json:"MerchantSuccessBackUrl"`
	MerchantFailBackUrl    string  `json:"MerchantFailBackUrl"`
	Installment           int     `json:"Installment"`
	ChannelId              int     `json:"ChannelId"`
	TagId                  int     `json:"TagId"`
	Half3D                 bool    `json:"Half3D"`
}

type Card struct {
	OwnerName   string `json:"OwnerName"`
	Number      string `json:"Number"`
	ExpireMonth string `json:"ExpireMonth"`
	ExpireYear  string `json:"ExpireYear"`
	Cvv         string `json:"Cvv"`
	UniqueCode  string `json:"UniqueCode"`
}

type Customer struct {
	FullName      string `json:"FullName"`
	Phone         string `json:"Phone"`
	Email         string `json:"Email"`
	Country       string `json:"Country"`
	City          string `json:"City"`
	Address       string `json:"Address"`
	IdentityNumber string `json:"IdentityNumber"`
	TaxNumber      string `json:"TaxNumber"`
}

type Product struct {
	ProductId          string  `json:"ProductId"`
	ProductName        string  `json:"ProductName"`
	ProductCategory    string  `json:"ProductCategory"`
	ProductDescription string  `json:"ProductDescription"`
	ProductAmount      float64 `json:"ProductAmount"`
}

type Data struct {
	PaymentDetail PaymentDetail `json:"PaymentDetail"`
	Card          Card          `json:"Card"`
	Customer      Customer      `json:"Customer"`
	Products      []Product     `json:"Products"`
}

type ResponseData struct {
	ErrorCode int
	Result    bool
	Message   string
	Body      string
}

func main() {
	data := Data{
		PaymentDetail: PaymentDetail{
			Amount:                 9.85,
			MerchantUniqueCode:     "AJSHFSAKFHASKHFA",
			CurrencyId:             1,
			MerchantSuccessBackUrl: "https://merchantsite.site.com/success",
			MerchantFailBackUrl:    "https://merchantsite.site.com/fail",
			Installement:           1,
			ChannelId:              0,
			TagId:                  0,
			Half3D:                 false,
		},
		Card: Card{
			OwnerName:   "John Doe",
			Number:      "5528790000000008",
			ExpireMonth: "12",
			ExpireYear:  "2030",
			Cvv:         "123",
			UniqueCode:  "",
		},
		Customer: Customer{
			FullName:       "FullName",
			Phone:          "5336662211",
			Email:          "enes@xcompany.com",
			Country:        "Country",
			City:           "City",
			Address:        "Address",
			IdentityNumber: "IdentityNumber",
			TaxNumber:      "TaxNumber",
		},
		Products: []Product{
			{
				ProductId:          "ProductId",
				ProductName:        "ProductName",
				ProductCategory:    "ProductCategory",
				ProductDescription: "ProductDescription",
				ProductAmount:      9.85,
			},
		},
	}

	payloadBuf := new(bytes.Buffer)
	json.NewEncoder(payloadBuf).Encode(data)

	req, _ := http.NewRequest("POST", "{{Base Adres}}/api/paywall/payment/startdirect", payloadBuf)

	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("apikeypublic", "%%")
	req.Header.Set("apiclientpublic", "%%")

	client := &http.Client{}
	res, e := client.Do(req)
	if e != nil {
		panic(e)
	}

	defer res.Body.Close()

	body, _ := ioutil.ReadAll(res.Body)

	var responseData ResponseData
	json.Unmarshal(body, &responseData)

	fmt.Println("ErrorCode: ", responseData.ErrorCode)
	fmt.Println("Result: ", responseData.Result)
	fmt.Println("Message: ", responseData.Message)
	fmt.Println("Body: ", responseData.Body)
}
```

{% endtab %}

{% tab title="Java" %}

```xml
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.5</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.9.0</version>
    </dependency>
</dependencies>
```

```java
import okhttp3.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;

public class Main {

    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();
        ObjectMapper mapper = new ObjectMapper();

        // Create JSON in a readable way
        ObjectNode rootNode = mapper.createObjectNode();
        rootNode.put("Amount", 9.85);
        rootNode.put("MerchantUniqueCode", "AJSHFSAKFHASKHFA");
        rootNode.put("CurrencyId", 1);
        rootNode.put("MerchantSuccessBackUrl", "https://merchantsite.site.com/success");
        rootNode.put("MerchantFailBackUrl", "https://merchantsite.site.com/fail");
        rootNode.put("Installment", 1);
        rootNode.put("ChannelId", 0);
        rootNode.put("TagId", 0);
        rootNode.put("Half3D", false);
        // and so on for all fields

        String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);

        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, json);
        Request request = new Request.Builder()
            .url("{{Base Adres}}/api/paywall/payment/startdirect")
            .post(body)
            .addHeader("Content-Type", "application/json")
            .addHeader("apikeypublic", "%%")
            .addHeader("apiclientpublic", "%%")
            .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$url = '{{Base Adres}}/api/paywall/payment/startdirect';
$data = array(
    "PaymentDetail" => array(
        "Amount" => 9.85,
        "MerchantUniqueCode" => "AJSHFSAKFHASKHFA",
        "CurrencyId" => 1,
        "MerchantSuccessBackUrl" => "https://merchantsite.site.com/success",
        "MerchantFailBackUrl" => "https://merchantsite.site.com/fail",
        "Installment" => 1,
        "ChannelId" => 0,
        "TagId" => 0,
        "Half3D" => false
    ),
    "Card" => array(
        "OwnerName" => "John Doe",
        "Number" => "5528790000000008",
        "ExpireMonth" => "12",
        "ExpireYear" => "2030",
        "Cvv" => "123",
        "UniqueCode" => ""
    ),
    "Customer" => array(
        "FullName" => "FullName",
        "Phone" => "5336662211",
        "Email" => "enes@xcompany.com",
        "Country" => "Country",
        "City" => "City",
        "Address" => "Address",
        "IdentityNumber" => "IdentityNumber",
        "TaxNumber" => "TaxNumber"
    ),
    "Products" => array(
        array(
            "ProductId" => "ProductId",
            "ProductName" => "ProductName",
            "ProductCategory" => "ProductCategory",
            "ProductDescription" => "ProductDescription",
            "ProductAmount" => 9.85
        )
    )
);
$options = array(
    'http' => array(
        'header'  => "Content-type: application/json\r\n" .
                     "apikeypublic: %PUBLICKEY%\r\n" . 
                     "apiclientpublic: %PUBLICCLIENT%\r\n",
        'method'  => 'POST',
        'content' => json_encode($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }

// Decode
$response = json_decode($result);

// ErrorCode-Result-Message
echo "ErrorCode: " . $response->ErrorCode . "\n";
echo "Result: " . ($response->Result ? "true" : "false") . "\n";
echo "Message: " . $response->Message . "\n";

// Decode Body
$body = json_decode($response->Body);
var_dump($result);
?>
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = '{{Base Adres}}/api/paywall/payment/startdirect'

headers = {
    'Content-Type': 'application/json',
    'apikeypublic': '%%',
    'apiclientpublic': '%%'
}

data = {
    "PaymentDetail": {
        "Amount": 9.85,
        "MerchantUniqueCode": "AJSHFSAKFHASKHFA",
        "CurrencyId": 1,
        "MerchantSuccessBackUrl": "https://merchantsite.site.com/success",
        "MerchantFailBackUrl": "https://merchantsite.site.com/fail",
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "Half3D": False
    },
    "Card": {
        "OwnerName": "John Doe",
        "Number": "5528790000000008",
        "ExpireMonth": "12",
        "ExpireYear": "2030",
        "Cvv": "123",
        "UniqueCode": ""
    },
    "Customer": {
        "FullName": "FullName",
        "Phone": "5336662211",
        "Email": "enes@xcompany.com",
        "Country": "Country",
        "City": "City",
        "Address": "Address",
        "IdentityNumber": "IdentityNumber",
        "TaxNumber": "TaxNumber"
    },
    "Products": [{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 9.85
    }]
}

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    response_data = response.json()

    print("ErrorCode: ", response_data.get('ErrorCode'))
    print("Result: ", response_data.get('Result'))
    print("Message: ", response_data.get('Message'))

    body = json.loads(response_data.get('Body'))
    print(body)
else:
    print(f'Request failed with status code {response.status_code}')
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("{{Base Adres}}/api/paywall/payment/startdirect")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path, {
  'Content-Type' => 'application/json',
  'apikeypublic' => '%%',
  'apiclientpublic' => '%%'
})

request.body = JSON.generate({
  "PaymentDetail" => {
    "Amount" => 9.85,
    "MerchantUniqueCode" => "AJSHFSAKFHASKHFA",
    "CurrencyId" => 1,
    "MerchantSuccessBackUrl" => "https://merchantsite.site.com/success",
    "MerchantFailBackUrl" => "https://merchantsite.site.com/fail",
    "Installment" => 1,
    "ChannelId" => 0,
    "TagId" => 0,
    "Half3D" => false
  },
  "Card" => {
    "OwnerName" => "John Doe",
    "Number" => "5528790000000008",
    "ExpireMonth" => "12",
    "ExpireYear" => "2030",
    "Cvv" => "123",
    "UniqueCode" => ""
  },
  "Customer" => {
    "FullName" => "FullName",
    "Phone" => "5336662211",
    "Email" => "enes@xcompany.com",
    "Country" => "Country",
    "City" => "City",
    "Address" => "Address",
    "IdentityNumber" => "IdentityNumber",
    "TaxNumber" => "TaxNumber"
  },
  "Products" => [
    {
      "ProductId" => "ProductId",
      "ProductName" => "ProductName",
      "ProductCategory" => "ProductCategory",
      "ProductDescription" => "ProductDescription",
      "ProductAmount" => 9.85
    }
  ]
})

response = http.request(request)
puts response.body
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import axios, { AxiosResponse } from 'axios';

interface ResponseData {
  ErrorCode: number;
  Result: boolean;
  Message: string;
  Body: string;
}

let data = {
  PaymentDetail: {
    Amount: 9.85,
    MerchantUniqueCode: "AJSHFSAKFHASKHFA",
    CurrencyId: 1,
    MerchantSuccessBackUrl: "https://merchantsite.site.com/success",
    MerchantFailBackUrl: "https://merchantsite.site.com/fail",
    Installment: 1,
    ChannelId: 0,
    TagId: 0,
    Half3D: false
  },
  Card: {
    OwnerName: "John Doe",
    Number: "5528790000000008",
    ExpireMonth: "12",
    ExpireYear: "2030",
    Cvv: "123",
    UniqueCode: ""
  },
  Customer: {
    FullName: "FullName",
    Phone: "5336662211",
    Email: "enes@xcompany.com",
    Country: "Country",
    City: "City",
    Address: "Address",
    IdentityNumber: "IdentityNumber",
    TaxNumber: "TaxNumber"
  },
  Products: [{
    ProductId: "ProductId",
    ProductName: "ProductName",
    ProductCategory: "ProductCategory",
    ProductDescription: "ProductDescription",
    ProductAmount: 9.85
  }]
};

let config = {
  method: 'post',
  url: '{{Base Adres}}/api/paywall/payment/startdirect',
  headers: { 
    'Content-Type': 'application/json', 
    'apikeypublic': '%%', 
    'apiclientpublic': '%%'
  },
  data : data
};

axios(config)
.then(function (response: AxiosResponse<ResponseData>) {
  console.log(response.data);
})
.catch(function (error) {
  console.log(error);
});
```

{% endtab %}

{% tab title="Curl" %}

```sh
curl --location --request POST '{{Base Adres}}/api/paywall/payment/startdirect' \
--header 'Content-Type: application/json' \
--header 'apikeypublic: %%PUBLICKEY%%' \
--header 'apiclientpublic: %%PUBLICCLIENT%%' \
--data-raw '{
    "PaymentDetail": {
        "Amount": 9.85,
        "MerchantUniqueCode": "FASLSZDPOT3535BFNGI",
        "CurrencyId": 1,
        "MerchantSuccessBackUrl": "https://merchantsite.site.com/success",
        "MerchantFailBackUrl": "https://merchantsite.site.com/fail",
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "Half3D": false
    },
    "Card": {
        "OwnerName": "John Doe",
        "Number": "5528790000000008",
        "ExpireMonth": "12",
        "ExpireYear": "2030",
        "Cvv": "123",
        "UniqueCode": ""
    },
    "Customer": {
        "FullName": "FullName",
        "Phone": "5336662211",
        "Email": "enes@xcompany.com",
        "Country": "Country",
        "City": "City",
        "Address": "Address",
        "IdentityNumber": "IdentityNumber",
        "TaxNumber": "TaxNumber"
    },
    "Products": [{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 9.85
    }]
}'
```

{% endtab %}
{% endtabs %}

**Gerekli istek parametreleri :**

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>PaymentDetail</code></mark></summary>

<table><thead><tr><th width="209">Parametre</th><th width="94">Tip</th><th width="124">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>Amount</td><td>decimal</td><td>Evet</td><td>Ödeme sepet tutarı.</td></tr><tr><td>MerchantUniqueCode</td><td>string</td><td>Evet</td><td>Ödeme başlatma için gönderilen istek içerisindeki MerchantUniqueCode ile aynı değer olmalıdır. Bu kod sizin tarafınızdan işleme ait verilen tekil değerdir. İptal/İade/Ödeme Sorgulama işlemlerinin hepsinde bir ödemeyi tekilleştirmeniz ve takip etmeniz için kullanılmaktadır.<br><br><mark style="color:red;">Uzunluk: 250 karakter</mark></td></tr><tr><td>TrackingCode</td><td>string</td><td>Hayır</td><td>Ödeme'nin tarafınızdaki ikincil takip numarası olarak kullanılabilir. MerchantUniqueCode parametresine ek ilişkilendirmeniz gereken ek bilgiyi bu parametre altında gönderebilirsiniz. <br><br><mark style="color:blue;"><strong>Önemli not:</strong></mark> Tekil değildir, tekrar tekrar verilebilir. İhtiyaç halinde tekilliği sizin tarafınızdan yönetilmelidir</td></tr><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Para birimi<br><br>Bkz: <a href="/pages/bahfUMz1dqpN1ZCnpVtM">İncele</a></td></tr><tr><td>Installment</td><td>int</td><td>Evet</td><td>Taksit bilgisi, tek çekim için 1 gönderilmelidir.</td></tr><tr><td>Half2D</td><td>bool</td><td>Hayır</td><td>Ödemelerinizi özel bir çağrı ile finansallaştırabilmeniz için size destek olacak parametredir. Half2D parametresini true göndermeniz durumunda ödeme bitirme çağrısını siz yapana kadar ödemeniz bankada <mark style="color:yellow;">provizyonda</mark> kalacaktır.</td></tr><tr><td>ClientIP</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren tarafın IP bilgisi. Müşteri/Kullanıcı/Üye vb.<br><br><mark style="color:red;">Uzunluk: 15 karakter</mark></td></tr><tr><td>TagId</td><td>int?</td><td>Hayır</td><td>Ödemelerinize etiketleme uygulamak istediğinizde kullanılır</td></tr><tr><td>ChannelId</td><td>int?</td><td>Hayır</td><td>Ödemelerinizin PayWall'a iletildiği kanalları ayrıştırmak istediğinizde kullanılır</td></tr><tr><td>EndOfTheDay</td><td>int?</td><td>Hayır</td><td>Gün sonu değeridir. Bağlı sağlayıcılar arasından ödemenizin sadece "Ertesi Gün" ödemeleri sağlayıcılardan geçmesini istediğinizde bu parametreyi dolu göndermelisiniz<br><br>Bkz: <a href="/pages/Gw9eZHjCiOMFXmyjycAF">İncele</a></td></tr><tr><td>RegionId</td><td>short?</td><td>Hayır</td><td>Ödemenizin hangi ülke altındaki sağlayıcılardan geçmesini istediğinizi belirtebileceğiniz parametredir. Belirtilmediği durumda ödemeniz 'Global' olarak işlenir</td></tr><tr><td>ProviderBased</td><td>bool</td><td>Hayır</td><td>Ödemenizin hangi sağlayıcıdan geçmesi gerektiğine kendi tarafınızda karar verdiğinizde kullanılır</td></tr><tr><td>ProviderKey</td><td>string</td><td>Evet/Hayır</td><td>Ödemenizin geçmesini istediğiniz sağlayıcı anahtarı<br><br>Bkz: <a href="/pages/xcaKRIoyfounPa4Z7Nvu">Liste</a></td></tr><tr><td>PosBased</td><td>bool</td><td>Hayır</td><td>Ödemenizin hangi sağlayıcıdan geçmesi gerektiğine kendi tarafınızda karar verdiğinizde kullanılır</td></tr><tr><td>PosId</td><td>int</td><td>Evet/Hayır</td><td>Ödemenizin geçmesini istediğiniz sağlayıcının bağlantı kimlik numarasıdır. Paywall panelinden temin bağlı sağlayıcılar listesinde yer almaktadır</td></tr><tr><td>PayRouteByPass</td><td>bool</td><td>Hayır</td><td>Paywall panelinden ayarlanan PayRoute ayarlı bypass edilmek isteniyor mu? Bu parametreyle varsayılan ayarı ezebilir, ödeme özelinde routing tipini değiştirebilirsiniz</td></tr><tr><td>PayRouteType</td><td>short</td><td>Evet/Hayır</td><td><code>PayRouteByPass</code> parametresinin true gönderilmesi durumda, <code>PayRouteType</code> parametresi de dolu gönderilmelidir. Ödeme özelinde routing tipinin ne olacağını bu parametreyle belirtebilirsiniz<br><br>Bkz: <a href="/pages/1Dk9V7ha13cYQ7LpykZx">PayRoute Tipleri</a></td></tr><tr><td>RouteGroupKey</td><td>string</td><td>Evet/Hayır</td><td>Paywall panelinden PayRoute'un RouteGroup ayarlanması veya ödeme özelinde PayRoute'un bypass edilmesi ve PayRouteType'ın RouteGroup olarak belirtilmesi durumda ödemenin hangi RouteGroup özelinde işleneceğini bu parametreyle belirtmeniz gerekmektedir</td></tr><tr><td>MarketPlace <mark style="color:red;">></mark> BasketAmount</td><td>decimal</td><td>Hayır</td><td>Pazaryeri kapsamında kullanılır</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>Card</code></mark></summary>

<table><thead><tr><th width="177">Parametre</th><th width="84">Tip</th><th width="128">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>OwnerName</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kart sahibinin adı soyadı.<br><br><mark style="color:red;">Uzunluk: 150 karakter</mark></td></tr><tr><td>Number</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kart numarası.<br><br><mark style="color:red;">Uzunluk: 20 karakter</mark></td></tr><tr><td>ExpireMonth</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı  kartın son kullanma tarihi ayı.</td></tr><tr><td>ExpireYear</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı  kartın son kullanma tarihi yılı.</td></tr><tr><td>Cvv</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kartın güvenlik kodu.</td></tr><tr><td>ForceCvv</td><td>bool</td><td>Hayır</td><td>Sadece kayıtlı kartlar için kullanılır. Bu parametreyle kayıtlı kartlar için de kullanıcılarınızdan CVV alabilir ve ödeme isteği içersinde gönderebilirsiniz.<br><br>Kayıtlı kartlarda bu parametreyi <code>true</code> göndermezseniz, Paywall <code>UniqueCode</code> parametresi hariç tüm parametreleri görmezden gelir</td></tr><tr><td>UniqueCode</td><td>string</td><td>Evet/Hayır</td><td>Kayıtlı karta ait kimlik bilgisi. Kaydetme ve listeleme anında Paywall'dan döner</td></tr><tr><td>TempCardToken</td><td>string</td><td>Evet/Hayır</td><td>Geçici kayıtlı kart (Client-Side Tokenization) ile ödeme almak istediğinizde kullanılması gereken parametredir</td></tr><tr><td>Partner<mark style="color:red;">? ></mark><br>PartnerBased</td><td>bool?</td><td>Evet/Hayır</td><td>Kartları Partner tabanlı kurguladığınızda kullanılacak parametredir</td></tr><tr><td>Partner<mark style="color:red;">? ></mark><br>PartnerIdentity</td><td>string</td><td>Evet/Hayır</td><td>Kartları Partner tabanlı kurguladığınızda, şirketinizin Paywall'daki partnerlik kimlik bilgisidir. Bu bilgiyi Paywall panelinden edinebilirsiniz</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>Save</td><td>bool</td><td>Evet/Hayır</td><td>Ödeme anında, ödemenin başarılı olması durumunda kartın kayıt edilmesi istenirse True gönderilmelidir. True gönderildiğinde CardSave objesi altındaki diğer parametreler dikkate alınır</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>Nickname</td><td>string</td><td>Evet/Hayır</td><td>Kart'a ait takma isimdir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId1</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın ilişki değeridir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId2</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın ikinci (ağaç yapısı) ilişki değeridir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId3</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın üçüncü (ağaç yapısı) ilişki değeridir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>PreventDuplicate</td><td>bool</td><td>Hayır</td><td>Aynı kartın tekrar kaydını engeller</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>PreventDuplicateHours</td><td>int</td><td>Hayır</td><td>Aynı kullanıcının belirli bir merchant'a belirli saat aralığında yeni kart kaydını engeller.</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>Customer</code></mark></summary>

<table><thead><tr><th width="174">Parametre</th><th width="110">Tip</th><th width="100">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>FullName</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait ad</td></tr><tr><td>Phone</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait GSM numarası.</td></tr><tr><td>Email</td><td>string</td><td>Evet</td><td>İşyeri tarafındaki alıcıya ait e-posta bilgisi.</td></tr><tr><td>Country</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait ülke bilgisi.</td></tr><tr><td>City</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait şehir bilgisi.</td></tr><tr><td>Address</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait kayıt adresi.</td></tr><tr><td>IdentityNumber</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait kimlik (TCKN) numarası.</td></tr><tr><td>TaxNumber</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait vergi kimlik  numarası.</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>Product&#x3C;Array></code></mark></summary>

<table><thead><tr><th width="272">Parametre</th><th width="109">Tip</th><th width="122">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>ProductId</td><td>string</td><td>Evet</td><td>Ürün Id.</td></tr><tr><td>ProductName</td><td>string</td><td>Evet</td><td>Ürün adı.</td></tr><tr><td>ProductCategory</td><td>string</td><td>Evet</td><td>Ürün kategorisi.</td></tr><tr><td>ProductDescription</td><td>string</td><td>Evet</td><td>Ürün açıklama</td></tr><tr><td>ProductAmount</td><td>decimal</td><td>Evet</td><td>Ürün fiyat bilgisi</td></tr><tr><td>MemberId</td><td>int?</td><td>Evet/Hayır</td><td>MarketPlace modeli için zorunludur. Alt üye işyerinin Paywall sistemindeki MemberId bilgisiyle doldurulmalıdır</td></tr><tr><td>MemberEarningCalculated</td><td>bool?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirketin hak edişini siz hesapladıysanız bu parametreyi true göndermelisiniz</td></tr><tr><td>MemberEarning</td><td>decimal?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirketin hak edişini siz hesapladıysanız bu parametreyi hak ediş değerini Paywall'a bildirmelisiniz</td></tr><tr><td>MemberCustomCommission</td><td>bool</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirkete bu satış özelinde komisyon belirtmek isterseniz kullanılan parametredir</td></tr><tr><td>MemberCommission</td><td>decimal?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirkete bu satış özelinde komisyon belirtmek isterdiğinizde, komisyon değerinin gönderildiği parametredir</td></tr></tbody></table>

</details>

**Servisten dönen parametreler şu şekildedir:**

<details>

<summary><strong>Parametre açıklamaları</strong></summary>

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem hatalıysa, bu hataya dair belirtilen kodudur.</td></tr></tbody></table>

</details>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "PaymentGatewayId": 1262,
            "PaymentGatewayName": "correctaccount",
            "PaymentGatewayProviderName": "Provider",
            "Card": {
                "Saved": false,
                "RelationalId1": "",
                "RelationalId2": "",
                "RelationalId3": "",
                "UniqueCode": ""
            },
            "ExternalInfo": {
                "PaymentActivityTypeId": 0,
                "PaymentExternalAuthCode": "",
                "PaymentExternalOrderId": "",
                "PaymentExternalTransId": "",
                "PaymentExternalHostReference": "",
                "PaymentExternalMerchantId": ""
            }
        },
        "Error": {
            "ProviderErrorCode": null,
            "ProviderErrorMessage": null,
            "BankErrorCode": null,
            "BankErrorMessage": null
        }
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}


# 2. Non-Secure

Direkt ödeme servisi, istek gönderdiğiniz anda kart bilgilerinden ödemeyi tahsil etme işlemini başlatır ve işlem sonucunu cevap içerisinde döner

<mark style="color:green;">`POST`</mark> `{{Base Adres}}/api/paywall/payment/startdirect`

{% hint style="info" %}
Önemli: **Ödeme** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PaymentAPI Adresi**</mark>](/ortam)
{% endhint %}

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

<table><thead><tr><th width="162">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

<mark style="color:blue;">**Paywall İstek Payload**</mark>

{% tabs %}
{% tab title="JSON" %}

<pre class="language-json5" data-line-numbers><code class="lang-json5"><strong>{
</strong>    "PaymentDetail": {
        "Amount": 1.00,
        "MerchantUniqueCode": "22123222256226225",
        "TrackingCode": "TrackingCode1",
        "Half2D": false,
        "ClientIP": "0.0.0.0",
        "CurrencyId": 1,
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "EndOfTheDay": 1,
        "RegionId": 1,
        "ProviderBased": false,
        "ProviderKey": "providerkey",
        "PosBased": false,
        "PosId": 0,
        "MarketPlace": {
            "BasketAmount": 1.00
        },
        "PayRouteByPass": false,
        "PayRouteType": 0,
        "RouteGroupKey": "route-003"
    },
    "Card":{
        "OwnerName":"Iyzico Kartı",
        "Number":"5528790000000008",
        "ExpireMonth":"12",
        "ExpireYear":"2030",
        "Cvv":"123",
        "ForceCvv": false, // Sadece kayıtlı kartlar için
        "UniqueCode":"",
        "TempCardToken": "",
        "Partner": { // Nullable
            "PartnerBased": false,
            "PartnerIdentity": "",
        },
        "CardSave": {
            "Nickname": "Kredi kartım",
            "RelationalId1": "userid19283746",
            "RelationalId2": "",
            "RelationalId3": "",
            "Save": true,
            "PreventDuplicate": true,
            "PreventDuplicateHours": 10,
        }
    },
    "Customer":{
        "FullName": "FullName",
        "Phone": "5336662211",
        "Email": "enes@xcompany.com",
        "Country": "Country",
        "City": "City",
        "Address": "Address",
        "IdentityNumber": "IdentityNumber",
        "TaxNumber": "TaxNumber"
        "DeviceFingerprint": "FingerPrint",
        "UserAgent": "UserAgent",
        "UserRegisteredAt": "2026-01-13T12:00:00",
        "Location": {
            "Country": "Turkey",
            "City": "Istanbul",
            "Region": "europe",
            "Lat": "41.07",
            "Lon": "29.00"
        }
    },
    "Products":[{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 1.0,
        "MemberId": 0,
        "MemberCustomCommission": false,
        "MemberCommission": 0,
        "MemberEarningCalculated": false,
        "MemberEarning": 0
    }],
<strong>    "UseFraudParameters": false, 
</strong>    "FraudParameters":{     
        "BypassFraud": false,        
        "OverrideActualParameters": false,
        "DeviceFingerprint": "test-FRD",
        "Amount": 101,       
        "ClientIP": "1.1.1.1",        
        "CountryCode": "TR-FRD",        
        "UserAgent": "UserAgent-FRD",        
        "Email": "FRD@gmail.com",        
        "Phone": "5435435454-FRD",
        "UserRegisteredAt": "2026-01-13T12:00:00",
        "Location": {
            "Country": "Turkey",
            "City": "Istanbul",
            "Region": "europe",
            "Lat": "41.07",
            "Lon": "29.00"
        }
    }
}
</code></pre>

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class Program
{
    static readonly HttpClient client = new HttpClient();

    public class PaymentDetail
    {
        public double Amount { get; set; }
        public string MerchantUniqueCode { get; set; }
        public int CurrencyId { get; set; }
        public string MerchantSuccessBackUrl { get; set; }
        public string MerchantFailBackUrl { get; set; }
        public int Installment { get; set; }
        public int ChannelId { get; set; }
        public int TagId { get; set; }
        public bool Half2D { get; set; }
    }

    public class Card
    {
        public string OwnerName { get; set; }
        public string Number { get; set; }
        public string ExpireMonth { get; set; }
        public string ExpireYear { get; set; }
        public string Cvv { get; set; }
        public string UniqueCode { get; set; }
    }

    public class Customer
    {
        public string FullName { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public string Country { get; set; }
        public string City { get; set; }
        public string Address { get; set; }
        public string IdentityNumber { get; set; }
        public string TaxNumber { get; set; }
    }

    public class Product
    {
        public string ProductId { get; set; }
        public string ProductName { get; set; }
        public string ProductCategory { get; set; }
        public string ProductDescription { get; set; }
        public double ProductAmount { get; set; }
    }

    public class Root
    {
        public PaymentDetail PaymentDetail { get; set; }
        public Card Card { get; set; }
        public Customer Customer { get; set; }
        public Product[] Products { get; set; }
    }

    public static async Task Main()
    {
        Root root = new Root
        {
            PaymentDetail = new PaymentDetail
            {
                Amount = 9.85,
                MerchantUniqueCode = "AJSHFSAKFHASKHFA",
                CurrencyId = 1,
                MerchantSuccessBackUrl = "https://merchantsite.site.com/success",
                MerchantFailBackUrl = "https://merchantsite.site.com/fail",
                Installment = 1,
                ChannelId = 0,
                TagId = 0,
                Half2D = false
            },
            Card = new Card
            {
                OwnerName = "John Doe",
                Number = "5528790000000008",
                ExpireMonth = "12",
                ExpireYear = "2030",
                Cvv = "123",
                UniqueCode = ""
            },
            Customer = new Customer
            {
                FullName = "FullName",
                Phone = "5336662211",
                Email = "enes@xcompany.com",
                Country = "Country",
                City = "City",
                Address = "Address",
                IdentityNumber = "IdentityNumber",
                TaxNumber = "TaxNumber"
            },
            Products = new Product[] {
                new Product {
                    ProductId = "ProductId",
                    ProductName = "ProductName",
                    ProductCategory = "ProductCategory",
                    ProductDescription = "ProductDescription",
                    ProductAmount = 9.85
                }
            }
        };

        string json = JsonConvert.SerializeObject(root, Formatting.Indented);
        var data = new StringContent(json, Encoding.UTF8, "application/json");

        client.DefaultRequestHeaders.Add("apikeypublic", "%%");
        client.DefaultRequestHeaders.Add("apiclientpublic", "%%");

        var url = "{{Base Adres}}/api/paywall/payment/startdirect";
        var response = await client.PostAsync(url, data);

        string result = response.Content.ReadAsStringAsync().Result;
        Console.WriteLine(result);
    }
}
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

type PaymentDetail struct {
	Amount                 float64 `json:"Amount"`
	MerchantUniqueCode     string  `json:"MerchantUniqueCode"`
	CurrencyId             int     `json:"CurrencyId"`
	MerchantSuccessBackUrl string  `json:"MerchantSuccessBackUrl"`
	MerchantFailBackUrl    string  `json:"MerchantFailBackUrl"`
	Installment           int     `json:"Installment"`
	ChannelId              int     `json:"ChannelId"`
	TagId                  int     `json:"TagId"`
	Half3D                 bool    `json:"Half3D"`
}

type Card struct {
	OwnerName   string `json:"OwnerName"`
	Number      string `json:"Number"`
	ExpireMonth string `json:"ExpireMonth"`
	ExpireYear  string `json:"ExpireYear"`
	Cvv         string `json:"Cvv"`
	UniqueCode  string `json:"UniqueCode"`
}

type Customer struct {
	FullName      string `json:"FullName"`
	Phone         string `json:"Phone"`
	Email         string `json:"Email"`
	Country       string `json:"Country"`
	City          string `json:"City"`
	Address       string `json:"Address"`
	IdentityNumber string `json:"IdentityNumber"`
	TaxNumber      string `json:"TaxNumber"`
}

type Product struct {
	ProductId          string  `json:"ProductId"`
	ProductName        string  `json:"ProductName"`
	ProductCategory    string  `json:"ProductCategory"`
	ProductDescription string  `json:"ProductDescription"`
	ProductAmount      float64 `json:"ProductAmount"`
}

type Data struct {
	PaymentDetail PaymentDetail `json:"PaymentDetail"`
	Card          Card          `json:"Card"`
	Customer      Customer      `json:"Customer"`
	Products      []Product     `json:"Products"`
}

type ResponseData struct {
	ErrorCode int
	Result    bool
	Message   string
	Body      string
}

func main() {
	data := Data{
		PaymentDetail: PaymentDetail{
			Amount:                 9.85,
			MerchantUniqueCode:     "AJSHFSAKFHASKHFA",
			CurrencyId:             1,
			MerchantSuccessBackUrl: "https://merchantsite.site.com/success",
			MerchantFailBackUrl:    "https://merchantsite.site.com/fail",
			Installement:           1,
			ChannelId:              0,
			TagId:                  0,
			Half3D:                 false,
		},
		Card: Card{
			OwnerName:   "John Doe",
			Number:      "5528790000000008",
			ExpireMonth: "12",
			ExpireYear:  "2030",
			Cvv:         "123",
			UniqueCode:  "",
		},
		Customer: Customer{
			FullName:       "FullName",
			Phone:          "5336662211",
			Email:          "enes@xcompany.com",
			Country:        "Country",
			City:           "City",
			Address:        "Address",
			IdentityNumber: "IdentityNumber",
			TaxNumber:      "TaxNumber",
		},
		Products: []Product{
			{
				ProductId:          "ProductId",
				ProductName:        "ProductName",
				ProductCategory:    "ProductCategory",
				ProductDescription: "ProductDescription",
				ProductAmount:      9.85,
			},
		},
	}

	payloadBuf := new(bytes.Buffer)
	json.NewEncoder(payloadBuf).Encode(data)

	req, _ := http.NewRequest("POST", "{{Base Adres}}/api/paywall/payment/startdirect", payloadBuf)

	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("apikeypublic", "%%")
	req.Header.Set("apiclientpublic", "%%")

	client := &http.Client{}
	res, e := client.Do(req)
	if e != nil {
		panic(e)
	}

	defer res.Body.Close()

	body, _ := ioutil.ReadAll(res.Body)

	var responseData ResponseData
	json.Unmarshal(body, &responseData)

	fmt.Println("ErrorCode: ", responseData.ErrorCode)
	fmt.Println("Result: ", responseData.Result)
	fmt.Println("Message: ", responseData.Message)
	fmt.Println("Body: ", responseData.Body)
}
```

{% endtab %}

{% tab title="Java" %}

```xml
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.5</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.9.0</version>
    </dependency>
</dependencies>
```

```java
import okhttp3.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;

public class Main {

    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();
        ObjectMapper mapper = new ObjectMapper();

        // Create JSON in a readable way
        ObjectNode rootNode = mapper.createObjectNode();
        rootNode.put("Amount", 9.85);
        rootNode.put("MerchantUniqueCode", "AJSHFSAKFHASKHFA");
        rootNode.put("CurrencyId", 1);
        rootNode.put("MerchantSuccessBackUrl", "https://merchantsite.site.com/success");
        rootNode.put("MerchantFailBackUrl", "https://merchantsite.site.com/fail");
        rootNode.put("Installment", 1);
        rootNode.put("ChannelId", 0);
        rootNode.put("TagId", 0);
        rootNode.put("Half3D", false);
        // and so on for all fields

        String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);

        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, json);
        Request request = new Request.Builder()
            .url("{{Base Adres}}/api/paywall/payment/startdirect")
            .post(body)
            .addHeader("Content-Type", "application/json")
            .addHeader("apikeypublic", "%%")
            .addHeader("apiclientpublic", "%%")
            .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$url = '{{Base Adres}}/api/paywall/payment/startdirect';
$data = array(
    "PaymentDetail" => array(
        "Amount" => 9.85,
        "MerchantUniqueCode" => "AJSHFSAKFHASKHFA",
        "CurrencyId" => 1,
        "MerchantSuccessBackUrl" => "https://merchantsite.site.com/success",
        "MerchantFailBackUrl" => "https://merchantsite.site.com/fail",
        "Installment" => 1,
        "ChannelId" => 0,
        "TagId" => 0,
        "Half3D" => false
    ),
    "Card" => array(
        "OwnerName" => "John Doe",
        "Number" => "5528790000000008",
        "ExpireMonth" => "12",
        "ExpireYear" => "2030",
        "Cvv" => "123",
        "UniqueCode" => ""
    ),
    "Customer" => array(
        "FullName" => "FullName",
        "Phone" => "5336662211",
        "Email" => "enes@xcompany.com",
        "Country" => "Country",
        "City" => "City",
        "Address" => "Address",
        "IdentityNumber" => "IdentityNumber",
        "TaxNumber" => "TaxNumber"
    ),
    "Products" => array(
        array(
            "ProductId" => "ProductId",
            "ProductName" => "ProductName",
            "ProductCategory" => "ProductCategory",
            "ProductDescription" => "ProductDescription",
            "ProductAmount" => 9.85
        )
    )
);
$options = array(
    'http' => array(
        'header'  => "Content-type: application/json\r\n" .
                     "apikeypublic: %PUBLICKEY%\r\n" . 
                     "apiclientpublic: %PUBLICCLIENT%\r\n",
        'method'  => 'POST',
        'content' => json_encode($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }

// Decode
$response = json_decode($result);

// ErrorCode-Result-Message
echo "ErrorCode: " . $response->ErrorCode . "\n";
echo "Result: " . ($response->Result ? "true" : "false") . "\n";
echo "Message: " . $response->Message . "\n";

// Decode Body
$body = json_decode($response->Body);
var_dump($result);
?>
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = '{{Base Adres}}/api/paywall/payment/startdirect'

headers = {
    'Content-Type': 'application/json',
    'apikeypublic': '%%',
    'apiclientpublic': '%%'
}

data = {
    "PaymentDetail": {
        "Amount": 9.85,
        "MerchantUniqueCode": "AJSHFSAKFHASKHFA",
        "CurrencyId": 1,
        "MerchantSuccessBackUrl": "https://merchantsite.site.com/success",
        "MerchantFailBackUrl": "https://merchantsite.site.com/fail",
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "Half3D": False
    },
    "Card": {
        "OwnerName": "John Doe",
        "Number": "5528790000000008",
        "ExpireMonth": "12",
        "ExpireYear": "2030",
        "Cvv": "123",
        "UniqueCode": ""
    },
    "Customer": {
        "FullName": "FullName",
        "Phone": "5336662211",
        "Email": "enes@xcompany.com",
        "Country": "Country",
        "City": "City",
        "Address": "Address",
        "IdentityNumber": "IdentityNumber",
        "TaxNumber": "TaxNumber"
    },
    "Products": [{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 9.85
    }]
}

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    response_data = response.json()

    print("ErrorCode: ", response_data.get('ErrorCode'))
    print("Result: ", response_data.get('Result'))
    print("Message: ", response_data.get('Message'))

    body = json.loads(response_data.get('Body'))
    print(body)
else:
    print(f'Request failed with status code {response.status_code}')
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("{{Base Adres}}/api/paywall/payment/startdirect")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path, {
  'Content-Type' => 'application/json',
  'apikeypublic' => '%%',
  'apiclientpublic' => '%%'
})

request.body = JSON.generate({
  "PaymentDetail" => {
    "Amount" => 9.85,
    "MerchantUniqueCode" => "AJSHFSAKFHASKHFA",
    "CurrencyId" => 1,
    "MerchantSuccessBackUrl" => "https://merchantsite.site.com/success",
    "MerchantFailBackUrl" => "https://merchantsite.site.com/fail",
    "Installment" => 1,
    "ChannelId" => 0,
    "TagId" => 0,
    "Half3D" => false
  },
  "Card" => {
    "OwnerName" => "John Doe",
    "Number" => "5528790000000008",
    "ExpireMonth" => "12",
    "ExpireYear" => "2030",
    "Cvv" => "123",
    "UniqueCode" => ""
  },
  "Customer" => {
    "FullName" => "FullName",
    "Phone" => "5336662211",
    "Email" => "enes@xcompany.com",
    "Country" => "Country",
    "City" => "City",
    "Address" => "Address",
    "IdentityNumber" => "IdentityNumber",
    "TaxNumber" => "TaxNumber"
  },
  "Products" => [
    {
      "ProductId" => "ProductId",
      "ProductName" => "ProductName",
      "ProductCategory" => "ProductCategory",
      "ProductDescription" => "ProductDescription",
      "ProductAmount" => 9.85
    }
  ]
})

response = http.request(request)
puts response.body
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import axios, { AxiosResponse } from 'axios';

interface ResponseData {
  ErrorCode: number;
  Result: boolean;
  Message: string;
  Body: string;
}

let data = {
  PaymentDetail: {
    Amount: 9.85,
    MerchantUniqueCode: "AJSHFSAKFHASKHFA",
    CurrencyId: 1,
    MerchantSuccessBackUrl: "https://merchantsite.site.com/success",
    MerchantFailBackUrl: "https://merchantsite.site.com/fail",
    Installment: 1,
    ChannelId: 0,
    TagId: 0,
    Half3D: false
  },
  Card: {
    OwnerName: "John Doe",
    Number: "5528790000000008",
    ExpireMonth: "12",
    ExpireYear: "2030",
    Cvv: "123",
    UniqueCode: ""
  },
  Customer: {
    FullName: "FullName",
    Phone: "5336662211",
    Email: "enes@xcompany.com",
    Country: "Country",
    City: "City",
    Address: "Address",
    IdentityNumber: "IdentityNumber",
    TaxNumber: "TaxNumber"
  },
  Products: [{
    ProductId: "ProductId",
    ProductName: "ProductName",
    ProductCategory: "ProductCategory",
    ProductDescription: "ProductDescription",
    ProductAmount: 9.85
  }]
};

let config = {
  method: 'post',
  url: '{{Base Adres}}/api/paywall/payment/startdirect',
  headers: { 
    'Content-Type': 'application/json', 
    'apikeypublic': '%%', 
    'apiclientpublic': '%%'
  },
  data : data
};

axios(config)
.then(function (response: AxiosResponse<ResponseData>) {
  console.log(response.data);
})
.catch(function (error) {
  console.log(error);
});
```

{% endtab %}

{% tab title="Curl" %}

```sh
curl --location --request POST '{{Base Adres}}/api/paywall/payment/startdirect' \
--header 'Content-Type: application/json' \
--header 'apikeypublic: %%PUBLICKEY%%' \
--header 'apiclientpublic: %%PUBLICCLIENT%%' \
--data-raw '{
    "PaymentDetail": {
        "Amount": 9.85,
        "MerchantUniqueCode": "FASLSZDPOT3535BFNGI",
        "CurrencyId": 1,
        "MerchantSuccessBackUrl": "https://merchantsite.site.com/success",
        "MerchantFailBackUrl": "https://merchantsite.site.com/fail",
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "Half3D": false
    },
    "Card": {
        "OwnerName": "John Doe",
        "Number": "5528790000000008",
        "ExpireMonth": "12",
        "ExpireYear": "2030",
        "Cvv": "123",
        "UniqueCode": ""
    },
    "Customer": {
        "FullName": "FullName",
        "Phone": "5336662211",
        "Email": "enes@xcompany.com",
        "Country": "Country",
        "City": "City",
        "Address": "Address",
        "IdentityNumber": "IdentityNumber",
        "TaxNumber": "TaxNumber"
    },
    "Products": [{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 9.85
    }]
}'
```

{% endtab %}
{% endtabs %}

**Gerekli istek parametreleri :**

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>PaymentDetail</code></mark></summary>

<table><thead><tr><th width="209">Parametre</th><th width="94">Tip</th><th width="124">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>Amount</td><td>decimal</td><td>Evet</td><td>Ödeme sepet tutarı.</td></tr><tr><td>MerchantUniqueCode</td><td>string</td><td>Evet</td><td>Ödeme başlatma için gönderilen istek içerisindeki MerchantUniqueCode ile aynı değer olmalıdır. Bu kod sizin tarafınızdan işleme ait verilen tekil değerdir. İptal/İade/Ödeme Sorgulama işlemlerinin hepsinde bir ödemeyi tekilleştirmeniz ve takip etmeniz için kullanılmaktadır.<br><br><mark style="color:red;">Uzunluk: 250 karakter</mark></td></tr><tr><td>TrackingCode</td><td>string</td><td>Hayır</td><td>Ödeme'nin tarafınızdaki ikincil takip numarası olarak kullanılabilir. MerchantUniqueCode parametresine ek ilişkilendirmeniz gereken ek bilgiyi bu parametre altında gönderebilirsiniz. <br><br><mark style="color:blue;"><strong>Önemli not:</strong></mark> Tekil değildir, tekrar tekrar verilebilir. İhtiyaç halinde tekilliği sizin tarafınızdan yönetilmelidir</td></tr><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Para birimi<br><br>Bkz: <a href="/pages/bahfUMz1dqpN1ZCnpVtM">İncele</a></td></tr><tr><td>Installment</td><td>int</td><td>Evet</td><td>Taksit bilgisi, tek çekim için 1 gönderilmelidir.</td></tr><tr><td>Half2D</td><td>bool</td><td>Hayır</td><td>Ödemelerinizi özel bir çağrı ile finansallaştırabilmeniz için size destek olacak parametredir. Half2D parametresini true göndermeniz durumunda ödeme bitirme çağrısını siz yapana kadar ödemeniz bankada <mark style="color:yellow;">provizyonda</mark> kalacaktır.</td></tr><tr><td>ClientIP</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren tarafın IP bilgisi. Müşteri/Kullanıcı/Üye vb.<br><br><mark style="color:red;">Uzunluk: 15 karakter</mark></td></tr><tr><td>TagId</td><td>int?</td><td>Hayır</td><td>Ödemelerinize etiketleme uygulamak istediğinizde kullanılır</td></tr><tr><td>ChannelId</td><td>int?</td><td>Hayır</td><td>Ödemelerinizin PayWall'a iletildiği kanalları ayrıştırmak istediğinizde kullanılır</td></tr><tr><td>EndOfTheDay</td><td>int?</td><td>Hayır</td><td>Gün sonu değeridir. Bağlı sağlayıcılar arasından ödemenizin sadece "Ertesi Gün" ödemeleri sağlayıcılardan geçmesini istediğinizde bu parametreyi dolu göndermelisiniz<br><br>Bkz: <a href="/pages/Gw9eZHjCiOMFXmyjycAF">İncele</a></td></tr><tr><td>RegionId</td><td>short?</td><td>Hayır</td><td>Ödemenizin hangi ülke altındaki sağlayıcılardan geçmesini istediğinizi belirtebileceğiniz parametredir. Belirtilmediği durumda ödemeniz 'Global' olarak işlenir</td></tr><tr><td>ProviderBased</td><td>bool</td><td>Hayır</td><td>Ödemenizin hangi sağlayıcıdan geçmesi gerektiğine kendi tarafınızda karar verdiğinizde kullanılır</td></tr><tr><td>ProviderKey</td><td>string</td><td>Evet/Hayır</td><td>Ödemenizin geçmesini istediğiniz sağlayıcı anahtarı<br><br>Bkz: <a href="/pages/xcaKRIoyfounPa4Z7Nvu">Liste</a></td></tr><tr><td>PosBased</td><td>bool</td><td>Hayır</td><td>Ödemenizin hangi sağlayıcıdan geçmesi gerektiğine kendi tarafınızda karar verdiğinizde kullanılır</td></tr><tr><td>PosId</td><td>int</td><td>Evet/Hayır</td><td>Ödemenizin geçmesini istediğiniz sağlayıcının bağlantı kimlik numarasıdır. Paywall panelinden temin bağlı sağlayıcılar listesinde yer almaktadır</td></tr><tr><td>PayRouteByPass</td><td>bool</td><td>Hayır</td><td>Paywall panelinden ayarlanan PayRoute ayarlı bypass edilmek isteniyor mu? Bu parametreyle varsayılan ayarı ezebilir, ödeme özelinde routing tipini değiştirebilirsiniz</td></tr><tr><td>PayRouteType</td><td>short</td><td>Evet/Hayır</td><td><code>PayRouteByPass</code> parametresinin true gönderilmesi durumda, <code>PayRouteType</code> parametresi de dolu gönderilmelidir. Ödeme özelinde routing tipinin ne olacağını bu parametreyle belirtebilirsiniz<br><br>Bkz: <a href="/pages/1Dk9V7ha13cYQ7LpykZx">PayRoute Tipleri</a></td></tr><tr><td>RouteGroupKey</td><td>string</td><td>Evet/Hayır</td><td>Paywall panelinden PayRoute'un RouteGroup ayarlanması veya ödeme özelinde PayRoute'un bypass edilmesi ve PayRouteType'ın RouteGroup olarak belirtilmesi durumda ödemenin hangi RouteGroup özelinde işleneceğini bu parametreyle belirtmeniz gerekmektedir</td></tr><tr><td>MarketPlace <mark style="color:red;">></mark> BasketAmount</td><td>decimal</td><td>Hayır</td><td>Pazaryeri kapsamında kullanılır</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>Card</code></mark></summary>

<table><thead><tr><th width="177">Parametre</th><th width="84">Tip</th><th width="128">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>OwnerName</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kart sahibinin adı soyadı.<br><br><mark style="color:red;">Uzunluk: 150 karakter</mark></td></tr><tr><td>Number</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kart numarası.<br><br><mark style="color:red;">Uzunluk: 20 karakter</mark></td></tr><tr><td>ExpireMonth</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı  kartın son kullanma tarihi ayı.</td></tr><tr><td>ExpireYear</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı  kartın son kullanma tarihi yılı.</td></tr><tr><td>Cvv</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kartın güvenlik kodu.</td></tr><tr><td>ForceCvv</td><td>bool</td><td>Hayır</td><td>Sadece kayıtlı kartlar için kullanılır. Bu parametreyle kayıtlı kartlar için de kullanıcılarınızdan CVV alabilir ve ödeme isteği içersinde gönderebilirsiniz.<br><br>Kayıtlı kartlarda bu parametreyi <code>true</code> göndermezseniz, Paywall <code>UniqueCode</code> parametresi hariç tüm parametreleri görmezden gelir</td></tr><tr><td>UniqueCode</td><td>string</td><td>Evet/Hayır</td><td>Kayıtlı karta ait kimlik bilgisi. Kaydetme ve listeleme anında Paywall'dan döner</td></tr><tr><td>TempCardToken</td><td>string</td><td>Evet/Hayır</td><td>Geçici kayıtlı kart (Client-Side Tokenization) ile ödeme almak istediğinizde kullanılması gereken parametredir</td></tr><tr><td>Partner<mark style="color:red;">? ></mark><br>PartnerBased</td><td>bool?</td><td>Evet/Hayır</td><td>Kartları Partner tabanlı kurguladığınızda kullanılacak parametredir</td></tr><tr><td>Partner<mark style="color:red;">? ></mark><br>PartnerIdentity</td><td>string</td><td>Evet/Hayır</td><td>Kartları Partner tabanlı kurguladığınızda, şirketinizin Paywall'daki partnerlik kimlik bilgisidir. Bu bilgiyi Paywall panelinden edinebilirsiniz</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>Save</td><td>bool</td><td>Evet/Hayır</td><td>Ödeme anında, ödemenin başarılı olması durumunda kartın kayıt edilmesi istenirse True gönderilmelidir. True gönderildiğinde CardSave objesi altındaki diğer parametreler dikkate alınır</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>Nickname</td><td>string</td><td>Evet/Hayır</td><td>Kart'a ait takma isimdir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId1</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın ilişki değeridir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId2</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın ikinci (ağaç yapısı) ilişki değeridir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId3</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın üçüncü (ağaç yapısı) ilişki değeridir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>PreventDuplicate</td><td>bool</td><td>Hayır</td><td>Aynı kartın tekrar kaydını engeller</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>PreventDuplicateHours</td><td>int</td><td>Hayır</td><td>Aynı kullanıcının belirli bir merchant'a belirli saat aralığında yeni kart kaydını engeller.</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>Customer</code></mark></summary>

<table><thead><tr><th width="174">Parametre</th><th width="110">Tip</th><th width="100">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>FullName</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait ad</td></tr><tr><td>Phone</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait GSM numarası.</td></tr><tr><td>Email</td><td>string</td><td>Evet</td><td>İşyeri tarafındaki alıcıya ait e-posta bilgisi.</td></tr><tr><td>Country</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait ülke bilgisi.</td></tr><tr><td>City</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait şehir bilgisi.</td></tr><tr><td>Address</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait kayıt adresi.</td></tr><tr><td>IdentityNumber</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait kimlik (TCKN) numarası.</td></tr><tr><td>TaxNumber</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait vergi kimlik  numarası.</td></tr><tr><td>DeviceFingerprint</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait cihaz parmak izi bilgisi</td></tr><tr><td>UserAgent</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait kullanımda olan useragent bilgileri</td></tr><tr><td>UserRegisteredAt</td><td>datetime</td><td>Hayır</td><td>Kullanıcının sisteminizdeki kayıt tarihidir. UTC olarak gönderilmelidir. </td></tr><tr><td>Location</td><td>Location</td><td>Hayır</td><td>Kullanıcının konum bilgilerinin iletildiği obje</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>Product&#x3C;Array></code></mark></summary>

<table><thead><tr><th width="272">Parametre</th><th width="109">Tip</th><th width="122">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>ProductId</td><td>string</td><td>Evet</td><td>Ürün Id.</td></tr><tr><td>ProductName</td><td>string</td><td>Evet</td><td>Ürün adı.</td></tr><tr><td>ProductCategory</td><td>string</td><td>Evet</td><td>Ürün kategorisi.</td></tr><tr><td>ProductDescription</td><td>string</td><td>Evet</td><td>Ürün açıklama</td></tr><tr><td>ProductAmount</td><td>decimal</td><td>Evet</td><td>Ürün fiyat bilgisi</td></tr><tr><td>MemberId</td><td>int?</td><td>Evet/Hayır</td><td>MarketPlace modeli için zorunludur. Alt üye işyerinin Paywall sistemindeki MemberId bilgisiyle doldurulmalıdır</td></tr><tr><td>MemberEarningCalculated</td><td>bool?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirketin hak edişini siz hesapladıysanız bu parametreyi true göndermelisiniz</td></tr><tr><td>MemberEarning</td><td>decimal?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirketin hak edişini siz hesapladıysanız bu parametreyi hak ediş değerini Paywall'a bildirmelisiniz</td></tr><tr><td>MemberCustomCommission</td><td>bool</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirkete bu satış özelinde komisyon belirtmek isterseniz kullanılan parametredir</td></tr><tr><td>MemberCommission</td><td>decimal?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirkete bu satış özelinde komisyon belirtmek isterdiğinizde, komisyon değerinin gönderildiği parametredir</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>Location</code></mark></summary>

<table><thead><tr><th width="272">Parametre</th><th width="109">Tip</th><th width="122">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>Country</td><td>string</td><td>Hayır</td><td>Kullanıcının ülke bilgisi</td></tr><tr><td>City</td><td>string</td><td>Hayır</td><td>Kullanıcının şehir bilgisi</td></tr><tr><td>Region</td><td>string</td><td>Hayır</td><td>Kullanıcının bölge bilgisi</td></tr><tr><td>Lat</td><td>string</td><td>Hayır</td><td>Kullanıcı konumunun harita üzerindeki enlem bilgisi</td></tr><tr><td>Lon</td><td>string</td><td>Hayır</td><td>Kullanıcı konumunun harita üzerindeki boylam bilgisi</td></tr></tbody></table>

</details>

{% hint style="info" %}
Fraud kontrolleri için FraudParameters dizini içindeki parametrelerin geçerli olması için Ana Dizin içerisinde bulunan UserFraudParameters bilgisinin <mark style="color:$success;">**True**</mark> olarak gönderilmesi gerekmektedir. Aksi durumda PaymentDetail içerisindeki bilgiler ile Fraud kontrolü yapılacaktır.
{% endhint %}

<details>

<summary><mark style="color:blue;"><strong>Ana Dizin:</strong></mark> <mark style="color:orange;"><code>FraudParameters</code></mark></summary>

<table><thead><tr><th width="272">Parametre</th><th width="109">Tip</th><th width="122">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>BypassFraud</td><td>string</td><td>Evet</td><td>True gönderilmesi durumunda önceden ayarlanmış fraud kontrollerinin bypass edilmesini sağlar.</td></tr><tr><td>OverrideActualParameters</td><td>string</td><td>Evet</td><td>True gönderilmesi durumunda fraud kontrolleri için "PaymentDetail" dizini altındaki parametreler yerine "FraudParameters" altındaki parametreler ile işlemler devam eder ve kayıt altına alınır. </td></tr><tr><td>DeviceFingerprint</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek cihaz parmak izi bilgisi.</td></tr><tr><td>Amount</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek tutar bilgisi.</td></tr><tr><td>ClientIP</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek müşteri IP bilgisi.</td></tr><tr><td>CountryCode</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek ülke kodu bilgisi.</td></tr><tr><td>UserAgent</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek useragentların listesi</td></tr><tr><td>Email</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek e-mail adres bilgisi</td></tr><tr><td>Phone</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek telefon numarası bilgisi</td></tr><tr><td>UserRegisteredAt</td><td>datetime</td><td>Hayır</td><td>Kullanıcının sisteminizdeki kayıt tarihidir. UTC olarak gönderilmelidir. </td></tr><tr><td>Location</td><td>Location</td><td>Hayır</td><td>Kullanıcının konum bilgisinin iletildiği obje</td></tr></tbody></table>

</details>

**Servisten dönen parametreler şu şekildedir:**

<details>

<summary><strong>Parametre açıklamaları</strong></summary>

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem hatalıysa, bu hataya dair belirtilen kodudur.</td></tr></tbody></table>

</details>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "TrackingCode": "tracking-code-1234567890-for-documentation",
            "PaymentGatewayId": 4939,
            "PaymentGatewayName": "gg",
            "PaymentGatewayProviderId": 1052,
            "PaymentGatewayProviderName": "ProviderName",
            "PaymentGatewayProviderKey": "ProviderKey",
            "Products": [
                {
                    "Id": 24156879,
                    "MemberId": 0,
                    "ProductId": "test-id-1234567890-for-documentation",
                    "ProductName": "test Hizmeti",
                    "ProductCategory": "test",
                    "ProductDescription": "test 123",
                    "ProductAmount": 100.0,
                    "IsMarketPlaceSales": false,
                    "MemberEarningCalculated": false,
                    "MemberEarning": 0.0
                }
            ],
            "Card": {
               "Saved": false,
                "RelationalId1": "",
                "RelationalId2": "",
                "RelationalId3": "",
                "UniqueCode": ""
            },
            "ExternalInfo": {
                "PaymentActivityTypeId": 0,
                "PaymentExternalAuthCode": "",
                "PaymentExternalOrderId": "",
                "PaymentExternalTransId": "",
                "PaymentExternalHostReference": "",
                "PaymentExternalMerchantId": ""
            }
        },
        "Error": {
            "ProviderErrorCode": null,
            "ProviderErrorMessage": null,
            "BankErrorCode": null,
            "BankErrorMessage": null,
            "IsHttpError": false,
            "HttpStatusCode": 200,
            "HasPaywallUnifiedError": false,
            "UnifiedByPaywall": {
                "ErrorCode": "",
                "ErrorMessage": ""
            }
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Allow",
            "Score": 0,
            "MatchedRules": "",
            "FraudRuleIds": "",
            "FraudRuleExternalIds": "",
            "BlockedByBlacklist": false,
            "BlacklistType": null,
            "Message": "",
            "ReviewUrl": "",
            "IsAsyncFraudPending": false
        }
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="JSON - Fraud Review" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "TrackingCode": "tracking-code-1234567890-for-documentation",
            "PaymentGatewayId": 4939,
            "PaymentGatewayName": "gg",
            "PaymentGatewayProviderId": 1052,
            "PaymentGatewayProviderName": "ProviderName",
            "PaymentGatewayProviderKey": "ProviderKey",
            "Products": [
                {
                    "Id": 24156879,
                    "MemberId": 0,
                    "ProductId": "test-id-1234567890-for-documentation",
                    "ProductName": "test Hizmeti",
                    "ProductCategory": "test",
                    "ProductDescription": "test 123",
                    "ProductAmount": 100.0,
                    "IsMarketPlaceSales": false,
                    "MemberEarningCalculated": false,
                    "MemberEarning": 0.0
                }
            ],
            "Card": {
               "Saved": false,
                "RelationalId1": "",
                "RelationalId2": "",
                "RelationalId3": "",
                "UniqueCode": ""
            },
            "ExternalInfo": {
                "PaymentActivityTypeId": 0,
                "PaymentExternalAuthCode": "",
                "PaymentExternalOrderId": "",
                "PaymentExternalTransId": "",
                "PaymentExternalHostReference": "",
                "PaymentExternalMerchantId": ""
            }
        },
        "Error": {
            "ProviderErrorCode": null,
            "ProviderErrorMessage": null,
            "BankErrorCode": null,
            "BankErrorMessage": null,
            "IsHttpError": false,
            "HttpStatusCode": 200,
            "HasPaywallUnifiedError": false,
            "UnifiedByPaywall": {
                "ErrorCode": "",
                "ErrorMessage": ""
            }
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Review",
            "Score": 0,
            "MatchedRules": "test2",
            "FraudRuleIds": "aa43f0f3-b539-4c3e-bf8e-2169d507583d",
            "FraudRuleExternalIds": "",
            "BlockedByBlacklist": false,
            "BlacklistType": null,
            "Message": "Ödeme incelemeye alındı",
            "ReviewUrl": "",
            "IsAsyncFraudPending": false
        }
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="JSON - Fraud Score Block" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "TrackingCode": "tracking-code-1234567890-for-documentation",
            "PaymentGatewayId": 4939,
            "PaymentGatewayName": "gg",
            "PaymentGatewayProviderId": 1052,
            "PaymentGatewayProviderName": "ProviderName",
            "PaymentGatewayProviderKey": "ProviderKey",
            "Card": {
               "Saved": false,
                "RelationalId1": "",
                "RelationalId2": "",
                "RelationalId3": "",
                "UniqueCode": ""
            },
            "ExternalInfo": {
                "PaymentActivityTypeId": 0,
                "PaymentExternalAuthCode": "",
                "PaymentExternalOrderId": "",
                "PaymentExternalTransId": "",
                "PaymentExternalHostReference": "",
                "PaymentExternalMerchantId": ""
            }
        },
        "Error": {
            "ProviderErrorCode": null,
            "ProviderErrorMessage": null,
            "BankErrorCode": null,
            "BankErrorMessage": null,
            "IsHttpError": false,
            "HttpStatusCode": 200,
            "HasPaywallUnifiedError": false,
            "UnifiedByPaywall": {
                "ErrorCode": "",
                "ErrorMessage": ""
            }
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Block",
            "Score": 70,
            "MatchedRules": "test2",
            "FraudRuleIds": "kk43f0f3-b639-4c3e-kf8e-2169d507582c",
            "FraudRuleExternalIds": "",
            "BlockedByBlacklist": false,
            "BlacklistType": null,
            "Message": "Yüksek risk sebebi ile engellendi",
            "ReviewUrl": "",
            "IsAsyncFraudPending": false
        }
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="JSON - Fraud Block" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "TrackingCode": "tracking-code-1234567890-for-documentation",
            "PaymentGatewayId": 4939,
            "PaymentGatewayName": "gg",
            "PaymentGatewayProviderId": 1052,
            "PaymentGatewayProviderName": "ProviderName",
            "PaymentGatewayProviderKey": "ProviderKey",
            "Products": [
                {
                    "Id": 24156879,
                    "MemberId": 0,
                    "ProductId": "test-id-1234567890-for-documentation",
                    "ProductName": "test Hizmeti",
                    "ProductCategory": "test",
                    "ProductDescription": "test 123",
                    "ProductAmount": 100.0,
                    "IsMarketPlaceSales": false,
                    "MemberEarningCalculated": false,
                    "MemberEarning": 0.0
                }
            ],
            "Card": {
               "Saved": false,
                "RelationalId1": "",
                "RelationalId2": "",
                "RelationalId3": "",
                "UniqueCode": ""
            },
            "ExternalInfo": {
                "PaymentActivityTypeId": 0,
                "PaymentExternalAuthCode": "",
                "PaymentExternalOrderId": "",
                "PaymentExternalTransId": "",
                "PaymentExternalHostReference": "",
                "PaymentExternalMerchantId": ""
            }
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Block",
            "Score": 100,
            "MatchedRules": "test2",
            "FraudRuleIds": "aa43f0f3-b539-4c3e-bf8e-2169d507582c",
            "FraudRuleExternalIds": "",
            "BlockedByBlacklist": false,
            "BlacklistType": null,
            "Message": "Ödeme engellendi",
            "ReviewUrl": "",
            "IsAsyncFraudPending": false
        }
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}




---

[Next Page](/llms-full.txt/1)

