# 1. Tekrarlı Oluştur

## Tekrarlı Ödeme Oluştur

<mark style="color:green;">`POST`</mark> `{{Base Adres}}/api/paywall/recurring`

{% hint style="info" %}
Önemli: **Tekrarlı Ödeme Oluşturma** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PaymentAPI Adresi**</mark>](/ortam.md)
{% 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 :

<table><thead><tr><th width="296">Parametre</th><th width="112">Tip</th><th width="118">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td><strong>Card</strong>:UniqueCode</td><td>string</td><td>Evet</td><td>Ödemelerin alınacağı saklı kart UniqueCode bilgisi, kayıtlı kartlarda kaydetme anında ve listelemede cevap  olarak Paywall'dan döner</td></tr><tr><td>SubscriptionType</td><td>int</td><td>Evet</td><td>Üyelik tipi. Şimdilik sadece 1 desteklenmektedir<br><br>bkz: <a href="/pages/d2AtkIXnzzRXGJGBClju">Tekrarlı Ödeme</a></td></tr><tr><td>SubscriptionMerchantCode</td><td>string</td><td>Evet</td><td>Tekrarlı ödemeye ait sizin tarafınızdan verilen tekil takip numarası</td></tr><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Para birimi</td></tr><tr><td>Amount</td><td>decimal</td><td>Evet</td><td>Tekrarlı ödeme tutarı. Her seferinde karttan çekilecek tutar</td></tr><tr><td>CallbackUrl</td><td>string</td><td>Hayır</td><td>Ödeme sonuçlarının POST atılacak adrestir. Boş gönderilmesi durumunda callback atılmaz<br><br>bkz. <a href="/pages/d2AtkIXnzzRXGJGBClju"><strong>Post Body</strong></a></td></tr><tr><td>HasTrial</td><td>bool</td><td>Evet</td><td>Üyeliğe uygulanan bir deneme süresi var mı?</td></tr><tr><td>TrialDay</td><td>int</td><td>Evet</td><td>Üyeliğe uygulanan deneme süresinin günü. Ödeme aylık periyotta 02/07 'de oluşturulduysa ve 10 gün deneme süresi varsa ilk ödeme 12/08 'de alınıyor olacak.</td></tr><tr><td>PaymentAtCreation</td><td>bool</td><td>Evet</td><td>Parametreyi TRUE göndermeniz durumunda, üyelik oluşturulmadan önce ilgili bilgilerle ilk ödeme tahsil edilir. Tahsilatın başarıyla gerçekleşmesiyle birlikte ilgili kart bilgileriyle üyelik oluşturulur. FALSE gönderilmesi durumunda ise üyelik oluşturulur ve seçilen periyotla birlikte ödeme emri oluşturulur. Ancak üyelik oluşturulurken ilk ödeme tahsil edilmez.<br><br><mark style="color:blue;">Not: Trial gün verilmesi durumunda bu parametre TRUE gönderilse bile ilk ödeme bugün + trial gün sonrasında alınır.</mark></td></tr><tr><td>FirstPaymentDate</td><td>DateTime</td><td>Hayır</td><td>Ödemenin ilk tarihini kendi tarafınızdan belirleyebilirsiniz. Parametre 2024-04-04 gönderilmesi durumunda, ilgili ödeme ilk 2024-04-04 tarihinde alınacaktır ve sonrası için belirlediğiniz periyot ile devam edilecektir.<br><br>Not: Trial uygulamanız durumunda ilk ödeme tarihinin üstüne gün eklenir ve ödeme öyle gerçekleştirilir. 2024-04-04 belirmeniz durumunda 10 gün de Trial varsa ilk ödeme 2024-04-14 tarihinde alınır.</td></tr><tr><td>RecurringPeriodType</td><td>int</td><td>Evet</td><td>Ödemenin tekrarlanacağı periyot tipi<br><br>bkz: <a href="/pages/d2AtkIXnzzRXGJGBClju">Tekrarlı Ödeme</a></td></tr><tr><td>RecurringPeriodCount</td><td>int</td><td>Evet (Koşullu)</td><td>Üyelik tipinin "Adet Bazlı" olması durumunda çekilmek istenen adet bilgisi girilir</td></tr><tr><td>FailAttempt</td><td>int</td><td>Evet</td><td>Ödemenin başarısız olması durumunda tekrar deneme adedi. <mark style="color:red;">Max: 5</mark></td></tr><tr><td>FailAttemptPendingHour</td><td>int</td><td>Evet</td><td>Başarısız ödeme tekrarlarının arasında Paywall'un bekleyeceği saat dilimi. <mark style="color:red;">Max: 24</mark></td></tr><tr><td><strong>Customer</strong>:SubscriptionCustomerPoolId</td><td>int</td><td>Hayır</td><td>Müşteri/Kullanıcı havuzundan bir kayıt ile üyelik oluşturulmak istenirse ilgili kaydın id (kimlik) bilgisidir</td></tr><tr><td><strong>Customer</strong>:Name</td><td>string</td><td>Evet</td><td>Ödemeye ait sisteminizdeki kullanıcı/müşteri adı</td></tr><tr><td><strong>Customer</strong>:Lastname</td><td>string</td><td>Evet</td><td>Ödemeye ait sisteminizdeki kullanıcı/müşteri soyadı</td></tr><tr><td><strong>Customer</strong>:Phone</td><td>string</td><td>Evet</td><td>Ödemeye ait sisteminizdeki kullanıcı/müşteri telefon numarası</td></tr><tr><td><strong>Customer</strong>:Email</td><td>string</td><td>Evet</td><td>Ödemeye ait sisteminizdeki kullanıcı/müşteri e-posta adresi</td></tr><tr><td><strong>Customer</strong>:Country</td><td>string</td><td>Evet</td><td>Ödemeye ait sisteminizdeki kullanıcı/müşteri ülke bilgisi</td></tr><tr><td><strong>Customer</strong>:City</td><td>string</td><td>Evet</td><td>Ödemeye ait sisteminizdeki kullanıcı/müşteri şehir bilgisi</td></tr><tr><td><strong>Customer</strong>:Address</td><td>string</td><td>Evet</td><td>Ödemeye ait sisteminizdeki kullanıcı/müşteri adres bilgisi</td></tr><tr><td><strong>Customer</strong>:IdentityNumber</td><td>string</td><td>Evet</td><td>Ödemeye ait sisteminizdeki kullanıcı/müşteri kimlik bilgisi</td></tr><tr><td><strong>Items:</strong>SubscriptionItemPoolId</td><td>int</td><td>Hayır</td><td>İçerik havuzundan bir kayıt ile üyelik oluşturulmak istenirse ilgili kaydın id (kimlik) bilgisidir</td></tr><tr><td><strong>Items</strong>:Type</td><td>int</td><td>Evet</td><td>Ödemeye konu olan satışın tipi<br><br>bkz: <a href="/pages/d2AtkIXnzzRXGJGBClju">Tekrarlı Ödeme</a></td></tr><tr><td><strong>Items</strong>:Name</td><td>string</td><td>Evet</td><td>Ödemeye konu olan satışın adı</td></tr><tr><td><strong>Items</strong>:Amount</td><td>decimal</td><td>Evet</td><td>Ödemeye konu olan satışın tutarı <br><br><mark style="color:red;">Items nesnesi bir array'dir ve girilen item'lerin Amount bilgisi toplam tutara eşit olmalıdır</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
{
    "Card": {
        "UniqueCode": "aQbAoMhiAeYSfailjc2UzF7S1E/6QC=="
    },
    "SubscriptionType": 1,
    "SubscriptionMerchantCode": "12asaaaaasssaasaass2ada3",
    "CurrencyId": 1,
    "Amount": 110,
    "CallbackUrl": "https://webhook.site/8d70cb8e-fe1b-478b-8ee3-823870549ef2",
    "HasTrial": false,
    "TrialDay": 10,
    "FirstPaymentDate": "2023-09-26T05:00", // Null verilebilir
    "RecurringPeriodType": 1,
    "RecurringPeriodCount": 0, // RecurringPeriodType
        // parametresi 2 gönderilmesi durumunda API
        // tarafından kontrol edilir. 0 ile 365 arasında değer alır!
    "FailAttempt": 1,
    "FailAttemptPendingHour": 1,
    "Customer": {
        "SubscriptionCustomerPoolId": null, // Müşteri/Kullanıcı
            // havuzundan bir seçim yapıldıysa ve
            // üyelik oluşturulacaksa, havuzdaki kaydın
            // id (kimlik) bilgisi
            // -Havuz verisiyle oluşturma
            // anında aşağıdaki bilgilere gerek kalmaz-
        "Name": "Jogni",
        "Lastname": "Kivi",
        "Phone": "5554433212",
        "Email": "kivijogni@paywall.one",
        "Country": "Turkey",
        "City": "Istanbul",
        "Address": "Heaven",
        "IdentityNumber": "11111111110"
    },
    "Items": [
        {
            "SubscriptionItemPoolId": null, // Üyelik içeriği
            // havuzundan bir seçim yapıldıysa ve
            // üyelik oluşturulacaksa, havuzdaki kaydın
            // id (kimlik) bilgisi
            // -Havuz verisiyle oluşturma
            // anında aşağıdaki bilgilere gerek kalmaz-
            "Type": 1,
            "Name": "Gold Package",
            "Amount": 110
        }
    ]
}
```

{% 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</td></tr><tr><td>Body</td><td>nesne</td><td><em>Detay dönmemektedir</em></td></tr></tbody></table>

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

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": null
}
```

{% 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/tekrarli-odeme-servisi/1.-tekrarli-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.
