> For the complete documentation index, see [llms.txt](https://docs.paratika.com.tr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.paratika.com.tr/entegrasyon/entegrasyon-modelleri/direct-post.md).

# Direct POST

(Browser Redirect)

**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="https://3583315535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLHaxaDcKZbQ525oCtWD%2Fuploads%2FODbP5ohlK9fMdYHc5m23%2Fimage.png?alt=media&amp;token=cc66ca45-97e2-428e-8dcc-5ac710cd7935" 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="https://3583315535-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FeLHaxaDcKZbQ525oCtWD%2Fuploads%2FeCZQpxNao3PsOJU2qq5G%2Fimage.png?alt=media&amp;token=9aa90dee-f1ed-4315-82de-7f4949b73e6e" 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.
