# NON-3DS Entegrasyonu

<figure><img src="https://1970365243-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FkTpM8Bc8GIRKlQDusDr3%2Fuploads%2FkUPxoTYzrEVblUbT2ZBI%2FNon3DS_TR.png?alt=media&#x26;token=0bbf2c1c-1e03-4a57-bf85-525a36899257" alt=""><figcaption></figcaption></figure>

### Entegrasyon Adımları

1. [BIN Sorgulama](#id-1.-bin-sorgulama)
2. [Ödeme Oluşturma](https://docs.iyzico.com/on-hazirliklar/api-reference-beta/odeme-metotlari/api-non3d#post-payment-auth)
3. [Ödeme Bilgilerine Erişim(Opsiyonel)](https://docs.iyzico.com/odeme-metotlari/api/non-3ds/non-3ds-entegrasyonu/odeme-sorgulama)
4. [Webhook](https://docs.iyzico.com/ek-servisler/webhook)

{% hint style="info" %}
**ÖNEMLİ NOT :** NON-3DS kullanımı için iyzico hesabınızda bu özelliğin olması gerekmektedir. Bu özelliği açtırmak için <entegrasyon@iyzico.com> adresine eposta göndererek bu talebi oluşturabilirsiniz.
{% endhint %}

### Genel Özet

* [ ] BIN Sorgulama; API'nin taksit seçenekleri ve kart ayrıntıları hakkında bilgi döndürdüğü, kartı veren kuruluşun ayrıntılarını tanımladığı adımdır.
* [ ] Ödeme Oluşturma; Ödeme taleplerini tek adımda işlemenize ve yönetmenizi sağlar.
* [ ] Ödeme Bilgilerine Erişim(Opsiyonel); iyzico tarafından kaydedilen ödemenin işlem ayrıntılarını kontrol etmenizi sağlar.
* [ ] Webhook; İlgili ödemenin gerçek zamanlı bildirimininin yapıldığı adımdır.

{% @mermaid/diagram content="---
config:
look: classic
theme: darkMode
---------------

sequenceDiagram

%% START
Customer-->>Merchant: Ecom Journey (1)

%% CREATE PAYMENT PHASE - START
alt ÖDEME OLUŞTURMA
Merchant-->>iyzico: POST ...payment/auth (2)
iyzico->>Acquirer: Authentication aşamaları (3)
Acquirer->>iyzico: Acquirer Bankanın Yanıtı (4)
iyzico->>Merchant: --RESPONSE Ödeme Sonucu (5)
end
%% CREATE PAYMENT PHASE - END

iyzico-->>Merchant: Webhook gönderilir (6)

%% RETRIEVE PAYMENT PHASE - START
opt ÖDEME SORUGLAMA
Merchant-->>iyzico: POST ...payment/detail (6.1)
iyzico->>Merchant: --RESPONSE Ödeme Sonucu (6.2)
end
%% RETRIEVE PAYMENT PHASE - START

Merchant-->>Customer: Ödeme Onaylanır (7)
%% END" %}

### Örnek Uygulama

Temel NON-3DS uygulaması, kısaca birbirini takip eden iki POST isteğinden oluşur.

* [Ödeme Oluşturma](https://docs.iyzico.com/odeme-metotlari/api/non-3ds/non-3ds-entegrasyonu/odeme-olusturma)
* [Ödeme Bilgilerine Erişim(Opsiyonel)](https://docs.iyzico.com/odeme-metotlari/api/non-3ds/non-3ds-entegrasyonu/odeme-sorgulama)

Önerilen entegrasyon aşağıdaki sırayla izlenir;

### 1. BIN Sorgulama

İster 3DS ister NON-3DS ödeme yöntemi olsun, alışverişte kullanılacak kartın özelliğinin önceden belirlenmesi tavsiye edilir. BIN detay hizmetleri sayesinde kart türü, kart şeması, kart ile ilgili taksit bilgileri ve 3DS özelliklerine ilişkin daha ayrıntılı bilgiler alınır.

#### Taksit Bilgisini Almaya Yönelik Örnek İstek;

```json
{
"price":"100.0",
"binNumber":"535805"
}
```

#### Taksit Bilgisini Almaya Yönelik Örnek Yanıt;

```json
{
    "status": "success",
    "locale": "tr",
    "systemTime": 1685905139724,
    "installmentDetails": [
        {
            "binNumber": "535805",
            "price": 100.0,
            "cardType": "DEBIT_CARD",
            "cardAssociation": "MASTER_CARD",
            "cardFamilyName": "iyzico DC",
            "force3ds": 0,
            "bankCode": 864,
            "bankName": "iyzico",
            "forceCvc": 0,
            "commercial": 0,
            "dccEnabled": 0,
            "installmentPrices": [
                {
                    "installmentPrice": 100.0,
                    "totalPrice": 100.0,
                    "installmentNumber": 1
                }
            ]
        }
    ]
}
```

### 2. Ödeme Oluşturma

NON-3DS ödeme yolculuğu, Ödeme Oluşturma `POST` isteği ile başlar.

#### Ödeme Oluşturmaya Yönelik Örnek İstek;

```json
{
   "locale":"en",
   "conversationId":"deviyzico",
   "price":"10.01",
   "paidPrice":"10.01",
   "currency":"TRY",
   "installment":1,
   "paymentChannel":"WEB",
   "basketId":"B67832",
   "paymentGroup":"PRODUCT",
   "paymentCard":{
      "cardHolderName":"Mehmet Test",
      "cardNumber":"5526080000000006",
      "expireYear":"2028",
      "expireMonth":"11",
      "cvc":"245",
      "registerCard":0
   },
   "buyer":{
      "id":"BY789",
      "name":"John",
      "surname":"Doe",
      "identityNumber":"11111111111",
      "email":"test@testtt.com",
      "gsmNumber":"+905393623333",
      "registrationDate":"2013-04-21 15:12:09",
      "lastLoginDate":"2015-10-05 12:43:35",
      "registrationAddress":"Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
      "city":"Istanbul",
      "country":"Turkey",
      "zipCode":"34732",
      "ip":"85.34.78.112"
   },
   "shippingAddress":{
      "address":"Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
      "zipCode":"34742",
      "contactName":"Jane Doe",
      "city":"Istanbul",
      "country":"Turkey"
   },
   "billingAddress":{
      "address":"Nidakule Göztepe, Merdivenköy Mah. Bora Sok. No:1",
      "zipCode":"34742",
      "contactName":"Jane Doe",
      "city":"Istanbul",
      "country":"Turkey"
   },
   "basketItems":[
      {
         "id":"BI101",
         "price":"10.01",
         "name":"Binocular",
         "category1":"Collectibles",
         "category2":"Accessories",
         "itemType":"PHYSICAL"
      }
   ]
}
```

#### Ödeme Oluşturmaya Yönelik Örnek Yanıt;

```json
{
    "status": "success",
    "locale": "en",
    "systemTime": 1686413012592,
    "conversationId": "deviyzico",
    "price": 10.01,
    "paidPrice": 10.01,
    "installment": 1,
    "paymentId": "19682125",
    "fraudStatus": 1,
    "merchantCommissionRate": 0E-8,
    "merchantCommissionRateAmount": 0.00,
    "iyziCommissionRateAmount": 0.40040000,
    "iyziCommissionFee": 0.25000000,
    "cardType": "CREDIT_CARD",
    "cardAssociation": "MASTER_CARD",
    "cardFamily": "Axess",
    "binNumber": "552608",
    "lastFourDigits": "0006",
    "basketId": "B67832",
    "currency": "TRY",
    "itemTransactions": [
        {
            "itemId": "BI101",
            "paymentTransactionId": "20945921",
            "transactionStatus": 2,
            "price": 10.01,
            "paidPrice": 10.01000000,
            "merchantCommissionRate": 0E-8,
            "merchantCommissionRateAmount": 0E-8,
            "iyziCommissionRateAmount": 0.40040000,
            "iyziCommissionFee": 0.25000000,
            "blockageRate": 0E-8,
            "blockageRateAmountMerchant": 0E-8,
            "blockageRateAmountSubMerchant": 0,
            "blockageResolvedDate": "2023-06-18 00:00:00",
            "subMerchantPrice": 0,
            "subMerchantPayoutRate": 0E-8,
            "subMerchantPayoutAmount": 0,
            "merchantPayoutAmount": 9.35960000,
            "convertedPayout": {
                "paidPrice": 10.01000000,
                "iyziCommissionRateAmount": 0.40040000,
                "iyziCommissionFee": 0.25000000,
                "blockageRateAmountMerchant": 0E-8,
                "blockageRateAmountSubMerchant": 0E-8,
                "subMerchantPayoutAmount": 0E-8,
                "merchantPayoutAmount": 9.35960000,
                "iyziConversionRate": 0,
                "iyziConversionRateAmount": 0,
                "currency": "TRY"
            }
        }
    ],
    "authCode": "013627",
    "phase": "AUTH",
    "hostReference": "mock00007iyzihostrfn"
}

```

### 3. Ödeme Bilgilerine Erişim(Opsiyonel)

Yukarıdaki tüm adımları tamamladıktan sonra, artık Issuer ile Acquirer arasındaki ödeme işlemini Ödeme Bilgilerine Erişim isteği ile kontrol etme zamanı.

{% hint style="danger" %}
Ödeme Bilgilerine Erişim adımı, paydaşlarımıza ürünlerini göndermeden önce gerçekleştirmelerini tavsiye ettiğimiz ek bir önlemdir.
{% endhint %}

#### Ödeme Bilgilerine Erişime Yönelik Örnek İstek;

```json
{  
   "locale":"tr",
   "paymentId":"19682125" //or "paymentConversationId":"deviyzico"
}
```

#### Ödeme Bilgilerine Erişime Yönelik Örnek Yanıt;

```json
{
    "status": "success",
    "locale": "tr",
    "systemTime": 1686413104142,
    "price": 10.01000000,
    "paidPrice": 10.01000000,
    "installment": 1,
    "paymentId": "19682125",
    "fraudStatus": 1,
    "merchantCommissionRate": 0E-8,
    "merchantCommissionRateAmount": 0E-8,
    "iyziCommissionRateAmount": 0.40040000,
    "iyziCommissionFee": 0.25000000,
    "cardType": "CREDIT_CARD",
    "cardAssociation": "MASTER_CARD",
    "cardFamily": "Axess",
    "binNumber": "552608",
    "lastFourDigits": "0006",
    "basketId": "B67832",
    "currency": "TRY",
    "itemTransactions": [
        {
            "itemId": "BI101",
            "paymentTransactionId": "20945921",
            "transactionStatus": 2,
            "price": 10.01000000,
            "paidPrice": 10.01000000,
            "merchantCommissionRate": 0E-8,
            "merchantCommissionRateAmount": 0E-8,
            "iyziCommissionRateAmount": 0.40040000,
            "iyziCommissionFee": 0.25000000,
            "blockageRate": 0E-8,
            "blockageRateAmountMerchant": 0E-8,
            "blockageRateAmountSubMerchant": 0E-8,
            "blockageResolvedDate": "2023-06-18 00:00:00",
            "subMerchantPrice": 0E-8,
            "subMerchantPayoutRate": 0E-8,
            "subMerchantPayoutAmount": 0E-8,
            "merchantPayoutAmount": 9.35960000,
            "convertedPayout": {
                "paidPrice": 10.01000000,
                "iyziCommissionRateAmount": 0.40040000,
                "iyziCommissionFee": 0.25000000,
                "blockageRateAmountMerchant": 0E-8,
                "blockageRateAmountSubMerchant": 0E-8,
                "subMerchantPayoutAmount": 0E-8,
                "merchantPayoutAmount": 9.35960000,
                "iyziConversionRate": 0E-8,
                "iyziConversionRateAmount": 0E-8,
                "currency": "TRY"
            }
        }
    ],
    "authCode": "013627",
    "phase": "AUTH",
    "hostReference": "mock00007iyzihostrfn",
    "paymentStatus": "SUCCESS"
}
```

### 4. Webhook

Webhook’lar NON-3DS akışımızın son konusudur.

Gerçek zamanlı ödeme bildirimlerinin alınması, genel olarak 3DS deneyiminden yararlanırken bildirimlerin güvenilir kaynaklardan gelmesini sağlar ve hassas verilere olası müdahaleleri veya yetkisiz erişimi önler.

Her ödeme olayı Webhook’ları tetikler;

* Her `15` saniyede bir
* Sunucunuz `200` yanıtını alana kadar.
* Her `10` dakikada bir
* Maksimum `3` kere

**Örnek Webhook 3DS Yetkilendirmesi**

| Parametere                | Type   | Description                                                           |
| ------------------------- | ------ | --------------------------------------------------------------------- |
| **iyziEventTime**         | long   | Unix timestamp value of first notification.                           |
| **iyziEventType**         | string | Shows the request type. Values: API\_AUTH, THREE\_DS\_AUTH, BKM\_AUTH |
| **iyziReferenceCode**     | string | A unique reference code for the notification                          |
| **paymentId**             | long   | Unique iyzico reference code of related payment                       |
| **paymentConversationId** | string | Merchant's reference id for the related payment                       |
| **status**                | string | Payment status. Values: SUCCESS, FAILURE                              |

Olumlu senaryo `status` değişkeninin `success` dönmesiyle gerçekleşir.

**Doğrulama**

Ödeme işlemlerinin başarılı bir şekilde sonuçlandırılmasında belirli değişkenlerin korelasyonu önemli rol oynar;

* `paymentId`
* `status`
* `price`
* Diğer [Eşleştirme](https://docs.iyzico.com/on-hazirliklar/eslestirme) parametreleri opsiyoneldir.

[Ödeme Oluşturma](https://docs.iyzico.com/odeme-metotlari/api/non-3ds/non-3ds-entegrasyonu/odeme-olusturma) yanıtı ve [Webhook](https://docs.iyzico.com/ek-servisler/webhook) bildiriminin birbirini doğrulaması hayati önem taşımaktadır.

* [Ödeme Oluşturma](https://docs.iyzico.com/odeme-metotlari/api/non-3ds/non-3ds-entegrasyonu/odeme-olusturma) yanıtında bulunan `paymentId` değişkeni [Webhook](https://docs.iyzico.com/ek-servisler/webhook)’tan gelen `paymentId` değişkeniyle aynı olmalıdır.
* Her iki istekten gelen `status` değişkeni `success` olmalıdır.
* `price` parametresindeki miktar aynı olmalıdır.
* Ve son olarak, [Eşleştirme](https://docs.iyzico.com/on-hazirliklar/eslestirme) parametreleri de eşit olmalıdır.

Eğer eşitse, tebrikler! NON-3DS entegrasyonunu bitirdiniz.

İşlem detaylarına panelinizden ulaşabilirsiniz.
