# 1. Oluştur

## Ortak Ödeme Sayfası Oluştur

<mark style="color:green;">`POST`</mark> `{{BaseAddress}}/api/paywall/checkout/generate`

{% 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.md)
{% endhint %}

{% hint style="info" %}
Ortak ödeme sayfasına <mark style="color:red;">ExpireDateTime</mark> tanımlanmadığı durumda, ortak ödeme sayfaları varsayılan olarak <mark style="color:red;">10 dakika</mark> süre boyunca geçerli olur
{% endhint %}

**Gerekli header ve istek parametreleri:**

<details>

<summary><strong>Zorunlu header parametreleri</strong></summary>

<table><thead><tr><th width="198">Parametre</th><th width="150">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>

</details>

<details>

<summary><strong>İstek gövdesi parametreleri</strong></summary>

<table><thead><tr><th width="259">Parametre</th><th width="152">Tip</th><th width="138">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>UniqueCode</td><td>string</td><td>Evet</td><td>Ödeme'nin sizin tarafınızdaki takip/sipariş/sepet kodu</td></tr><tr><td>Amount</td><td>decimal</td><td>Evet</td><td>Ürün/Hizmet tutarı</td></tr><tr><td>LanguageId</td><td>int</td><td>Hayır</td><td>Ortak ödeme sayfasının dil ayarını kullanıcı segmentinize göre değiştirebilirsiniz.<br><br>Bkz: <a href="/pages/zqqIsXsXP4dw7u3h7GLg">Dil Seçenekleri</a></td></tr><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Para birimi<br><br><a href="https://paywall.gitbook.io/tr/sistem-verileri/para-birimleri">https://paywall.gitbook.io/tr/sistem-verileri/para-birimleri</a></td></tr><tr><td>CallbackSupport</td><td>bool</td><td>Evet</td><td>Başarılı ödeme sonuçları bir adrese geribildirim olarak POST atılır</td></tr><tr><td>CallbackAddress</td><td>string</td><td>Hayır</td><td>Başarılı ödeme sonuçlarının geribildirim atılacağı adres</td></tr><tr><td>InstallmentSupport</td><td>bool</td><td>Evet</td><td>Taksit seçenekleri ekranda görünsün mü?</td></tr><tr><td>InstallmentDynamic</td><td>bool</td><td>Hayır</td><td>Taksit seçenekleri aktif sağlayıcılarınız arasındaki aktif taksitleriniz kullanılarak listelenebilir. Bu listeleme kullanıcının girdiği kart ailesi bağlı olarak yapılacaktır.</td></tr><tr><td>SuccessBackUrl</td><td>string</td><td>Evet</td><td>Başarılı ödeme sonucunda yönlendirilecek sayfa</td></tr><tr><td>FailBackUrl</td><td>string</td><td>Evet</td><td>Başarısız ödeme sonucunda yönlendirilecek sayfa</td></tr><tr><td>Force3D</td><td>bool</td><td>Evet</td><td>Ortak ödeme sayfasında kullanıcı "Güvenli Ödeme" için zorlansın mı?</td></tr><tr><td>ShowProduct</td><td>bool</td><td>Evet</td><td>Ödemeye konu olan ürünler ortak ödeme sayfasında listelensin mi?</td></tr><tr><td>ExpireDateTime</td><td>datetime</td><td>Hayır</td><td>Ortak ödeme sayfasının yaşam süresi. Sizin tarafınızdan da belirlenebilir, belirlenmediği taktirde 10 dakika olarak belirlenir</td></tr><tr><td>Products</td><td>List&#x3C;<mark style="color:blue;">Products</mark>></td><td>Evet</td><td>Ödemeye konu olan ürün bilgileri (İzin verilmesi durumunda ortak ödeme sayfasında listelenir)</td></tr><tr><td>Customer</td><td><h4><mark style="color:blue;">Customer</mark></h4></td><td>Evet</td><td>Ödemeye konu olan müşteri bilgileri (Ortak ödeme sayfasında görüntülenmez. Raporlamalarda kullanılır)</td></tr><tr><td>CardWallSupport</td><td>bool</td><td>Hayır</td><td>Ortak ödeme sayfasında kayıtlı kart desteğini aktif etmek için kullanabilirsiniz.</td></tr><tr><td>CardWallRelationalId1</td><td>string</td><td>Hayır</td><td>Kart'ın ilişkilendirilmesi istenen unique bilgi</td></tr><tr><td>CardWallRelationalId2</td><td>string</td><td>hayır</td><td>Kart'ın ilişkilendirilmesi istenen unique ikinci bilgi (listeleme anında tüm bilgiler gönderilmelidir)</td></tr><tr><td>CardWallRelationalId3</td><td>string</td><td>Hayır</td><td>Kart'ın ilişkilendirilmesi istenen unique üçüncü bilgi (listeleme anında tüm bilgiler gönderilmelidir)</td></tr><tr><td>PayWatchSupport</td><td>bool</td><td>Hayır</td><td>Ödemeler PayWatch ile izlensin mi? (Sadece 'Başladı' durumunda olanlar)</td></tr><tr><td>PayWatchMin</td><td>short</td><td>Evet (Koşullu)</td><td>PayWatch ödeme işleminin kaç dakika sonrasında çalışsın?<br><br><mark style="color:red;">Minimum: 5 | Maksimum: 20</mark></td></tr><tr><td>PayWatchCallbackAddress</td><td>string</td><td>Hayır</td><td>Dolu gönderilmesi durumunda PayWatch'ın tespit ettiği ödemedeki değişiklik sonrasında belirtilen adrese geri bildirim atılır</td></tr><tr><td>MasterpassSupport</td><td>bool</td><td>Hayır</td><td>Ortak ödeme sayfasında Masterpass desteğinin aktif olması için ilgili parametreyi <code>true</code> göndermeniz gerekmektedir.<br><br><strong>Not:</strong> Bu parametrenin <code>true</code> gönderilmesiyle birlikte Paywall panelinde Sanal Pos sağlayıcılar sayfasındaki Masterpass eklentisini de aktif etmeniz gerekmektedir.</td></tr><tr><td>UseMasterpassAlternative</td><td>bool</td><td>Hayır</td><td>Ortak ödeme sayfasında Masterpass'de kayıtlı olmayan, manuel girilen ve kullanıcı tarafından Masterpass'de kayıt edilmek istenmeyen kartlı işlemler için Masterpass harici Paywall panelinde bağlantı kurulmuş Sanal Pos sağlayıcıları kullanılması isteniyorsa, bu parametre <code>true</code> olarak gönderilmelidir</td></tr><tr><td>RouteGroupKey</td><td>string</td><td>Evet/Hayır</td><td>RouteGroup ile ödeme alınması istenmesi durumda bu parametreyle ilgili RouteGroup'un anahtar bilgisi iletilmelidir</td></tr><tr><td>SupportCampaign</td><td>bool</td><td>Hayır</td><td>Ortak ödeme sayfasında kullanılan kart bilgisine verilen kampanyaların listelenebilmesi için ilgili parametre <code>true</code> gönderilmelidir.<br><br><strong>Not:</strong> Kampanya sorgusunun yapılabilmesi için Paywall panelinde bağlı olan sanal pos sağlayıcılarından en az 1 tanesi Kampanyalı Pos olarak işaretlenmelidir</td></tr><tr><td>SupportReward<br><br><mark style="color:orange;"><strong><code>*Yakında</code></strong></mark></td><td>bool</td><td>Hayır</td><td>Ortak ödeme sayfasında ilgili kart bilgileri için Para Puan kullanılabilmesi için parametrenin <code>true</code> olarak gönderilmesi gerekmektedir</td></tr><tr><td>ProviderBased</td><td>bool </td><td>Evet</td><td>Ödemenin belirli bir sanal POS sağlayıcısı üzerinden yürütülmesi gerektiğinde <code>true</code> gönderilir; bu durumda <code>ProviderKey</code> ile hedef sağlayıcı seçilir.</td></tr><tr><td>ProviderKey</td><td>string</td><td>Evet/Hayır</td><td><code>ProviderBased = true</code> iken zorunludur: Panelde tanımlı sağlayıcının anahtar değeri. <code>ProviderBased = false</code> ise genelde boş bırakılır.</td></tr><tr><td>ProviderCondition</td><td>object </td><td>Hayır</td><td>Sağlayıcı seçiminde ek koşullar. Örneğin içindeki <code>Installment</code>ReceiverAddressSupport: belirli taksit sayısı için koşul tanımlamak üzere kullanılabilir; kullanılmıyorsa <code>null</code> gönderilebilir.</td></tr><tr><td>ReceiverAddressSupport</td><td>bool</td><td>Evet</td><td>Ortak ödeme sayfasında alıcı adresi alanlarının gösterilip gösterilmeyeceğini belirler.</td></tr><tr><td>ReceiverInfoSupport</td><td>bool</td><td>Evet</td><td>Ortak ödeme sayfasında alıcı bilgileri (teslimat/tahsilat tarafı vb.) alanlarının gösterilip gösterilmeyeceğini belirler.</td></tr><tr><td>RegionId</td><td>short</td><td>Hayır</td><td>Bölge seçimi kullanılacaksa ilgili bölge kimliği. Gönderilmezse varsayılan davranış kullanılır.</td></tr><tr><td>InterestConfirmationPopup</td><td>bool</td><td>Evet</td><td>Kullanıcıya komisyon/faiz (taksit maliyeti) ile ilgili onay penceresinin gösterilip gösterilmeyeceğini belirler.</td></tr><tr><td>SkipInterest</td><td>bool</td><td>Evet</td><td><code>true</code> ise faiz/komisyon ile ilgili akışta belirli durumlarda atlama davranışı devreye girer; detay koşulu <code>SkipInterestCondition</code> ile verilebilir.</td></tr><tr><td>SkipInterestCondition</td><td>object</td><td>Hayır</td><td><code>SkipInterest</code> ile birlikte kullanılır. İçindeki <code>Installment</code> (byte, nullable): Hangi taksit seçeneği için atlama geçerli olacaksa burada belirtilir; kullanılmıyorsa <code>null</code>.</td></tr></tbody></table>

</details>

<details>

<summary><mark style="color:blue;"><strong>Products</strong></mark><strong> parametreleri</strong></summary>

<table><thead><tr><th width="238.66015625">Parametre</th><th width="151">Tip</th><th width="112">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>ProductId</td><td>string</td><td>Evet</td><td>Ürününüzün sisteminizdeki kimliği</td></tr><tr><td>ProductImage</td><td>string</td><td>Hayır</td><td>Ürününüzün görseline ait url</td></tr><tr><td>ProductName</td><td>string</td><td>Evet</td><td>Ürününüzün adı</td></tr><tr><td>ProductCategory</td><td>string</td><td>Evet</td><td>Ürününüzün kategorisi</td></tr><tr><td>ProductDescription</td><td>string</td><td>Evet</td><td>Ürününüzün açıklaması</td></tr><tr><td>ProductAmount</td><td>decimal</td><td>Evet</td><td>Ürününüzün tutarı</td></tr><tr><td>MemberId</td><td>int</td><td>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><p>bool</p><p><br></p></td><td>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><p>decimal</p><p><br></p></td><td>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>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><p>decimal</p><p><br></p></td><td>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>Customer</strong></mark><strong> parametreleri</strong></summary>

<table><thead><tr><th width="197">Parametre</th><th width="154">Tip</th><th width="112">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>FullName</td><td>string</td><td>Evet</td><td>Müşteri ad/soyad</td></tr><tr><td>Phone</td><td>string</td><td>Evet</td><td>Müşteri telefon numarası<br><br><strong>Not:</strong> Masterpass için zorunludur</td></tr><tr><td>Email</td><td>string</td><td>Evet</td><td>Müşteri E-Posta</td></tr><tr><td>Country</td><td>string</td><td>Hayır</td><td>Ülke</td></tr><tr><td>City</td><td>string</td><td>Hayır</td><td>Şehir</td></tr><tr><td>Address</td><td>decimal</td><td>Hayır</td><td>Açık Adres</td></tr><tr><td>IdentityNumber</td><td>string</td><td>Hayır</td><td>Bireysel Müşteri</td></tr><tr><td>TaxNumber</td><td>string</td><td>Hayır</td><td>Kurumsal Müşteri</td></tr><tr><td>CustomerId</td><td>string</td><td>Evet/Hayır</td><td>Ödeyici kullanıcının sisteminizdeki Id bilgisiyle doldurmanız gerekmektedir<br><br><strong>Not:</strong> Masterpass için zorunludur</td></tr></tbody></table>

</details>

**Servise gönderilecek örnek bir JSON dosyası şu şekildedir :**

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

```json5
{
    "UniqueCode": "{{$guid}}",
    "Amount": 10.0,
    "CurrencyId": 1,
    "LanguageId": 1,
    "CallbackSupport": true,
    "PayWatchSupport": true,
    "CallbackAddress": "https://yourwebservice.com/callback",
    "PayWatchMin": 5,
    "PayWatchCallbackAddress": "https://yourwebservice.com/callback/paywatch",
    "SuccessBackUrl": "https://yourwebservice.com/callback/success",
    "FailBackUrl": "https://yourwebservice.com/callback/unsuccessful",
    "Force3D": false,
    "InstallmentSupport": true,
    "InstallmentDynamic": true,
    "CardWallSupport": false,
    "CardWallRelationalId1": "user-id",
    "CardWallRelationalId2": null,
    "CardWallRelationalId3": null,
    "ShowProduct": true,
    "ReceiverInfoSupport": false,
    "ReceiverAddressSupport": false,
    "RegionId": null,
    "ProviderBased": false,
    "ProviderKey": "",
    "ProviderCondition": {
      "Installment": null
    },
    "InterestConfirmationPopup": true,
    "SkipInterest": false,
    "SkipInterestCondition": null,
    "Customer": {
        "FullName":"{{$randomFirstName}}",
        "Phone":"905123456789", // Must for Masterpass
        "Email":"{{$randomEmail}}",
        "Country":"{{$randomCountry}}",
        "City":"{{$randomCity}}",
        "Address":"{{$randomStreetAddress}}",
        "IdentityNumber":"2523123412",
        "TaxNumber":"456345456",
        "CustomerId": "72845" // Must for Masterpass (Payer's userid in your system)
    },
    "Products": [
      {
       "MemberId": 12345,
       "MemberEarningCalculated": true,
       "MemberEarning": 96.39,
       "MemberCustomCommission": true,
       "MemberCommission": 2.61,
       "ProductId": "1",
       "ProductImage": "https://yourwebsite.com/photoimage",
       "ProductName": "1",
       "ProductCategory": "1",
       "ProductDescription": null,
       "ProductAmount": 10
      }
    ],
    "ExpireDateTime": null,
    "RouteGroupKey": "route-999",
    "MasterpassSupport": true, // If payment page will support Masterpass
    "UseMasterpassAlternative": true, // If payment page will support altervative providers than Masterpass
    "SupportCampaign": true,
    "SupportReward": false // Soon
  }
```

{% endtab %}
{% endtabs %}

**Servisten dönen parametreler şu şekildedir:**

<details>

<summary><strong>Parametreler ve 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>string</td><td>Link parametresi altında ödeme linkini döner</td></tr></tbody></table>

</details>

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

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Id": 13284456,
        "Guid": "a2319b22-b442-4b9d-bc87-b800be680761",
        "UniqueCode": "OAEASG54455565256792",
        "Amount": 25.0,
        "Link": "https://dev-checkout.itspaywall.com/checkout/?CheckoutId=a2319b22-b442-4b9d-bc87-b800be680761"
    }
}
```

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developer.paywall.one/ortak-odeme-sayfasi/1.-olustur.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
