# Direct POST

**Direct POST - MOTO (2D)** ve **Direct POST - 3D Secure** entegrasyon modelleri, kart bilgilerinin girildiği ödeme sayfalarının **üye iş yeri tarafından tasarlandığı ve host edildiği** modellerdir.\
Bu modellerde, **HPP (Barındırılan Ödeme Sayfası)** kullanan müşterilerin aksine, ödeme adımında müşteriye gösterilecek sayfa doğrudan üye iş yerinin altyapısında çalışır.

***

#### **Temel Adımlar: Sepet ve SESSIONTOKEN**

Hangi entegrasyon modeli kullanılırsa kullanılsın, süreç her zaman sepet oluşturulması ve **SESSIONTOKEN** alınmasıyla başlar.

* **Sepet Oluşturma:**\
  Müşteri, web sitenizde veya mobil uygulamanızda alışverişini tamamlayıp ödeme adımına geçtiğinde, alınacak ürünler bir sepet mantığında toplanır.
* **SESSIONTOKEN Talebi:**\
  Sepet ve müşteri bilgilerini kullanarak Paratika sistemine bir [**SESSIONTOKEN**](/entegrasyon/api-istekleri/oturum-anahtari/session-token.md) isteği gönderirsiniz.

Önemli Parametreler:

* **MERCHANTPAYMENTID**: Sipariş numarasını temsil eder. Her işlem için *benzersiz* (unique) bir değer gönderilmelidir.
* **ORDERITEMS**: Sepetteki ürünleri listeleyen JSON formatındaki veri. Gönderilmeden önce **encode** edilmelidir.
* **EXTRA**: Ek bilgi gönderilecekse, bu alan da **encode** edilmelidir.

İstek gönderildiğinde başarılı bir yanıtla birlikte **SESSIONTOKEN** alınır.

<figure><img src="/files/a1wZAq6aNEBreiMfyrkt" alt=""><figcaption></figcaption></figure>

***

#### **Kart Bilgisi Toplama ve Direct POST İşlemi**

SESSIONTOKEN oluşturulduktan sonra:

1. **Müşteri**, üye iş yerinin host ettiği kendi ödeme sayfasına yönlendirilir.
2. Müşteri kart bilgilerini bu sayfada doldurur.
3. Ardından, form aracılığıyla kart bilgileri ve SESSIONTOKEN bilgisi birlikte **Direct POST** yöntemiyle Paratika'ya gönderilir.

POST adresleri:

### **Direct Post - 2D MOTO (Non3D) Yönlendirme Linki**

<table><thead><tr><th width="140">Ortam</th><th>Link</th></tr></thead><tbody><tr><td>Entegrasyon</td><td><a href="	https://entegrasyon.paratika.com.tr/merchant/post/sale/[SESSIONTOKEN]">https://entegrasyon.paratika.com.tr/merchant/post/sale/[SESSIONTOKEN]</a></td></tr><tr><td>VPOS (Canlı)</td><td><a href="	https://vpos.paratika.com.tr/merchant/post/sale/[SESSIONTOKEN]">https://vpos.paratika.com.tr/merchant/post/sale/[SESSIONTOKEN]</a></td></tr></tbody></table>

#### Örnek 2D Ödeme Sayfası Kodu

```
<!DOCTYPE html>
<html>
  <head>
    <title>Sample POST Form</title>
    <meta charset="utf-8">
    <script>
      function hideCardPANData() {
        if (document.getElementById('isPayWithCardToken').checked) {
          document.getElementById('cardPANData').style.display = 'none';
          document.getElementById('cardTokenContainer').style.display = 'block';
        } else {
          document.getElementById('cardTokenContainer').style.display = 'none';
          document.getElementById('cardPANData').style.display = 'block';
        }
      }
    </script>
    <style type="text/css">
      form {
        display: table;
      }

      p {
        display: table-row;
      }

      label {
        display: table-cell;
      }

      input {
        display: table-cell;
      }
    </style>
  </head>
  <body onload="hideCardPANData();">
    <form action="https://vpos.paratika.com.tr/merchant/post/sale/[SECURE_SESSION_TOKEN]" method="post">
      <div>
        <label for="isPayWithCardToken">Pay with Card Token</label>
        <input type="checkbox" onclick="hideCardPANData();" name="isPayWithCardToken" id="isPayWithCardToken" autocomplete="off" maxlength="32" />
      </div>
      <div class="container">
        <div id="cardPANData">
          <p>
            <label for="cardOwner">Card Owner Name</label>
            <input type="text" name="cardOwner" id="cardOwner" autocomplete="off" maxlength="32" />
          </p>
          <p>
            <label for="pan">Card Number (PAN) </label>
            <input type="text" id="pan" name="pan" autocomplete="off" maxlength="19" />
          </p>
          <p>
            <label for="expiryMonth">Expiration Date</label>
            <select name="expiryMonth" id="expiryMonth">
              <option value="01">January</option>
              <option value="02">February</option>
              <option value="03">March</option>
              <option value="04">April</option>
              <option value="05">May</option>
              <option value="06">June</option>
              <option value="07">July</option>
              <option value="08">August</option>
              <option value="09">September</option>
              <option value="10">October</option>
              <option value="11">November</option>
              <option value="12">December</option>
            </select>
            <select name="expiryYear" id="expiryYear">
              <option value="2016">2016</option>
              <option value="2017">2017</option>
              <option value="2018">2018</option>
              <option value="2019">2019</option>
              <option value="2020">2020</option>
              <option value="2021">2021</option>
              <option value="2022">2022</option>
              <option value="2023">2023</option>
              <option value="2024">2024</option>
              <option value="2025">2025</option>
              <option value="2026">2026</option>
              <option value="2027">2027</option>
              <option value="2028">2028</option>
              <option value="2029">2029</option>
              <option value="2030">2030</option>
              <option value="2031">2031</option>
              <option value="2032">2032</option>
              <option value="2033">2033</option>
              <option value="2034">2034</option>
            </select>
          </p>
          <p>
            <label for="cvv">Security Code (CVV)</label>
            <input type="input" name="cvv" id="cvv" autocomplete="off" maxlength="4" />
          </p>
          <p>
            <label for="saveCard">Save Card</label>
            <input type="checkbox" name="saveCard" id="saveCard" value="YES" />
          </p>
          <p>
            <label for="cardName">Card Name</label>
            <input type="text" name="cardName" id="cardName" />
          </p>
          <p>
            <label for="installmentCount">Installment Count</label>
            <input type="text" name="installmentCount" id="installmentCount" />
          </p>
          <input type="hidden" value="" name="points" id="points" />
          <input type="hidden" value="" name="paymentSystem" id="paymentSystem" />
        </div>
        <div id="cardTokenContainer">
          <p>
            <label for="cardToken">>Card Token</label>
            <input type="text" name="cardToken" id="cardToken" autocomplete="off" maxlength="64" />
          </p>
          <p>
            <label for="installmentCount">Installment Count</label>
            <input type="text" name="installmentCount" id="installmentCount" />
          </p>
        </div>
        <input type="submit" value="Submit" />
    </form>
  </body>
</html>
```

### **Direct Post - 3D Yönlendirme Linki**

<table><thead><tr><th width="140">Ortam</th><th>Link</th></tr></thead><tbody><tr><td>Entegrasyon</td><td><a href="https://entegrasyon.paratika.com.tr/paratika/api/v2/post/sale3d/[SESSIONTOKEN]">https://entegrasyon.paratika.com.tr/paratika/api/v2/post/sale3d/[SESSIONTOKEN]</a></td></tr><tr><td>VPOS (Canlı)</td><td><a href="https://vpos.paratika.com.tr/paratika/api/v2/post/sale3d/[SESSIONTOKEN]">https://vpos.paratika.com.tr/paratika/api/v2/post/sale3d/[SESSIONTOKEN]</a></td></tr></tbody></table>

#### Örnek 3D Ödeme Sayfası Kodu

```
<!DOCTYPE html>
<html>
  <head>
    <title>Sample POST Form</title>
    <meta charset="utf-8">
    <script>
      function hideCardPANData() {
        if (document.getElementById('isPayWithCardToken').checked) {
          document.getElementById('cardPANData').style.display = 'none';
          document.getElementById('cardTokenContainer').style.display = 'block';
        } else {
          document.getElementById('cardTokenContainer').style.display = 'none';
          document.getElementById('cardPANData').style.display = 'block';
        }
      }
    </script>
    <style type="text/css">
      form {
        display: table;
      }

      p {
        display: table-row;
      }

      label {
        display: table-cell;
      }

      input {
        display: table-cell;
      }
    </style>
  </head>
  <body onload="hideCardPANData();">
    <form action="https://vpos.paratika.com.tr/paratika/api/v2/post/sale3d/[SECURE_SESSION_TOKEN]" method="post">
      <div>
        <label for="isPayWithCardToken">Pay with Card Token</label>
        <input type="checkbox" onclick="hideCardPANData();" name="isPayWithCardToken" id="isPayWithCardToken" autocomplete="off" maxlength="32" />
      </div>
      <div class="container">
        <div id="cardPANData">
          <p>
            <label for="cardOwner">Card Owner Name</label>
            <input type="text" name="cardOwner" id="cardOwner" autocomplete="off" maxlength="32" />
          </p>
          <p>
            <label for="pan">Card Number (PAN)</label>
            <input type="text" id="pan" name="pan" autocomplete="off" maxlength="19" />
          </p>
          <p>
            <label for="expiryMonth">Expiration Date</label>
            <select name="expiryMonth" id="expiryMonth">
              <option value="01">January</option>
              <option value="02">February</option>
              <option value="03">March</option>
              <option value="04">April</option>
              <option value="05">May</option>
              <option value="06">June</option>
              <option value="07">July</option>
              <option value="08">August</option>
              <option value="09">September</option>
              <option value="10">October</option>
              <option value="11">November</option>
              <option value="12">December</option>
            </select>
            <select name="expiryYear" id="expiryYear">
              <option value="2016">2016</option>
              <option value="2017">2017</option>
              <option value="2018">2018</option>
              <option value="2019">2019</option>
              <option value="2020">2020</option>
              <option value="2021">2021</option>
              <option value="2022">2022</option>
              <option value="2023">2023</option>
              <option value="2024">2024</option>
              <option value="2025">2025</option>
              <option value="2026">2026</option>
              <option value="2027">2027</option>
              <option value="2028">2028</option>
              <option value="2029">2029</option>
              <option value="2030">2030</option>
              <option value="2031">2031</option>
              <option value="2032">2032</option>
              <option value="2033">2033</option>
              <option value="2034">2034</option>
            </select>
          </p>
          <p>
            <label for="cvv">Security Code (CVV)</label>
            <input type="input" name="cvv" id="cvv" autocomplete="off" maxlength="4" />
          </p>
          <p>
            <label for="saveCard">Save Card</label>
            <input type="checkbox" name="saveCard" id="saveCard" value="YES" />
          </p>
          <p>
            <label for="cardName">Card Name</label>
            <input type="text" name="cardName" id="cardName" />
          </p>
          <p>
            <label for="installmentCount">Installment Count</label>
            <input type="text" name="installmentCount" id="installmentCount" />
          </p>
          <input type="hidden" value="" name="points" id="points" />
          <input type="hidden" value="" name="paymentSystem" id="paymentSystem" />
        </div>
      </div>
      <div id="cardTokenContainer">
        <p>
          <label for="cardToken">Card Token</label>
          <input type="text" name="cardToken" id="cardToken" autocomplete="off" maxlength="64" />
        </p>
        <p>
          <label for="installmentCount">Installment Count</label>
          <input type="text" name="installmentCount" id="installmentCount" />
        </p>
      </div>
      <input type="submit" value="Submit" />
    </form>
  </body>
</html>
```

***

#### **Ödeme Sonuçlarının Alınması**

İşlem tamamlandıktan sonra:

* Paratika, ödeme sonucunu (başarılı/başarısız) **RETURNURL** adresinize **POST** yöntemi ile gönderir.
* Gelen POST içeriğinde:
  * `responseCode: 00` ve
  * `responseMsg: Approved`\
    bilgileri varsa ödeme başarılı olmuş demektir.

<figure><img src="/files/WjYPRcFqeLRhycjScCCq" alt=""><figcaption></figcaption></figure>

Bu adımda işlemin durumuna göre müşteri bilgilendirilmeli ve başarılı işlemlerde sipariş tamamlanmalıdır.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.paratika.com.tr/entegrasyon/entegrasyon-modelleri/direct-post.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
