> ## Documentation Index
> Fetch the complete documentation index at: https://developer.1000pay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Kart Token Oluşturma

> Kart Token Servisi, kart bilgilerini güvenli şekilde tokena dönüştürerek ödeme işlemlerinde kullanılmasını sağlar.

Kart numarası girilerek gerçekleştirilen finansal işlemlerde, işlem öncesinde kart bilgilerini temsil eden bir token oluşturulması gerekmektedir. Üretilen bu token değeri kullanılarak, ilgili işlem tipi için ödeme servisi çağrılır. Böylece kart bilgileri doğrudan ödeme adımında kullanılmaz.

<Info>Bu servis, HTTP Form POST yöntemi ile çalışır. Diğer API çağrılarından farklı olarak, kimlik doğrulama ve kart bilgileri header üzerinden değil, form-data formatında gönderilir (Tablo 5.2).</Info>

<Callout icon="key" color="#FFC107" iconType="regular"> Bu yaklaşımın amacı; kart numarasının backend sistemlere hiç alınmadan, form post yöntemiyle önce tokenlaştırılması, ardından backend tarafında yalnızca bu token değeri ile işlem yapılmasının sağlanmasıdır. Bu sayede PCI uyumluluğu ve veri güvenliği güçlendirilir. </Callout>

Token oluşturulacak karta ait bilgiler, kimlik doğrulama parametreleri ile birlikte Tablo 5.1’de belirtilen alanlar üzerinden iletilmelidir.

**İstek Tipi:** multipart/form-data

### Tablo 5.1. Kart Token Servisi Girdi Parametreleri

| Parametre Adı  | Veri Tipi | Açıklama                       | Zorunluluk |
| -------------- | --------- | ------------------------------ | ---------- |
| publicKey      | string    | Üye iş yeri açık anahtarı      | Evet       |
| nonce          | string    | Zaman damgası                  | Evet       |
| signature      | string    | Kimlik anahtar değeri          | Evet       |
| conversationId | string    | Üye iş yeri benzersiz değeri   | Evet       |
| merchantNumber | string    | Üye iş yeri numarası           | Evet       |
| cardNumber     | string    | Kart numarası                  | Evet       |
| expireMonth    | string    | Son kullanma tarihi ay değeri  | Evet       |
| expireYear     | string    | Son kullanma tarihi yıl değeri | Evet       |
| cvv            | string    | Güvenlik kodu                  | Evet       |

### Tablo 5.2. Kart Token Servisi Örnek Request (form-data)

<CodeGroup dropdown>
  ```javascript form-data theme={null} theme={null}
  const formData = new FormData();
  formData.append('CardNumber', '4355093000777068');
  formData.append('ExpireMonth', '11');
  formData.append('ExpireYear', '40');
  formData.append('Cvv', '313');
  formData.append('PublicKey', '{{publicKey}}');
  formData.append('Nonce', '{{nonce}}');
  formData.append('Signature', '{{signature}}');
  formData.append('ConversationId', '{{conversationId}}');
  formData.append('MerchantNumber', '{{merchantNumber}}');

  ```

  ```csharp form-data theme={null} theme={null}
  using System.Net.Http;
  using System.Net.Http.Headers;

  var formData = new MultipartFormDataContent();

  formData.Add(new StringContent("4355093000777068"), "CardNumber");
  formData.Add(new StringContent("11"), "ExpireMonth");
  formData.Add(new StringContent("40"), "ExpireYear");
  formData.Add(new StringContent("313"), "Cvv");
  formData.Add(new StringContent("{{publicKey}}"), "PublicKey");
  formData.Add(new StringContent("{{nonce}}"), "Nonce");
  formData.Add(new StringContent("{{signature}}"), "Signature");
  formData.Add(new StringContent("{{conversationId}}"), "ConversationId");
  formData.Add(new StringContent("{{merchantNumber}}"), "MerchantNumber");

  using var client = new HttpClient();
  var response = await client.PostAsync("{{endpointUrl}}", formData);
  ```

  ```php form-data theme={null} theme={null}
  <?php

  $postFields = [
     'CardNumber'     => '4355093000777068',
     'ExpireMonth'    => '11',
     'ExpireYear'     => '40',
     'Cvv'            => '313',
     'PublicKey'      => '{{publicKey}}',
     'Nonce'          => '{{nonce}}',
     'Signature'      => '{{signature}}',
     'ConversationId' => '{{conversationId}}',
     'MerchantNumber' => '{{merchantNumber}}',
  ];

  $ch = curl_init('{{endpointUrl}}');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, true);
  curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields);

  $response = curl_exec($ch);
  curl_close($ch);

  ?>
  ```

  ```python form-data theme={null} theme={null}
  import requests

  url = "{{endpointUrl}}"

  payload = {
     "CardNumber": "4355093000777068",
     "ExpireMonth": "11",
     "ExpireYear": "40",
     "Cvv": "313",
     "PublicKey": "{{publicKey}}",
     "Nonce": "{{nonce}}",
     "Signature": "{{signature}}",
     "ConversationId": "{{conversationId}}",
     "MerchantNumber": "{{merchantNumber}}"
  }

  response = requests.post(url, data=payload)

  print(response.status_code)
  print(response.text)
  ```
</CodeGroup>

### Tablo 5.3. Kart Token Servisi Çıktı Parametreleri

| Parametre Adı  | Veri Tipi            | Açıklama                                   | Zorunluluk |
| -------------- | -------------------- | ------------------------------------------ | ---------- |
| cardToken      | string               | Oluşturulan token bilgisi                  | Evet       |
| signature      | string               | Input olarak verilen kimlik anahtar değeri | Evet       |
| isSucceeded    | boolean (true/false) | İşlem durumu                               | Evet       |
| errorCode      | string               | Hata kodu                                  | Evet       |
| errorMessage   | string               | Hata mesajı                                | Evet       |
| conversationId | string               | Üye iş yeri benzersiz değeri               | Evet       |

<CodeGroup dropdown>
  ```javascript form-data theme={null} theme={null}
  {
  "cardToken": "+oc6jxS0ABueLM+QuJnQFrZyV+B4HMHYiMx8yBH/Z90=",
  "signature": "Xa5KVwVju7gp47rHJ4Dc91iNk09PjkTKp/pBnGwILA=",
  "isSucceeded": true,
  "errorCode": null,
  "errorMessage": null,
  "conversationId": "969109305"
  }
  ```
</CodeGroup>
