# 1. 3D Pay Başlat

<mark style="color:green;">`POST`</mark> `{{Base Adres}}/api/paywall/payment/start3d`

{% hint style="info" %}
Önemli: **3D** **Ödeme** servisini kullanabilmeniz için 'Header' alanında '**apikeypublic**' ve '**apiclientpublic**' parametrelerini göndermeniz gerekmektedir.\
\
[<mark style="color:green;">**PaymentAPI Adresi**</mark>](https://developer.paywall.one/ortam)
{% endhint %}

**Servise gönderilecek örnek&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;ve&#x20;**<mark style="color:green;">**örnek kodlar**</mark>**&#x20;aşağıdaki gibidir.**

<table><thead><tr><th width="162">Parametre</th><th width="79">Tip</th><th width="107">Zorunlu</th><th width="403">Açıklama</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Key.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Evet</td><td>Üye işyeri panelinden temin etmiş olduğunuz Public Client.</td></tr></tbody></table>

<mark style="color:blue;">**Paywall İstek Payload**</mark>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json5
{
    "PaymentDetail": {
        "Amount": 1.00,
        "MerchantUniqueCode": "22123222256226225",
        "TrackingCode": "TrackingCode1",
        "Half3D": false,
        "MerchantSuccessBackUrl": "https://domain.com/callback",
        "MerchantFailBackUrl": "https://domain.com/callback",
        "ClientIP": "0.0.0.0",
        "CurrencyId": 1,
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "PayWatch": null,
        "PayWatchMultipleSupport": false,
        "PayWatchMultiple": null,
        "EndOfTheDay": 1,
        "RegionId": 1,
        "ProviderBased": false,
        "ProviderKey": "providerkey",
        "PosBased": false,
        "PosId": 0,
        "MarketPlace": {
            "BasketAmount": 1.00
        },
        "PayRouteByPass": false,
        "PayRouteType": 0,
        "RouteGroupKey": "route-003"
    },
    "Card":{
        "OwnerName":"Iyzico Kartı",
        "Number":"5528790000000008",
        "ExpireMonth":"12",
        "ExpireYear":"2030",
        "Cvv":"123",
        "ForceCvv": false, // Sadece kayıtlı kartlar için
        "UniqueCode":"",
        "TempCardToken": "",
        "Partner": { // Nullable
            "PartnerBased": false,
            "PartnerIdentity": ""
        },
        "CardSave": {
            "Nickname": "Kredi kartım",
            "RelationalId1": "userid19283746",
            "RelationalId2": "",
            "RelationalId3": "",
            "Save": true
        }
    },
    "Customer":{
        "FullName":"FullName",
        "Phone":"5336662211",
        "Email":"enes@xcompany.com",
        "Country":"Country",
        "City":"City",
        "Address":"Address",
        "IdentityNumber":"IdentityNumber",
        "TaxNumber":"TaxNumber"
        "DeviceFingerprint": "FingerPrint",
        "UserAgent": "UserAgent",
        "UserRegisteredAt": "2026-01-13T12:00:00",
        "Location": {
            "Country": "Turkey",
            "City": "Istanbul",
            "Region": "europe",
            "Lat": "41.07",
            "Lon": "29.00"
        }
    },
    "Products":[{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 1.0,
        "MemberId": 0,
        "MemberCustomCommission": false,
        "MemberCommission": 0,
        "MemberEarningCalculated": false,
        "MemberEarning": 0
    }],
    "UseFraudParameters": false, 
    "FraudParameters":{     
        "BypassFraud": false,        
        "OverrideActualParameters": false,
        "DeviceFingerprint": "test-FRD",
        "Amount": 101,       
        "ClientIP": "1.1.1.1",        
        "CountryCode": "TR-FRD",        
        "UserAgent": "UserAgent-FRD",        
        "Email": "FRD@gmail.com",        
        "Phone": "5435435454-FRD",
        "UserRegisteredAt": "2026-01-13T12:00:00",
        "Location": {
            "Country": "Turkey",
            "City": "Istanbul",
            "Region": "europe",
            "Lat": "41.07",
            "Lon": "29.00"
        }
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class Program
{
    static readonly HttpClient client = new HttpClient();

    public class PaymentDetail
    {
        public double Amount { get; set; }
        public string MerchantUniqueCode { get; set; }
        public int CurrencyId { get; set; }
        public string MerchantSuccessBackUrl { get; set; }
        public string MerchantFailBackUrl { get; set; }
        public int Installment { get; set; }
        public int ChannelId { get; set; }
        public int TagId { get; set; }
        public bool Half3D { get; set; }
    }

    public class Card
    {
        public string OwnerName { get; set; }
        public string Number { get; set; }
        public string ExpireMonth { get; set; }
        public string ExpireYear { get; set; }
        public string Cvv { get; set; }
        public string UniqueCode { get; set; }
    }

    public class Customer
    {
        public string FullName { get; set; }
        public string Phone { get; set; }
        public string Email { get; set; }
        public string Country { get; set; }
        public string City { get; set; }
        public string Address { get; set; }
        public string IdentityNumber { get; set; }
        public string TaxNumber { get; set; }
    }

    public class Product
    {
        public string ProductId { get; set; }
        public string ProductName { get; set; }
        public string ProductCategory { get; set; }
        public string ProductDescription { get; set; }
        public double ProductAmount { get; set; }
    }

    public class Root
    {
        public PaymentDetail PaymentDetail { get; set; }
        public Card Card { get; set; }
        public Customer Customer { get; set; }
        public Product[] Products { get; set; }
    }

    public static async Task Main()
    {
        Root root = new Root
        {
            PaymentDetail = new PaymentDetail
            {
                Amount = 9.85,
                MerchantUniqueCode = "AJSHFSAKFHASKHFA",
                CurrencyId = 1,
                MerchantSuccessBackUrl = "https://merchantsite.site.com/success",
                MerchantFailBackUrl = "https://merchantsite.site.com/fail",
                Installment = 1,
                ChannelId = 0,
                TagId = 0,
                Half3D = false
            },
            Card = new Card
            {
                OwnerName = "John Doe",
                Number = "5528790000000008",
                ExpireMonth = "12",
                ExpireYear = "2030",
                Cvv = "123",
                UniqueCode = ""
            },
            Customer = new Customer
            {
                FullName = "FullName",
                Phone = "5336662211",
                Email = "enes@xcompany.com",
                Country = "Country",
                City = "City",
                Address = "Address",
                IdentityNumber = "IdentityNumber",
                TaxNumber = "TaxNumber"
            },
            Products = new Product[] {
                new Product {
                    ProductId = "ProductId",
                    ProductName = "ProductName",
                    ProductCategory = "ProductCategory",
                    ProductDescription = "ProductDescription",
                    ProductAmount = 9.85
                }
            }
        };

        string json = JsonConvert.SerializeObject(root, Formatting.Indented);
        var data = new StringContent(json, Encoding.UTF8, "application/json");

        client.DefaultRequestHeaders.Add("apikeypublic", "%%");
        client.DefaultRequestHeaders.Add("apiclientpublic", "%%");

        var url = "{{Base Adres}}/api/paywall/payment/start3d";
        var response = await client.PostAsync(url, data);

        string result = response.Content.ReadAsStringAsync().Result;
        Console.WriteLine(result);
    }
}
```

{% endtab %}

{% tab title="GO" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

type PaymentDetail struct {
	Amount                 float64 `json:"Amount"`
	MerchantUniqueCode     string  `json:"MerchantUniqueCode"`
	CurrencyId             int     `json:"CurrencyId"`
	MerchantSuccessBackUrl string  `json:"MerchantSuccessBackUrl"`
	MerchantFailBackUrl    string  `json:"MerchantFailBackUrl"`
	Installment           int     `json:"Installment"`
	ChannelId              int     `json:"ChannelId"`
	TagId                  int     `json:"TagId"`
	Half3D                 bool    `json:"Half3D"`
}

type Card struct {
	OwnerName   string `json:"OwnerName"`
	Number      string `json:"Number"`
	ExpireMonth string `json:"ExpireMonth"`
	ExpireYear  string `json:"ExpireYear"`
	Cvv         string `json:"Cvv"`
	UniqueCode  string `json:"UniqueCode"`
}

type Customer struct {
	FullName      string `json:"FullName"`
	Phone         string `json:"Phone"`
	Email         string `json:"Email"`
	Country       string `json:"Country"`
	City          string `json:"City"`
	Address       string `json:"Address"`
	IdentityNumber string `json:"IdentityNumber"`
	TaxNumber      string `json:"TaxNumber"`
}

type Product struct {
	ProductId          string  `json:"ProductId"`
	ProductName        string  `json:"ProductName"`
	ProductCategory    string  `json:"ProductCategory"`
	ProductDescription string  `json:"ProductDescription"`
	ProductAmount      float64 `json:"ProductAmount"`
}

type Data struct {
	PaymentDetail PaymentDetail `json:"PaymentDetail"`
	Card          Card          `json:"Card"`
	Customer      Customer      `json:"Customer"`
	Products      []Product     `json:"Products"`
}

type ResponseData struct {
	ErrorCode int
	Result    bool
	Message   string
	Body      string
}

func main() {
	data := Data{
		PaymentDetail: PaymentDetail{
			Amount:                 9.85,
			MerchantUniqueCode:     "AJSHFSAKFHASKHFA",
			CurrencyId:             1,
			MerchantSuccessBackUrl: "https://merchantsite.site.com/success",
			MerchantFailBackUrl:    "https://merchantsite.site.com/fail",
			Installement:           1,
			ChannelId:              0,
			TagId:                  0,
			Half3D:                 false,
		},
		Card: Card{
			OwnerName:   "John Doe",
			Number:      "5528790000000008",
			ExpireMonth: "12",
			ExpireYear:  "2030",
			Cvv:         "123",
			UniqueCode:  "",
		},
		Customer: Customer{
			FullName:       "FullName",
			Phone:          "5336662211",
			Email:          "enes@xcompany.com",
			Country:        "Country",
			City:           "City",
			Address:        "Address",
			IdentityNumber: "IdentityNumber",
			TaxNumber:      "TaxNumber",
		},
		Products: []Product{
			{
				ProductId:          "ProductId",
				ProductName:        "ProductName",
				ProductCategory:    "ProductCategory",
				ProductDescription: "ProductDescription",
				ProductAmount:      9.85,
			},
		},
	}

	payloadBuf := new(bytes.Buffer)
	json.NewEncoder(payloadBuf).Encode(data)

	req, _ := http.NewRequest("POST", "{{Base Adres}}/api/paywall/payment/start3d", payloadBuf)

	req.Header.Set("Content-Type", "application/json")
	req.Header.Set("apikeypublic", "%%")
	req.Header.Set("apiclientpublic", "%%")

	client := &http.Client{}
	res, e := client.Do(req)
	if e != nil {
		panic(e)
	}

	defer res.Body.Close()

	body, _ := ioutil.ReadAll(res.Body)

	var responseData ResponseData
	json.Unmarshal(body, &responseData)

	fmt.Println("ErrorCode: ", responseData.ErrorCode)
	fmt.Println("Result: ", responseData.Result)
	fmt.Println("Message: ", responseData.Message)
	fmt.Println("Body: ", responseData.Body)
}
```

{% endtab %}

{% tab title="Java" %}

```xml
<dependencies>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.12.5</version>
    </dependency>
    <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>4.9.0</version>
    </dependency>
</dependencies>
```

```java
import okhttp3.*;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
import java.io.IOException;

public class Main {

    public static void main(String[] args) throws IOException {
        OkHttpClient client = new OkHttpClient();
        ObjectMapper mapper = new ObjectMapper();

        // Create JSON in a readable way
        ObjectNode rootNode = mapper.createObjectNode();
        rootNode.put("Amount", 9.85);
        rootNode.put("MerchantUniqueCode", "AJSHFSAKFHASKHFA");
        rootNode.put("CurrencyId", 1);
        rootNode.put("MerchantSuccessBackUrl", "https://merchantsite.site.com/success");
        rootNode.put("MerchantFailBackUrl", "https://merchantsite.site.com/fail");
        rootNode.put("Installment", 1);
        rootNode.put("ChannelId", 0);
        rootNode.put("TagId", 0);
        rootNode.put("Half3D", false);
        // and so on for all fields

        String json = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(rootNode);

        MediaType mediaType = MediaType.parse("application/json");
        RequestBody body = RequestBody.create(mediaType, json);
        Request request = new Request.Builder()
            .url("{{Base Adres}}/api/paywall/payment/start3d")
            .post(body)
            .addHeader("Content-Type", "application/json")
            .addHeader("apikeypublic", "%%")
            .addHeader("apiclientpublic", "%%")
            .build();

        Response response = client.newCall(request).execute();
        System.out.println(response.body().string());
    }
}
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php
$url = '{{Base Adres}}/api/paywall/payment/start3d';
$data = array(
    "PaymentDetail" => array(
        "Amount" => 9.85,
        "MerchantUniqueCode" => "AJSHFSAKFHASKHFA",
        "CurrencyId" => 1,
        "MerchantSuccessBackUrl" => "https://merchantsite.site.com/success",
        "MerchantFailBackUrl" => "https://merchantsite.site.com/fail",
        "Installment" => 1,
        "ChannelId" => 0,
        "TagId" => 0,
        "Half3D" => false
    ),
    "Card" => array(
        "OwnerName" => "John Doe",
        "Number" => "5528790000000008",
        "ExpireMonth" => "12",
        "ExpireYear" => "2030",
        "Cvv" => "123",
        "UniqueCode" => ""
    ),
    "Customer" => array(
        "FullName" => "FullName",
        "Phone" => "5336662211",
        "Email" => "enes@xcompany.com",
        "Country" => "Country",
        "City" => "City",
        "Address" => "Address",
        "IdentityNumber" => "IdentityNumber",
        "TaxNumber" => "TaxNumber"
    ),
    "Products" => array(
        array(
            "ProductId" => "ProductId",
            "ProductName" => "ProductName",
            "ProductCategory" => "ProductCategory",
            "ProductDescription" => "ProductDescription",
            "ProductAmount" => 9.85
        )
    )
);
$options = array(
    'http' => array(
        'header'  => "Content-type: application/json\r\n" .
                     "apikeypublic: %PUBLICKEY%\r\n" . 
                     "apiclientpublic: %PUBLICCLIENT%\r\n",
        'method'  => 'POST',
        'content' => json_encode($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);
if ($result === FALSE) { /* Handle error */ }

// Decode
$response = json_decode($result);

// ErrorCode-Result-Message
echo "ErrorCode: " . $response->ErrorCode . "\n";
echo "Result: " . ($response->Result ? "true" : "false") . "\n";
echo "Message: " . $response->Message . "\n";

// Decode Body
$body = json_decode($response->Body);
var_dump($result);
?>
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
import json

url = '{{Base Adres}}/api/paywall/payment/start3d'

headers = {
    'Content-Type': 'application/json',
    'apikeypublic': '%%',
    'apiclientpublic': '%%'
}

data = {
    "PaymentDetail": {
        "Amount": 9.85,
        "MerchantUniqueCode": "AJSHFSAKFHASKHFA",
        "CurrencyId": 1,
        "MerchantSuccessBackUrl": "https://merchantsite.site.com/success",
        "MerchantFailBackUrl": "https://merchantsite.site.com/fail",
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "Half3D": False
    },
    "Card": {
        "OwnerName": "John Doe",
        "Number": "5528790000000008",
        "ExpireMonth": "12",
        "ExpireYear": "2030",
        "Cvv": "123",
        "UniqueCode": ""
    },
    "Customer": {
        "FullName": "FullName",
        "Phone": "5336662211",
        "Email": "enes@xcompany.com",
        "Country": "Country",
        "City": "City",
        "Address": "Address",
        "IdentityNumber": "IdentityNumber",
        "TaxNumber": "TaxNumber"
    },
    "Products": [{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 9.85
    }]
}

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    response_data = response.json()

    print("ErrorCode: ", response_data.get('ErrorCode'))
    print("Result: ", response_data.get('Result'))
    print("Message: ", response_data.get('Message'))

    body = json.loads(response_data.get('Body'))
    print(body)
else:
    print(f'Request failed with status code {response.status_code}')
```

{% endtab %}

{% tab title="Ruby" %}

```ruby
require 'net/http'
require 'uri'
require 'json'

uri = URI.parse("{{Base Adres}}/api/paywall/payment/start3d")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.path, {
  'Content-Type' => 'application/json',
  'apikeypublic' => '%%',
  'apiclientpublic' => '%%'
})

request.body = JSON.generate({
  "PaymentDetail" => {
    "Amount" => 9.85,
    "MerchantUniqueCode" => "AJSHFSAKFHASKHFA",
    "CurrencyId" => 1,
    "MerchantSuccessBackUrl" => "https://merchantsite.site.com/success",
    "MerchantFailBackUrl" => "https://merchantsite.site.com/fail",
    "Installment" => 1,
    "ChannelId" => 0,
    "TagId" => 0,
    "Half3D" => false
  },
  "Card" => {
    "OwnerName" => "John Doe",
    "Number" => "5528790000000008",
    "ExpireMonth" => "12",
    "ExpireYear" => "2030",
    "Cvv" => "123",
    "UniqueCode" => ""
  },
  "Customer" => {
    "FullName" => "FullName",
    "Phone" => "5336662211",
    "Email" => "enes@xcompany.com",
    "Country" => "Country",
    "City" => "City",
    "Address" => "Address",
    "IdentityNumber" => "IdentityNumber",
    "TaxNumber" => "TaxNumber"
  },
  "Products" => [
    {
      "ProductId" => "ProductId",
      "ProductName" => "ProductName",
      "ProductCategory" => "ProductCategory",
      "ProductDescription" => "ProductDescription",
      "ProductAmount" => 9.85
    }
  ]
})

response = http.request(request)
puts response.body
```

{% endtab %}

{% tab title="TypeScript" %}

```typescript
import axios, { AxiosResponse } from 'axios';

interface ResponseData {
  ErrorCode: number;
  Result: boolean;
  Message: string;
  Body: string;
}

let data = {
  PaymentDetail: {
    Amount: 9.85,
    MerchantUniqueCode: "AJSHFSAKFHASKHFA",
    CurrencyId: 1,
    MerchantSuccessBackUrl: "https://merchantsite.site.com/success",
    MerchantFailBackUrl: "https://merchantsite.site.com/fail",
    Installment: 1,
    ChannelId: 0,
    TagId: 0,
    Half3D: false
  },
  Card: {
    OwnerName: "John Doe",
    Number: "5528790000000008",
    ExpireMonth: "12",
    ExpireYear: "2030",
    Cvv: "123",
    UniqueCode: ""
  },
  Customer: {
    FullName: "FullName",
    Phone: "5336662211",
    Email: "enes@xcompany.com",
    Country: "Country",
    City: "City",
    Address: "Address",
    IdentityNumber: "IdentityNumber",
    TaxNumber: "TaxNumber"
  },
  Products: [{
    ProductId: "ProductId",
    ProductName: "ProductName",
    ProductCategory: "ProductCategory",
    ProductDescription: "ProductDescription",
    ProductAmount: 9.85
  }]
};

let config = {
  method: 'post',
  url: '{{Base Adres}}/api/paywall/payment/start3d',
  headers: { 
    'Content-Type': 'application/json', 
    'apikeypublic': '%%', 
    'apiclientpublic': '%%'
  },
  data : data
};

axios(config)
.then(function (response: AxiosResponse<ResponseData>) {
  console.log(response.data);
})
.catch(function (error) {
  console.log(error);
});
```

{% endtab %}

{% tab title="Curl" %}

```sh
curl --location --request POST '{{Base Adres}}/api/paywall/payment/start3d' \
--header 'Content-Type: application/json' \
--header 'apikeypublic: %%PUBLICKEY%%' \
--header 'apiclientpublic: %%PUBLICCLIENT%%' \
--data-raw '{
    "PaymentDetail": {
        "Amount": 9.85,
        "MerchantUniqueCode": "FASLSZDPOT3535BFNGI",
        "CurrencyId": 1,
        "MerchantSuccessBackUrl": "https://merchantsite.site.com/success",
        "MerchantFailBackUrl": "https://merchantsite.site.com/fail",
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "Half3D": false
    },
    "Card": {
        "OwnerName": "John Doe",
        "Number": "5528790000000008",
        "ExpireMonth": "12",
        "ExpireYear": "2030",
        "Cvv": "123",
        "UniqueCode": ""
    },
    "Customer": {
        "FullName": "FullName",
        "Phone": "5336662211",
        "Email": "enes@xcompany.com",
        "Country": "Country",
        "City": "City",
        "Address": "Address",
        "IdentityNumber": "IdentityNumber",
        "TaxNumber": "TaxNumber"
    },
    "Products": [{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 9.85
    }]
}'
```

{% endtab %}
{% endtabs %}

#### <mark style="color:blue;">Ana Dizin:</mark> <mark style="color:orange;">`PaymentDetail`</mark>

<table><thead><tr><th width="243">Parametre</th><th width="109">Tip</th><th width="161">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>Amount</td><td>decimal</td><td>Evet</td><td>Ödeme sepet tutarı.</td></tr><tr><td>MerchantUniqueCode</td><td>string</td><td>Evet</td><td>Ödeme başlatma için gönderilen istek içerisindeki MerchantUniqueCode ile aynı değer olmalıdır. Bu kod sizin tarafınızdan işleme ait verilen tekil değerdir. İptal/İade/Ödeme Sorgulama işlemlerinin hepsinde bir ödemeyi tekilleştirmeniz ve takip etmeniz için kullanılmaktadır.<br><br><mark style="color:red;">Uzunluk: 250 karakter</mark></td></tr><tr><td>TrackingCode</td><td>string</td><td>Hayır</td><td>Ödeme'nin tarafınızdaki ikincil takip numarası olarak kullanılabilir. MerchantUniqueCode parametresine ek ilişkilendirmeniz gereken ek bilgiyi bu parametre altında gönderebilirsiniz. <br><br><mark style="color:blue;"><strong>Önemli not:</strong></mark> Tekil değildir, tekrar tekrar verilebilir. İhtiyaç halinde tekilliği sizin tarafınızdan yönetilmelidir</td></tr><tr><td>MerchantSuccessBackUrl</td><td>string</td><td>Evet</td><td><mark style="color:green;">Başarılı</mark> işlem için 3D ekranının FormPost ile yönlendirileceği adres<br><br><mark style="color:red;">Uzunluk: 250 karakter</mark><br><br>Bkz: <a href="../../geri-bildirim-ornekleri/3d-bildirimi">İncele</a></td></tr><tr><td>MerchantFailBackUrl</td><td>string</td><td>Evet</td><td><mark style="color:red;">Başarısız</mark> işlem için 3D ekranının FormPost ile yönlendirileceği adres<br><br><mark style="color:red;">Uzunluk: 250 karakter</mark><br><br>Bkz: <a href="../../geri-bildirim-ornekleri/3d-bildirimi">İncele</a></td></tr><tr><td>CurrencyId</td><td>int</td><td>Evet</td><td>Para birimi<br><br>Bkz: <a href="../../sistem-verileri/para-birimleri">İncele</a></td></tr><tr><td>Installment</td><td>int</td><td>Evet</td><td>Taksit bilgisi, tek çekim için 1 gönderilmelidir.</td></tr><tr><td>Half3D</td><td>bool</td><td>Hayır</td><td>Ödemelerinizi özel bir çağrı ile finansallaştırabilmeniz için size destek olacak parametredir. Half3D parametresini true göndermeniz durumunda ödeme bitirme çağrısını siz yapana kadar ödemeniz bankada <mark style="color:yellow;">provizyonda</mark> kalacaktır.</td></tr><tr><td>ClientIP</td><td>string</td><td>Evet</td><td>İşlemi gerçekleştiren tarafın IP bilgisi. Müşteri/Kullanıcı/Üye vb.<br><br><mark style="color:red;">Uzunluk: 15 karakter</mark></td></tr><tr><td>TagId</td><td>int?</td><td>Hayır</td><td>Ödemelerinize etiketleme uygulamak istediğinizde kullanılır</td></tr><tr><td>ChannelId</td><td>int?</td><td>Hayır</td><td>Ödemelerinizin Paywall'a iletildiği kanalları ayrıştırmak istediğinizde kullanılır</td></tr><tr><td>EndOfTheDay</td><td>int?</td><td>Hayır</td><td>Gün sonu değeridir. Bağlı sağlayıcılar arasından ödemenizin sadece "Ertesi Gün" ödemeleri sağlayıcılardan geçmesini istediğinizde bu parametreyi dolu göndermelisiniz<br><br>Bkz: <a href="../../sistem-verileri/valor-gunleri-sanal-pos">İncele</a></td></tr><tr><td>RegionId</td><td>short?</td><td>Hayır</td><td>Ödemenizin hangi ülke altındaki sağlayıcılardan geçmesini istediğinizi belirtebileceğiniz parametredir. Belirtilmediği durumda ödemeniz 'Global' olarak işlenir</td></tr><tr><td>ProviderBased</td><td>bool</td><td>Hayır</td><td>Ödemenizin hangi sağlayıcıdan geçmesi gerektiğine kendi tarafınızda karar verdiğinizde kullanılır</td></tr><tr><td>ProviderKey</td><td>string</td><td>Evet/Hayır</td><td>Ödemenizin geçmesini istediğiniz sağlayıcı anahtarı<br><br>Bkz: <a href="../../sistem-verileri/sanal-pos-saglayicilar">Liste</a></td></tr><tr><td>PosBased</td><td>bool</td><td>Hayır</td><td>Ödemenizin hangi sağlayıcıdan geçmesi gerektiğine kendi tarafınızda karar verdiğinizde kullanılır</td></tr><tr><td>PosId</td><td>int</td><td>Evet/Hayır</td><td>Ödemenizin geçmesini istediğiniz sağlayıcının bağlantı kimlik numarasıdır. Paywall panelinden temin bağlı sağlayıcılar listesinde yer almaktadır</td></tr><tr><td>PayRouteByPass</td><td>bool</td><td>Hayır</td><td>Paywall panelinden ayarlanan PayRoute ayarlı bypass edilmek isteniyor mu? Bu parametreyle varsayılan ayarı ezebilir, ödeme özelinde routing tipini değiştirebilirsiniz</td></tr><tr><td>PayRouteType</td><td>short</td><td>Evet/Hayır</td><td><code>PayRouteByPass</code> parametresinin true gönderilmesi durumda, <code>PayRouteType</code> parametresi de dolu gönderilmelidir. Ödeme özelinde routing tipinin ne olacağını bu parametreyle belirtebilirsiniz<br><br>Bkz: <a href="../../sistem-verileri/payroute-tipleri">PayRoute Tipleri</a></td></tr><tr><td>RouteGroupKey</td><td>string</td><td>Evet/Hayır</td><td>Paywall panelinden PayRoute'un RouteGroup ayarlanması veya ödeme özelinde PayRoute'un bypass edilmesi ve PayRouteType'ın RouteGroup olarak belirtilmesi durumda ödemenin hangi RouteGroup özelinde işleneceğini bu parametreyle belirtmeniz gerekmektedir</td></tr><tr><td>MarketPlace <mark style="color:red;">></mark> BasketAmount</td><td>decimal</td><td>Hayır</td><td>Pazaryeri kapsamında kullanılır</td></tr><tr><td>PayWatch <mark style="color:red;">></mark><br>Watch</td><td>bool?</td><td>Hayır</td><td>Ödeme, PayWatch ile izlensin mi?</td></tr><tr><td>PayWatch <mark style="color:red;">></mark><br>PaymentStatus[]</td><td>List&#x3C;int></td><td>Evet/Hayır</td><td>Ödeme, hangi durumlardaysa izlensin</td></tr><tr><td>PayWatch <mark style="color:red;">></mark><br>ActionId</td><td>short</td><td>Evet/Hayır</td><td>İzlenme sonucunda alınacak aksiyon<br><br>Bkz: <a href="../14.-odeme-onaylama/1.-paywall-hesaplayici">İncele</a></td></tr><tr><td>PayWatch <mark style="color:red;">></mark><br>WebhookAddress</td><td>string</td><td>Evet/Hayır</td><td>İzlenme aksiyonu Webhook olarak ayarlandığında, bildirim atılacak adres</td></tr><tr><td>PayWatch <mark style="color:red;">></mark><br>WatchMin</td><td>short</td><td>Evet/Hayır</td><td>Ödeme kaç dakika sonra izlensin<br><br>Min: 5<br>Max: 20</td></tr><tr><td>PayWatchMultipleSupport</td><td>bool</td><td>Hayır</td><td>Ödeme çoklu kurallı PayWatch ile izlensin mi?</td></tr><tr><td>PayWatchMultiple <mark style="color:red;">></mark><br>Watch</td><td>bool</td><td>Evet/Hayır</td><td>Ödeme, PayWatch çoklu ile izlensin mi?</td></tr><tr><td>PayWatchMultiple <mark style="color:red;">></mark><br>Jobs[] <mark style="color:red;">></mark><br>PaymentStatus[]</td><td>List&#x3C;int></td><td>Evet/Hayır</td><td>Ödeme, hangi durumlardaysa izlensin</td></tr><tr><td>PayWatchMultiple <mark style="color:red;">></mark><br>Jobs[] <mark style="color:red;">></mark><br>ActionId</td><td>short</td><td>Evet/Hayır</td><td>İzlenme sonucunda alınacak aksiyon<br><br>Bkz: <a href="../14.-odeme-onaylama/1.-paywall-hesaplayici">İncele</a></td></tr><tr><td>PayWatchMultiple <mark style="color:red;">></mark><br>Jobs[] <mark style="color:red;">></mark><br>WebhookAddress</td><td>string</td><td>Evet/Hayır</td><td>İzlenme aksiyonu Webhook olarak ayarlandığında, bildirim atılacak adres</td></tr><tr><td>PayWatchMultiple <mark style="color:red;">></mark><br>Jobs[] <mark style="color:red;">></mark><br>WatchMin</td><td>short</td><td>Evet/Hayır</td><td>Ödeme kaç dakika sonra izlensin<br><br>Min: 2<br>Max: 20</td></tr></tbody></table>

<mark style="color:blue;">**Ana Dizin:**</mark> <mark style="color:orange;">`Card`</mark>

<table><thead><tr><th width="177">Parametre</th><th width="84">Tip</th><th width="128">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>OwnerName</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kart sahibinin adı soyadı.<br><br><mark style="color:red;">Uzunluk: 150 karakter</mark></td></tr><tr><td>Number</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kart numarası.<br><br><mark style="color:red;">Uzunluk: 20 karakter</mark></td></tr><tr><td>ExpireMonth</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı  kartın son kullanma tarihi ayı.</td></tr><tr><td>ExpireYear</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı  kartın son kullanma tarihi yılı.</td></tr><tr><td>Cvv</td><td>string</td><td>Evet/Hayır</td><td>Ödemenin alınacağı kartın güvenlik kodu.</td></tr><tr><td>ForceCvv</td><td>bool</td><td>Hayır</td><td>Sadece kayıtlı kartlar için kullanılır. Bu parametreyle kayıtlı kartlar için de kullanıcılarınızdan CVV alabilir ve ödeme isteği içersinde gönderebilirsiniz.<br><br>Kayıtlı kartlarda bu parametreyi <code>true</code> göndermezseniz, Paywall <code>UniqueCode</code> parametresi hariç tüm parametreleri görmezden gelir</td></tr><tr><td>UniqueCode</td><td>string</td><td>Evet/Hayır</td><td>Kayıtlı karta ait kimlik bilgisi. Kaydetme ve listeleme anında Paywall'dan döner</td></tr><tr><td>TempCardToken</td><td>string</td><td>Evet/Hayır</td><td>Geçici kayıtlı kart (Client-Side Tokenization) ile ödeme almak istediğinizde kullanılması gereken parametredir</td></tr><tr><td>Partner<mark style="color:red;">? ></mark><br>PartnerBased</td><td>bool?</td><td>Evet/Hayır</td><td>Kartları Partner tabanlı kurguladığınızda kullanılacak parametredir</td></tr><tr><td>Partner<mark style="color:red;">? ></mark><br>PartnerIdentity</td><td>string</td><td>Evet/Hayır</td><td>Kartları Partner tabanlı kurguladığınızda, şirketinizin Paywall'daki partnerlik kimlik bilgisidir. Bu bilgiyi Paywall panelinden edinebilirsiniz</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>Save</td><td>bool</td><td>Evet/Hayır</td><td>Ödeme anında, ödemenin başarılı olması durumunda kartın kayıt edilmesi istenirse True gönderilmelidir. True gönderildiğinde CardSave objesi altındaki diğer parametreler dikkate alınır</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>Nickname</td><td>string</td><td>Evet/Hayır</td><td>Kart'a ait takma isimdir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId1</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın ilişki değeridir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId2</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın ikinci (ağaç yapısı) ilişki değeridir</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId3</td><td>string</td><td>Evet/Hayır</td><td>Kart'ın üçüncü (ağaç yapısı) ilişki değeridir</td></tr></tbody></table>

<mark style="color:blue;">**Ana Dizin:**</mark> <mark style="color:orange;">`Customer`</mark>

<table><thead><tr><th width="174">Parametre</th><th width="110">Tip</th><th width="100">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>FullName</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait ad</td></tr><tr><td>Phone</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait GSM numarası.</td></tr><tr><td>Email</td><td>string</td><td>Evet</td><td>İşyeri tarafındaki alıcıya ait e-posta bilgisi.</td></tr><tr><td>Country</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait ülke bilgisi.</td></tr><tr><td>City</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait şehir bilgisi.</td></tr><tr><td>Address</td><td>string</td><td>Evet</td><td>Üye işyeri tarafındaki alıcıya ait kayıt adresi.</td></tr><tr><td>IdentityNumber</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait kimlik (TCKN) numarası.</td></tr><tr><td>TaxNumber</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait vergi kimlik  numarası.</td></tr><tr><td>DeviceFingerprint</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait cihaz parmak izi bilgisi</td></tr><tr><td>UserAgent</td><td>string</td><td>Hayır</td><td>Üye işyeri tarafındaki alıcıya ait kullanımda olan useragent bilgileri</td></tr><tr><td>UserRegisteredAt</td><td>datetime</td><td>Hayır</td><td>Kullanıcının sisteminizdeki kayıt tarihi</td></tr><tr><td>Location</td><td>Location</td><td>Hayır</td><td>Kullanıcının konum bilgilerinin iletildiği obje</td></tr></tbody></table>

<mark style="color:blue;">**Ana Dizin:**</mark> <mark style="color:orange;">`Product<Array>`</mark>

<table><thead><tr><th width="272">Parametre</th><th width="109">Tip</th><th width="122">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>ProductId</td><td>string</td><td>Evet</td><td>Ürün Id.</td></tr><tr><td>ProductName</td><td>string</td><td>Evet</td><td>Ürün adı.</td></tr><tr><td>ProductCategory</td><td>string</td><td>Evet</td><td>Ürün kategorisi.</td></tr><tr><td>ProductDescription</td><td>string</td><td>Evet</td><td>Ürün açıklama</td></tr><tr><td>ProductAmount</td><td>decimal</td><td>Evet</td><td>Ürün fiyat bilgisi</td></tr><tr><td>MemberId</td><td>int?</td><td>Evet/Hayır</td><td>MarketPlace modeli için zorunludur. Alt üye işyerinin Paywall sistemindeki MemberId bilgisiyle doldurulmalıdır</td></tr><tr><td>MemberEarningCalculated</td><td>bool?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirketin hak edişini siz hesapladıysanız bu parametreyi true göndermelisiniz</td></tr><tr><td>MemberEarning</td><td>decimal?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirketin hak edişini siz hesapladıysanız bu parametreyi hak ediş değerini Paywall'a bildirmelisiniz</td></tr><tr><td>MemberCustomCommission</td><td>bool</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirkete bu satış özelinde komisyon belirtmek isterseniz kullanılan parametredir</td></tr><tr><td>MemberCommission</td><td>decimal?</td><td>Evet/Hayır</td><td>Pazaryeri kapsamında, alt şirkete bu satış özelinde komisyon belirtmek isterdiğinizde, komisyon değerinin gönderildiği parametredir</td></tr></tbody></table>

<mark style="color:blue;">**Ana Dizin:**</mark> <mark style="color:orange;">`Location`</mark>

| Parametre | Tip    | Zorunlu | Açıklama                                             |
| --------- | ------ | ------- | ---------------------------------------------------- |
| Country   | string | Hayır   | Kullanıcının ülke bilgisi                            |
| City      | string | Hayır   | Kullanıcının şehir bilgisi                           |
| Region    | string | Hayır   | Kullanıcının bölge bilgisi                           |
| Lat       | string | Hayır   | Kullanıcı konumunun harita üzerindeki enlem bilgisi  |
| Lon       | string | Hayır   | Kullanıcı konumunun harita üzerindeki boylam bilgisi |

<mark style="color:blue;">**Ana Dizin:**</mark> <mark style="color:orange;">`FraudParameters`</mark>

{% hint style="info" icon="circle-video" %}
Fraud kontrolleri için FraudParameters dizini içindeki parametrelerin geçerli olması için Ana Dizin içerisinde bulunan UserFraudParameters bilgisinin <mark style="color:$success;">**True**</mark> olarak gönderilmesi gerekmektedir. Aksi durumda PaymentDetail içerisindeki bilgiler ile Fraud kontrolü yapılacaktır.
{% endhint %}

<table><thead><tr><th width="272">Parametre</th><th width="109">Tip</th><th width="122">Zorunlu</th><th>Açıklama</th></tr></thead><tbody><tr><td>BypassFraud</td><td>string</td><td>Evet</td><td>True gönderilmesi durumunda önceden ayarlanmış fraud kontrollerinin bypass edilmesini sağlar.</td></tr><tr><td>OverrideActualParameters</td><td>string</td><td>Evet</td><td>True gönderilmesi durumunda fraud kontrolleri için "PaymentDetail" dizini altındaki parametreler yerine "FraudParameters" altındaki parametreler ile işlemler devam eder ve kayıt altına alınır.</td></tr><tr><td>DeviceFingerprint</td><td>string</td><td>Hayır</td><td>Fraud kontrolüne girecek cihaz parmak izi bilgisi.</td></tr><tr><td>Amount</td><td>string</td><td>Hayır</td><td>Fraud kontrolüne girecek tutar bilgisi.</td></tr><tr><td>ClientIP</td><td>string</td><td>Hayır</td><td>Fraud kontrolüne girecek müşteri IP bilgisi.</td></tr><tr><td>CountryCode</td><td>string</td><td>Hayır</td><td>Fraud kontrolüne girecek ülke kodu bilgisi.</td></tr><tr><td>UserAgent</td><td>string</td><td>Hayır</td><td>Fraud kontrolüne girecek UserAgent'ların listesi</td></tr><tr><td>Email</td><td>string</td><td>Hayır</td><td>Fraud kontrolüne girecek e-mail adres bilgisi</td></tr><tr><td>Phone</td><td>string</td><td>Hayır</td><td>Fraud kontrolüne girecek telefon numarası bilgisi</td></tr><tr><td>UserRegisteredAt</td><td>datetime</td><td>Hayır</td><td>Kullanıcının sisteminizdeki kayıt tarihi</td></tr><tr><td>Location</td><td>Location</td><td>Hayır</td><td>Kullanıcının konum bilgilerinin iletildiği obje</td></tr></tbody></table>

<mark style="color:blue;">**Paywall Cevap**</mark>

<table><thead><tr><th width="189">Parametre</th><th width="100.33333333333331">Tip</th><th>Açıklama</th></tr></thead><tbody><tr><td>ErrorCode</td><td>int</td><td>Hata kodu. İşlem başarılı ise '0' değerini döner.</td></tr><tr><td>Result</td><td>bool</td><td>True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.</td></tr><tr><td>Message</td><td>string</td><td>İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.</td></tr><tr><td>Body</td><td>nesne</td><td>İşlem hatalıysa, bu hataya dair belirtilen kodudur.</td></tr></tbody></table>

{% tabs %}
{% tab title="JSON" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "Success",
    "Body": {
        "Message": null,
        "RedirectUrl": "https://dev-payment-agent.itspaywall.com/paywall/callback?UniqueNumber=f514466e-8060-47ef-a566-c8bf087644d2",
        "Payment": {
            "PaymentId": 20798344,
            "ActivityId": 54667483,
            "UniqueCode": "f514466e-8060-47ef-a566-c8bf087644d2",
            "MerchantUniqueKey": "8e48b6e9-5b64-4e8d-9c49-c7fc5b63f27e",
            "PaymentGatewayId": 73,
            "PaymentGatewayName": "ConnectedProviderName",
            "PaymentGatewayProviderName": "ProviderName",
            "PaymentGatewayProviderKey": "ProviderKey",
            "Products": [
                {
                    "Id": 22471169,
                    "MemberId": 22408,
                    "ProductId": "product-id-1234567890",
                    "ProductName": "Hizmet",
                    "ProductCategory": "123",
                    "ProductDescription": "Nakliye 123",
                    "ProductAmount": 104.00,
                    "IsMarketPlaceSales": false,
                    "MemberEarningCalculated": false,
                    "MemberEarning": 0
                }
            ]
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Allow",
            "Score": 0,
            "MatchedRules": ""
        }
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="JSON - Fraud Score Block" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "Success",
    "Body": {
        "Message": null,
        "RedirectUrl": "https://dev-payment-agent.itspaywall.com/paywall/callback?UniqueNumber=xxxxxx-xxxxxxx-xxxxxxx-xxxxxx",
        "Payment": {
            "PaymentId": 1918272,
            "ActivityId": 3820721,
            "UniqueCode": "87e30149-817b-42cf-a8a8-81af2af5722b",
            "MerchantUniqueKey": "96aaa33633aaaa3aaaaa3aa2aa2322a2aaaa4a21331a234aas33aaaa3aasa"
        },
        "Fraud":{ 
        "Evaluated": true,
        "Action": "Block",
        "Score": 70,
        "MatchedRules": "Temp email detected "
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="JSON - Fraud Block" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "Success",
    "Body": {
        "Message": null,
        "RedirectUrl": "https://dev-payment-agent.itspaywall.com/paywall/callback?UniqueNumber=xxxxxx-xxxxxxx-xxxxxxx-xxxxxx",
        "Payment": {
            "PaymentId": 1918272,
            "ActivityId": 3820721,
            "UniqueCode": "87e30149-817b-42cf-a8a8-81af2af5722b",
            "MerchantUniqueKey": "96aaa33633aaaa3aaaaa3aa2aa2322a2aaaa4a21331a234aas33aaaa3aasa"
        },
        "Fraud":{ 
        "Evaluated": true,
        "Action": "Block",
        "Score": 100,
        "MatchedRules": "Temp email detected "
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="JSON - Fraud Review" %}
{% code lineNumbers="true" %}

```json
{
    "ErrorCode": 0,
    "Result": true,
    "Message": "Success",
    "Body": {
        "Message": null,
        "RedirectUrl": "https://dev-payment-agent.itspaywall.com/paywall/callback?UniqueNumber=xxxxxx-xxxxxxx-xxxxxxx-xxxxxx",
        "Payment": {
            "PaymentId": 1918272,
            "ActivityId": 3820721,
            "UniqueCode": "87e30149-817b-42cf-a8a8-81af2af5722b",
            "MerchantUniqueKey": "96aaa33633aaaa3aaaaa3aa2aa2322a2aaaa4a21331a234aas33aaaa3aasa"
        },
        "Fraud":{ 
        "Evaluated": true,
        "Action": "Review",
        "Score": 0,
        "MatchedRules": "Temp email detected "
    }
}
```

{% endcode %}
{% endtab %}
{% endtabs %}
