# 1. Ödeme Oluştur

## Ödeme Başlat / QR Tabanlı

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

{% hint style="info" %}
Önemli: **APM Ödeme Başlatma (QR Tabanlı)** 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="245">Parametre</th><th width="104">Tip</th><th width="148">Zorunlu</th><th width="336">Açıklama</th></tr></thead><tbody><tr><td>ApmKey</td><td>int</td><td>Evet (Koşullu)</td><td>APM sağlayıcısının Key bilgisi.<br><br>Bkz: <a href="../../sistem-verileri/apm">APM</a></td></tr><tr><td>ApmConnectionId</td><td>int</td><td>Evet (Koşullu)</td><td>APM listeleme servisiyle edinilen bağlantılara ait Id (kimlik) bilgisidir. Ödeme ekranınızı dinamik oluşturduğunuz senaryolarda bu parametreyle birlikte ilgili bağlantı üzerinden ödeme başlatabilirsiniz</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>Amount</td><td>decimal</td><td>Evet</td><td>Ödeme tutarı</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>UserRedirectUrl</td><td>string</td><td>Hayır</td><td>Bazı cüzdan uygulamaları QR'ın okutulması ve ödemenin başarılı olması durumunda kullanıcıyı verilen bir adrese yönlendiriyorlar. Bu akış için verilen adres bilgisidir</td></tr><tr><td>MerchantSuccessBackUrl</td><td>string</td><td>Evet</td><td>Ödemenin başarılı sonucunun Post olarak bildirileceği adrestir</td></tr><tr><td>MerchantFailBackUrl</td><td>string</td><td>Evet</td><td>Ödemenin başarısız sonucunun Post olarak bildirileceği adrestir</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
{
    "ApmKey": "papara",
    "ApmConnectionId": null, // Eğer bağlantı kimlik Id'sini biliyorsanız
    "CurrencyId": 1,
    "MerchantUniqueCode": "55555454544333545435",
    "UserRedirectUrl": "https://merchantsite.com/?paymentId=13114141",
    "MerchantSuccessBackUrl": "https://merchantsite.com/callback/success",
    "MerchantFailBackUrl": "https://merchantsite.com/callback/fail",
    "Amount": 1,
    "Description": "PW test",
    "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><tr><td>Body:FormatType</td><td>int</td><td>QR'ın hangi formatta olduğunu ifade eder<br><br>Bkz: <a href="../../sistem-verileri/qr-format-tipleri">Formatlar</a></td></tr></tbody></table>

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

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "ApmKey": "ProviderKey",
        "ApmConnectionId": 62,
        "ApmTransactionId": 11676,
        "UniqueCode": "273162b1-ffae-45c6-9e22-724ca27f826a",
        "MerchantUniqueCode": "55555454544333545435",
        "Amount": 1.0,
        "QrDetail": {
            "FormatType": 1,
            "Content": "%BASE64CONTENT%"
        }
    }
}
```

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