# Servis İle BKM Express

{% hint style="danger" %}

* <mark style="color:red;">Ödeme durumundan emin olmak için</mark> [<mark style="color:red;">PROCCESS\_QUERY</mark> ](https://developer.esnekpos.com/esnekpos-gelistirici-ortami/islem-sorgulama-servisi)<mark style="color:red;">methodu ile sorgulama yapmanız ve</mark> [<mark style="color:red;">PROCCESS\_QUERY</mark> ](https://developer.esnekpos.com/esnekpos-gelistirici-ortami/islem-sorgulama-servisi)<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> ](https://developer.esnekpos.com/esnekpos-gelistirici-ortami/islem-sorgulama-servisi)<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 %}

**BKM Express Ödeme Servisi İstek Modeli**

<table><thead><tr><th>Metod</th><th width="466.3333333333333">API URL</th><th>Parametreler</th></tr></thead><tbody><tr><td>POST</td><td>https://base-url/api/bkm/BkmPayment</td><td>JSON File</td></tr></tbody></table>

**BKM Express Ödeme Servisi İşlem Akışı;**

BKM Express ö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.

**1. Adım:**

Üye işyeri kullanıcı, sepet, ödeme tutar bilgilerini ödemenin sonucunun bildirilmesini istediği kendi web adresi(BACK\_URL) bilgisi ile birlikte EsnekPos BKM Express Ödeme Servisi yukarıda belirtilmiş olan istek modelini kullanarak ödeme isteğini gönderir ve ödeme işlemini başlatmış olur.

Güvenli ve sorunsuz bir şekilde işlemlerin gerçekleşebilmesi ve fraud işlemlerin önlenebilmesi için tüm parametrelerin eksiksiz bir şekilde gönderilmesi gerekmektedir.

Servise gönderilmesi gereken parametreler şu şekildedir;

BKM Express Ödeme Servisi İstek Mesajı Parametreleri

<table><thead><tr><th width="222">Parametre</th><th width="98">Tip</th><th width="79">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>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>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>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 form post olarak gönderilir.</td></tr><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="245">Parametre</th><th width="84">Tip</th><th width="79">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==",
        "ORDER_REF_NUMBER" : "RFN0003",
        "ORDER_AMOUNT" : "150",
        "PRICES_CURRENCY" : "TRY",
        "BACK_URL" : "İşlem sonucunda sizin belirleyeceğiniz dönüş url adresi"
    },
    "Customer" : {
         "FIRST_NAME" : "Firstname",
         "LAST_NAME" : "Lastname",
         "MAIL" : "destek@esnekpos.com",
         "PHONE" : "05435434343",
         "CITY" : "Müşteri il",
         "STATE" : "Müşteri ilçe",
         "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ı 1",
             "PRODUCT_CATEGORY" : "Ev Tekstili",
             "PRODUCT_DESCRIPTION" : "Ürün Açıklaması",
             "PRODUCT_AMOUNT" : "70"
         }
     ]
 }
                                        
```

**2. Adım:**

EsnekPos bilgileri değerlendirerek üye iş yerine cevap mesajını gönderir.(Cevap mesajı içerisinde URL\_3DS alanı bulunur.)

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

BKM Express Ödeme Servisi Cevap Mesajı Parametreleri

<table><thead><tr><th width="250">Parametre</th><th width="102">Tip</th><th width="80">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>ORDER_REF_NUMBER</td><td>string</td><td>Evet</td><td>Üye iş yeri tarafından ödeme isteğinde, isteğe ait verilen referans numarası bilgisidir.</td></tr><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>RETURN_MESSAGE_TR</td><td>string</td><td>Evet</td><td>Ödeme işlemi sonucu durum mesajı için Türkçe açıklama bilgisidir.</td></tr><tr><td>ERROR_CODE</td><td>string</td><td>Evet</td><td>Başarısız ödeme işlemi sonucu hata kod bilgisidir. Banka hata kodları da bu parametre içerisinde dönüş yapılır.</td></tr><tr><td>DATE</td><td>string</td><td>Evet</td><td>Ödeme işlemi için işlem tarihi bilgisidir.</td></tr><tr><td>URL_3DS</td><td>string</td><td>Evet</td><td>Üye iş yerinin kullanıcıyı yönlendireceği 3D Doğrulama Sayfası URL Adresi</td></tr><tr><td>REFNO</td><td>string</td><td>Evet</td><td>Ödeme işlemine ait EsnekPos sistemi tarafından verilen referans numarası bilgisi</td></tr><tr><td>HASH</td><td>string</td><td>Evet</td><td>Ödeme işlemine ait EsnekPos sistemi tarafından oluşturulan hash bilgisi</td></tr><tr><td>CUSTOMER_NAME</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) ad soyad bilgisidir.</td></tr><tr><td>CUSTOMER_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>CUSTOMER_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>CUSTOMER_ADDRESS</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren kullanıcının(müşterinin) adres bilgisidir.</td></tr><tr><td>CUSTOMER_CC_NUMBER</td><td>string</td><td>Evet</td><td>Ödeme işleminin gerçekleştirileceği karta ait 16 haneli kart numarası bilgisidir. Kart bilgisi şifrelenmiş şekilde paylaşılır.</td></tr><tr><td>CUSTOMER_CC_NAME</td><td>string</td><td>Evet</td><td>Ödeme işleminin gerçekleştirileceği kart sahibinin ad ve soyadı bilgisidir.</td></tr><tr><td>IS_NOT_3D_PAYMENT</td><td>string</td><td>Evet</td><td>Ödeme işleminin 3D gerçekleşip gerçekleşmediği bilgisidir.</td></tr><tr><td>VIRTUAL_POS_VALUES</td><td>string</td><td>Evet</td><td>Ödeme işlemine ait sanalpos açıklamaları bilgisidir.</td></tr><tr><td>RETURN_MESSAGE_3D</td><td>string</td><td>Evet</td><td>Bankadan alınan 3D ödeme işlemine ait cevap mesajı bilgisidir.</td></tr></tbody></table>

```json
                                            
{
    "ORDER_REF_NUMBER": "RFN0003",
    "STATUS": "SUCCESS",
    "RETURN_CODE": "0",
    "RETURN_MESSAGE": "SUCCESS",
    "RETURN_MESSAGE_TR": null,
    "ERROR_CODE": null,
    "DATE": "25.04.2021 18:51:00",
    "URL_3DS": "http://pos.esnekpos.com/Pages/BkmPayment.aspx?hash=d1488016d0e0e361c9cea3dea839bbc3d315199a6aece31e3b6534d3b7c56305",
    "REFNO": "58874",
    "HASH": "d1488016d0e0e361c9cea3dea839bbc3d315199a6aece31e3b6534d3b7c56305",
    "CUSTOMER_NAME": null,
    "CUSTOMER_MAIL": null,
    "CUSTOMER_PHONE": null,
    "CUSTOMER_ADDRESS": null,
    "CUSTOMER_CC_NUMBER": null,
    "CUSTOMER_CC_NAME": null,
    "IS_NOT_3D_PAYMENT": false,
    "VIRTUAL_POS_VALUES": null,
    "RETURN_MESSAGE_3D": null
}
                                        
```

BKM Express Ödeme Servisi işlem cevap mesajında `STATUS` parametresinin değeri SUCCESS ve `RETURN_CODE` parametresinin değeri 0 olarak dönmesi BKM Express Ödeme işleminin kabul edildiğini ifade etmektedir. Bundan sonraki aşamada ödeme yapacak kullanıcıdan BKM Express hesap giriş bilgileri ve ve taksit bilgileri alınarak ödeme yapılacaktır.

**3. Adım:**

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

**4. Adım:**

EsnekPos kullanıcıdan BKM Express hesap bilgilerini ve taksit bilgilerini kendi sunucularında kendi güvenlik önlemlerini kullanarak alır ve ödeme sürecini ilerletir.

<figure><img src="https://developer.esnekpos.com/Content/classic/demos/default/assets/demo/media/img/bkm-login.png" alt=""><figcaption></figcaption></figure>

**5. Adım:**

EsnekPos 3D doğrulama işlemlerini sonuçlandırır, ödemenin sonucunu üye işyerinin 1. adımda bildirmiş olduğu BACK\_URL adresine FORM POST metodu ile bildirir.

```html
                                            
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head><meta http-equiv=\"Content-Type\" content=\"text/html;charset=iso-8859-9\" /></head>
    <body onload='document.forms[0].submit()'>
        <form action='" + payment.DEALER_RESPONSE_URL + "' method='post'>
            <input type='hidden' name='DATE' value='{0}'>
            <input type='hidden' name='HASH' value='{0}'>
            <input type='hidden' name='ORDER_REF_NUMBER' value='{0}'>
            <input type='hidden' name='RETURN_CODE' value='{0}'>
            <input type='hidden' name='RETURN_MESSAGE' value='{0}'>
            <input type='hidden' name='STATUS' value='{0}'>
    </form>
    </body>
</html>
                                                
```

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

| BKM Express Test Hesap Bilgileri |                  |
| -------------------------------- | ---------------- |
| Kullanıcı Adı                    | <isyeri@bkm.com> |
| Şifre                            | 147258           |
| Doğrulama Kodu                   | 123456           |
