# 1. Ödeme Başlat (Id)

## Ödeme Başlat (Id)

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

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

#### Servise gönderilmesi gereken (HEADERS) parametreler şu şekildedir :

<table><thead><tr><th width="178">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 (BODY) parametreler şu şekildedir :

<table><thead><tr><th width="244">Parametre</th><th width="92">Tip</th><th width="69.6171875">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>ApmId</td><td>int</td><td>Evet</td><td>APM sağlayıcısının bağlantı kimlik bilgisi. Listeme esnasında döner.</td></tr><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Ödeme'nin bağlatılmak istendiği para birimi<br><br>Bkz: <a href="../../sistem-verileri/para-birimleri">Para Birimleri</a></td></tr><tr><td>MerchantUniqueCode</td><td>string</td><td>Evet</td><td>Ödeme için oluşturduğunuz tekil numara</td></tr><tr><td>MerchantSuccessBackUrl</td><td>string</td><td>Evet</td><td>Ödemenizin başarılı sonucunun iletileceği adres. Post Body cevap alacaktır.</td></tr><tr><td>MerchantFailBackUrl</td><td>string</td><td>Evet</td><td>Ödemenizin başarılı sonucunun iletileceği adres. Post Body cevap alacaktır.</td></tr><tr><td>Amount</td><td>decimal</td><td>Evet</td><td>Ödeme tutarı<br><br><mark style="color:yellow;">*</mark> <code>IsRecurring</code> <mark style="color:green;"><code>true</code></mark> olması durumunda bu değer, maksimum çekilecek tutarı ifade eder</td></tr><tr><td>Description</td><td>string</td><td>Evet</td><td>Ödeme'ye ait açıklama. Sağlayıcıya bağlı olarak bu açıklama ödeme ekranında görüntülenebilmektedir.</td></tr><tr><td>IsRecurring</td><td>bool</td><td>Hayır</td><td>APM sağlayıcısı ödeme talimatı almayı destekliyorsa, bu parametre <code>true</code> gönderilmelidir.<br><br>Destekleyen Sağlayıcı: Masterpass</td></tr><tr><td>ExpireDay</td><td>int</td><td>Hayır</td><td>APM sağlayıcısının ilgili sayfasının/ödeme akışının son kullanma tarih desteği olması durumunda kullanılır. Gün sayısı bekler ve aktif günün üstüne o kadar gün ekler. <br><br>Destekleyen Sağlayıcı: Masterpass</td></tr><tr><td>IsAutoCommit</td><td>bool</td><td>Hayır (true)</td><td><p>Default olarak “true” değeri geliyor, değiştirmek isterseniz "false" olarak değiştirilmelidir.</p><p> </p><p>True gönderildiğinde —>  3D işlemi sonrası ekrandaki ödeme işlemi tamamlanınca ödeme anında karttan tutar çekilir.</p><p>False Gönderildiğinde —>  Ödeme sonrası callback atılır sonrasında ayrıca </p><p>commit emri verilmesi gereklidir.</p></td></tr><tr><td>Payer</td><td><mark style="color:orange;">Payer</mark></td><td>Evet</td><td>Ödeme'nin gerçekleştirileceği ödeyici bilgilerinin barındığı nesnedir. Bu nesne altındaki parametrelerin zorunlulukları sağlayıcının beklediği parametreye göre farklılık gösterebilmektedir. <br><br>Önerilen, tüm bilgilerin gönderilmesidir</td></tr></tbody></table>

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

<table><thead><tr><th width="221">Parametre</th><th width="160">Tip</th><th width="148">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>Fullname</td><td>string</td><td>Evet (Koşullu)</td><td>Ödeyici tam isim</td></tr><tr><td>CardNumber</td><td>string</td><td>Evet (Koşullu)</td><td>Ödeyici kart numarası (yemek kartı vb)</td></tr><tr><td>CardId</td><td>string</td><td>Evet (Koşullu)</td><td>Ödeyici kart kimlik numarası (kartın APM sağlayıcısında saklanması durumunda çalışır)</td></tr><tr><td>Phone</td><td>string</td><td>Evet (Koşullu)</td><td>Ödeyicinin telefon numarası</td></tr><tr><td>Email</td><td>string</td><td>Evet (Koşullu)</td><td>Ödeyicinin e-posta adresi</td></tr><tr><td>UserIdentity</td><td>string</td><td>Evet (Koşullu)</td><td>Ödeyicinin sisteminizdeki kimlik bilgisi (TCKN/VKN)</td></tr><tr><td>ConsumerIdentity</td><td>string</td><td>Evet (Koşullu)</td><td>Ödeyicinin sisteminizdeki kimlik bilgisi (UserId)</td></tr><tr><td>Birthday</td><td>DateTime</td><td>Hayır</td><td>Ödeyicinin doğum günü bilgisi</td></tr><tr><td>CardAlias</td><td>string</td><td>Evet (Koşullu)</td><td>Ödeyiciye ait kart bilgisinin etiketi (Masterpass)</td></tr></tbody></table>

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

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

```json5
{
    "ApmId": 1,
    "CurrencyId": 1,
    "MerchantUniqueCode": "TESTMERCHANTUNIQUECODE",
    "MerchantSuccessBackUrl": "https://webhook.site/38a6fa6f-3414-40db-b2a7-a6c38894b6a3",
    "MerchantFailBackUrl": "https://webhook.site/38a6fa6f-3414-40db-b2a7-a6c38894b6a3",
    "Amount": 1,
    "Description": "test",
    "IsRecurring": true,
    "ExpireDay": 10,
    "IsAutoCommit": true,
    "Payer": {
        "Fullname": "",
        "CardNumber": "",
        "CardId": "",
        "Phone": "",
        "Email": "",
        "UserIdentity": "",
        "ConsumerIdentity": "",
        "Birthday": null
    },
    "Products": [
        {
            "ProductId": "123",
            "ProductName": "Name",
            "ProductCategory": "Food",
            "ProductDescription": "Description of Product",
            "ProductAmount": 1
        }
    ]
}
```

{% endcode %}
{% 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 hatalıysa, bu hataya dair detay nesne</td></tr></tbody></table>

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

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "RedirectUrl": "https://dev-payment-agent.itspaywall.com/paywall/callbackapm?UniqueNumber=dd224827-8433-45f7-9454-97025e57fa9e",
        "Transaction": {
            "ApmTransactionId": 29,
            "UniqueCode": "dd224827-8433-45f7-9454-97025e57fa9e",
            "MerchantUniqueCode": "TESTMERCHANTUNIQUECODE",
            "Amount": 1.0
        }
    }
}
```

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