> For the complete documentation index, see [llms.txt](https://developer.esnekpos.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://developer.esnekpos.com/hoppa-gelistirici-ortami/android-pos-web-api/odeme-servisi.md).

# Ödeme Servisi

{% hint style="danger" %}

* <mark style="color:red;">Ödeme durumundan emin olmak için</mark> [<mark style="color:red;">PROCCESS\_QUERY</mark> ](/hoppa-gelistirici-ortami/islem-sorgulama-servisi.md)<mark style="color:red;">methodu ile sorgulama yapmanız ve</mark> [<mark style="color:red;">PROCCESS\_QUERY</mark> ](/hoppa-gelistirici-ortami/islem-sorgulama-servisi.md)<mark style="color:red;">methodunun cevabını dikkate almanız gerekmektedir.</mark>
* <mark style="color:red;">Bu sorguyu client-side tarafında değil server to server olacak şekilde kurgulamanız gerekmektedir müşteri tarayıcısında yaptığınız bu</mark> [<mark style="color:red;">PROCCESS\_QUERY</mark> ](/hoppa-gelistirici-ortami/islem-sorgulama-servisi.md)<mark style="color:red;">methodunun görünmemesi ve takip edilememesi gerekmektedir.</mark>
* <mark style="color:red;">Response içerisinde yer alan</mark> <mark style="color:red;"></mark><mark style="color:red;">**AUTH\_HASH**</mark> <mark style="color:red;"></mark><mark style="color:red;">parametresi ile işlem doğrulaması yapabilirsiniz. Kullanılan algoritma için yetkili e-posta adresiniz üzerinden <destek@esnekpos.com> adresine başvurmanız yeterlidir.</mark>
  {% endhint %}

**Android Pos Ödeme Servisi İstek Modeli**

<table><thead><tr><th width="108.33333333333331">Metod</th><th width="520">API URL</th><th>Parametreler</th></tr></thead><tbody><tr><td>POST</td><td>https://base-url/api/pay/PhysicalPayment</td><td>JSON File</td></tr></tbody></table>

**Android Pos Ödeme Servisi İşlem Akışı;**

Android Pos ödeme servis modeli ile başarılı bir tahsilat gerçekleştirmek için aşağıda maddeler halinde açıklanan işlemleri takip ederek entegrasyonunuzu tamamlamanız gerekmektedir.

Servise gönderilmesi gereken parametreler şu şekildedir;

Android Pos Ödeme Servisi İstek Mesajı Parametreleri<br>

**Config**

<table><thead><tr><th width="234">Parametre</th><th width="102">Tip</th><th width="80">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>MERCHANT</td><td>string</td><td>Evet</td><td>Üye iş yerine özel oluşturulan eşsiz kimlik bilgisidir.</td></tr><tr><td>MERCHANT_KEY</td><td>string</td><td>Evet</td><td>Üye iş yerine özel oluşturulan anahtar bilgisidir.</td></tr><tr><td>BACK_URL</td><td>string</td><td>Evet</td><td>İşlem sonuç cevabının sistem tarafından döndürüleceği adres bilgisidir. İşlem cevabı üye iş yeri tarafından bu adresten okunacaktır.İşlem sonucu json post olarak gönderilir.</td></tr><tr><td>PRICES_CURRENCY</td><td>string</td><td>Evet</td><td>Ödeme işleminin gerçekleştirileceği para birimi bilgisidir. Şu an için sadece “TRY, USD, EUR, GBP” gönderilebilir.</td></tr><tr><td>ORDER_REF_NUMBER</td><td>string</td><td>Evet</td><td>Üye iş yeri tarafından verilecek referans numarası bilgisidir. Ödeme işlemleri bu referans numarası ile takip edilebilir. Maksimum 24 karakter kullanılabilir.</td></tr><tr><td>ORDER_AMOUNT</td><td>string</td><td>Evet</td><td>Ödeme işlemine ait işlem tutarı bilgisidir.</td></tr><tr><td>POS_ID</td><td>int</td><td>Evet</td><td>Android posa ait id bilgisi.</td></tr></tbody></table>

<br>

**Customer**

<table><thead><tr><th width="185">Parametre</th><th width="100">Tip</th><th width="99">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>FIRST_NAME</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) adı bilgisidir.</td></tr><tr><td>LAST_NAME</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) soyadı bilgisidir.</td></tr><tr><td>MAIL</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) mail bilgisidir.</td></tr><tr><td>PHONE</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) telefon bilgisidir.</td></tr><tr><td>CITY</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) şehir bilgisidir.</td></tr><tr><td>STATE</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) ilçe bilgisidir.</td></tr><tr><td>ADDRESS</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) adres bilgisidir.</td></tr></tbody></table>

<br>

**Product**

<table><thead><tr><th width="246">Parametre</th><th width="92">Tip</th><th width="84">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>PRODUCT_ID</td><td>string</td><td>Evet</td><td>Ürüne üye işyeri tarafından verilen ID bilgisidir.</td></tr><tr><td>PRODUCT_NAME</td><td>string</td><td>Evet</td><td>Ürünün ad bilgisidir.</td></tr><tr><td>PRODUCT_CATEGORY</td><td>string</td><td>Evet</td><td>Ürünün kategori bilgisidir.</td></tr><tr><td>PRODUCT_DESCRIPTION</td><td>string</td><td>Evet</td><td>Ürünün açıklama bilgisidir.</td></tr><tr><td>PRODUCT_AMOUNT</td><td>string</td><td>Evet</td><td>Ürünün tutar bilgisidir.</td></tr></tbody></table>

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

```json
                                            
                                        
    {
        "Config":{
            "MERCHANT": " TEST1234",
            "MERCHANT_KEY": " 4oK26hK8MOXrIV1bzTRVPA==",
            "BACK_URL": "İşlem sonucunun üye işyerine döndürüleceği url adresi",
            "PRICES_CURRENCY": "TRY",
            "ORDER_REF_NUMBER": "RFN0001",
            "ORDER_AMOUNT": "150.00",
            "POS_ID": 3
            },
       "Customer":{
           "FIRST_NAME": "firstname",
           "LAST_NAME": "lastname",
           "MAIL": "test@esnekpos.com",
           "PHONE": "1122356600",
           "CITY": "İstanbul",
           "STATE": "Kağıthane",
           "ADDRESS": "Müşteri Adres"
           },
        "Product" : [
            {
               "PRODUCT_ID": "1",
               "PRODUCT_NAME": "Ürün Adı 1",
               "PRODUCT_CATEGORY": "Elektronik",
               "PRODUCT_DESCRIPTION": "Ürün Açıklaması",
               "PRODUCT_AMOUNT": 80
               },
            {
               "PRODUCT_ID": "2",
               "PRODUCT_NAME": "Ürün Adı 2",
               "PRODUCT_CATEGORY": "Ev Tekstili",
               "PRODUCT_DESCRIPTION": "Ürün Açıklaması",
               "PRODUCT_AMOUNT": 70
               }
        ]
    }

                                            
                                        
```

hoppa bilgileri değerlendirerek üye iş yerine cevap mesajını gönderir.

Servisten işlem sonrasında gönderilen cevap mesajına ait parametreler şu şekildedir;

Android Pos Ödeme Servisi Cevap Mesajı Parametreleri

<table><thead><tr><th width="239">Parametre</th><th width="93">Tip</th><th width="74">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>STATUS</td><td>string</td><td>Evet</td><td>Ödeme işlemi sonucu durum bilgisidir.</td></tr><tr><td>RETURN_CODE</td><td>string</td><td>Evet</td><td>Ödeme işlemi sonucu durumu kod bilgisidir.</td></tr><tr><td>RETURN_MESSAGE</td><td>string</td><td>Evet</td><td>Ödeme işlemi sonucu durum mesaj bilgisidir.</td></tr><tr><td>ORDER_REF_NUMBER</td><td>string</td><td>Evet</td><td>Ödeme işlemine ait Android Pos sistemi tarafından verilen referans numarası bilgisi.</td></tr></tbody></table>

```json
                                            
                                        
    {
        "STATUS": "SUCCESS",
        "RETURN_CODE": "0",
        "RETURN_MESSAGE": null,
        "ORDER_REF_NUMBER": "ORDER_REF_NUMBER"
    }

                                            
                                        
```

Android Pos Ödeme Servisi işlem cevap mesajında `STATUS` parametresinin değeri SUCCESS ve `RETURN_CODE` parametresinin değeri 0 olarak dönmesi Android Pos Ödeme işleminin kabul edildiğini ifade etmektedir.

**1. Adım:**

Üye işyeri aldığı cevabı değerlendirerek ödeme kabul edildi ise hoppa'nın vermiş olduğu URL\_3DS adresine müşteriyi yönlendirir.

**2. Adım:**

Android Pos ödeme işlemini sonuçlandırır, ödemenin sonucunu üye işyerinin 1. adımda bildirmiş olduğu BACK\_URL adresine JSON POST metodu ile bildirir.

Ödeme işlemi gerçekleştikten sonra ödeme sonuç mesajına ait parametreler şu şekildedir;

Android Pos Ödeme Servisi Cevap Mesajı Parametreleri

<table><thead><tr><th width="251">Parametre</th><th width="101">Tip</th><th width="74">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>STATUS</td><td>string</td><td>Evet</td><td>Ödeme işlemi sonucu durum bilgisidir.</td></tr><tr><td>RETURN_CODE</td><td>string</td><td>Evet</td><td>Ödeme işlemi sonucu durumu kod bilgisidir.</td></tr><tr><td>RETURN_MESSAGE</td><td>string</td><td>Evet</td><td>Ödeme işlemi sonucu durum mesaj bilgisidir.</td></tr><tr><td>ORDER_REF_NUMBER</td><td>string</td><td>Evet</td><td>Üye iş yeri tarafından ödeme işlemi isteği gönderilirken verilmiş olan referans numarası bilgisidir.</td></tr></tbody></table>

```json
                                            
                                        
    {
        "STATUS": "SUCCESS",
        "RETURN_CODE": "0",
        "RETURN_MESSAGE": null,
        "ORDER_REF_NUMBER": "ORDER_REF_NUMBER"
    }

                                            
                                        
```

Üye işyerine gönderilen JSON POST mesajında `STATUS` parametresinin değeri SUCCESS ve `RETURN_CODE` parametresinin değeri 0 olarak dönmesi Android Pos Ödeme işleminin sorunsuz bir şekilde gerçekleştiğini ifade etmektedir.

**Cevap Mesajı Durumları ve Açıklamaları**

Android Pos Cevap mesajı detaylarında dönen `RETURN_CODE` açıklamalarının detayları şu şekildedir;

<table><thead><tr><th width="114">RETURN_CODE</th><th width="249.33333333333331">STATUS</th><th>Açıklama</th></tr></thead><tbody><tr><td>0</td><td>SUCCESS</td><td>Başarılı işlemdir.</td></tr><tr><td>100</td><td>ERROR</td><td>Hatalı işlemdir.</td></tr><tr><td>101</td><td>FIELD_ERROR</td><td>İstek mesajlarında gönderilen alanların hatalı olması durumunda bu mesaj dönmektedir.</td></tr><tr><td>102</td><td>AUTHENTICATION_ERROR</td><td>Kimlik doğrulama hatası.</td></tr><tr><td>103</td><td>LIMIT_ERROR</td><td>Ödeme isteklerinde limit yetersiz olduğunda bu hata mesajı dönmektedir.</td></tr><tr><td>104</td><td>COMMISSION_ERROR</td><td>Komisyon bilgilerinin tanımlanmamış olması veya eksik tanımlanmasından dolayı bu mesaj dönmektedir.</td></tr><tr><td>105</td><td>INSERT_ERROR</td><td>Veritabanı kayıt işlemlerinde karşılaşılan hatalarda bu mesaj dönmektedir.</td></tr><tr><td>999</td><td>UNKNOWN_ERROR</td><td>Beklenmeyen bir hata gerçekleşti.</td></tr></tbody></table>
