# 2. Non-Secure

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

{% hint style="info" %}
Important: To use the payment service, you must send the parameters **apikeypublic** and **apiclientpublic** in the 'Header' field.

\
[<mark style="color:green;">**PaymentAPI Address**</mark>](/payment-orchestration-integration-document/environment.md)
{% endhint %}

**The example&#x20;**<mark style="color:green;">**JSON**</mark>**&#x20;and&#x20;**<mark style="color:green;">**sample**</mark>**&#x20;codes to be sent to the service are as follows.**

<table><thead><tr><th width="162">Parameter</th><th width="106">Type</th><th width="144">Compulsory</th><th width="403">Description</th></tr></thead><tbody><tr><td>apikeypublic</td><td>string</td><td>Yes</td><td>The Public Key you obtained from the merchant panel.</td></tr><tr><td>apiclientpublic</td><td>string</td><td>Yes</td><td>The Public Client you obtained from the merchant panel.</td></tr></tbody></table>

<mark style="color:blue;">Paywall Request Payload</mark>

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

```json5
{
    "PaymentDetail": {
        "Amount": 1.00,
        "MerchantUniqueCode": "22123222256226225",
        "TrackingCode": "TrackingCode1",
        "Half2D": false,
        "ClientIP": "0.0.0.0",
        "CurrencyId": 1,
        "Installment": 1,
        "ChannelId": 0,
        "TagId": 0,
        "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 Half2D { 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,
                Half2D = 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/startdirect";
        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/startdirect", 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/startdirect")
            .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/startdirect';
$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/startdirect'

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/startdirect")
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/startdirect',
  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/startdirect' \
--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;">**Main Directory:**</mark> <mark style="color:orange;">**`PaymentDetail`**</mark>

<table><thead><tr><th width="209">Parameter</th><th width="94">Type</th><th width="152">Compulsory</th><th>Description</th></tr></thead><tbody><tr><td>Amount</td><td>decimal</td><td>Yes</td><td>Payment cart amount.</td></tr><tr><td>MerchantUniqueCode</td><td>string</td><td>Yes</td><td><p>It must be the same value as the MerchantUniqueCode in the request sent to initiate the payment. This code is the unique value assigned to the transaction by you. It is used to uniquely identify and track a payment for cancellation, refund, or payment inquiry operations.</p><p><br><mark style="color:red;">Length: 250 characters</mark></p></td></tr><tr><td>CurrencyId</td><td>int</td><td>Yes</td><td>Currency<br><br>Bkz: <a href="/pages/bahfUMz1dqpN1ZCnpVtM">Review</a></td></tr><tr><td>Installment</td><td>int</td><td>Yes</td><td>Installment information should be sent as 1 for a single payment.</td></tr><tr><td>Half2D</td><td>bool</td><td>No</td><td>It is the parameter that will assist you in finalizing your payments through a special call. If you send the Half2D parameter as true, your payment will rema<mark style="color:yellow;">in in provisional status</mark> at the bank until you make the payment completion call.</td></tr><tr><td>ClientIP</td><td>string</td><td>Yes</td><td>The IP information of the party performing the transaction, such as the customer/user/member, etc.<br><br><mark style="color:red;">Length: 15 characters</mark></td></tr><tr><td>TagId</td><td>int?</td><td>No</td><td>It is used when you want to apply tagging to your payments.</td></tr><tr><td>ChannelId</td><td>int?</td><td>No</td><td>It is used when you want to separate the channels through which your payments are sent to Paywall.</td></tr><tr><td>EndOfTheDay</td><td>int?</td><td>No</td><td>It is the end-of-day value. You should send this parameter as filled when you want only the "Next Day" payments to pass through the providers among the linked providers.<br>Bkz: <a href="/pages/c0IpXSqmkcXaN4w2ZtY5">Review</a></td></tr><tr><td>RegionId</td><td>short?</td><td>No</td><td>It is the parameter that allows you to specify which country's providers you want your payment to pass through. If not specified, your payment will be processed as 'Global'.</td></tr><tr><td>ProviderBased</td><td>bool</td><td>No</td><td>It is used when you have decided on your own which provider should handle your payment.</td></tr><tr><td>ProviderKey</td><td>string</td><td>Yes/No</td><td>The provider key through which you want your payment to be processed.</td></tr><tr><td>MarketPlace <mark style="color:red;">></mark> BasketAmount</td><td>decimal</td><td>No</td><td>It is used within the marketplace scope.</td></tr></tbody></table>

<mark style="color:blue;">**Main Directory:**</mark>**&#x20;**<mark style="color:orange;">**Card**</mark>

<table><thead><tr><th width="177">Parameter</th><th width="97">Type</th><th width="151">Compulsory</th><th>Description</th></tr></thead><tbody><tr><td>OwnerName</td><td>string</td><td>Yes/No</td><td>The full name of the cardholder from whom the payment will be collected.<br><br><mark style="color:red;">Length: 60 characters</mark></td></tr><tr><td>Number</td><td>string</td><td>Yes/No</td><td><p>The card number from which the payment will be collected.</p><p><br><mark style="color:red;">Length: 20 characters</mark></p></td></tr><tr><td>ExpireMonth</td><td>string</td><td>Yes/No</td><td>The expiration month of the card from which the payment will be collected.</td></tr><tr><td>ExpireYear</td><td>string</td><td>Yes/No</td><td>The expiration year of the card from which the payment will be collected.</td></tr><tr><td>Cvv</td><td>string</td><td>Yes/No</td><td>The security code of the card from which the payment will be collected.</td></tr><tr><td>UniqueCode</td><td>string</td><td>Yes/No</td><td>The identity information related to the saved card. It is returned by Paywall during the save and listing process.</td></tr><tr><td>TempCardToken</td><td>string</td><td>Yes/No</td><td>It is the parameter to be used when you want to receive payment with a temporary saved card (Client-Side Tokenization).</td></tr><tr><td>Partner<mark style="color:red;">? ></mark><br>PartnerBased</td><td>bool?</td><td>Yes/No</td><td>It is the parameter to be used when you set up cards based on a partner model.</td></tr><tr><td>Partner<mark style="color:red;">? ></mark><br>PartnerIdentity</td><td>string</td><td>Yes/No</td><td>When you set up cards based on a partner model, this is your company's partnership ID in Paywall. You can obtain this information from the Paywall panel.</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>Save</td><td>bool</td><td>Yes/No</td><td>At the time of payment, if the card should be saved upon successful payment, <strong>True</strong> should be sent. When <strong>True</strong> is sent, the other parameters under the <strong>CardSave</strong> object are taken into account.</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>Nickname</td><td>string</td><td>Yes/No</td><td>It is the nickname for the card.</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId1</td><td>string</td><td>Yes/No</td><td>It is the relationship value of the card.</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId2</td><td>string</td><td>Yes/No</td><td>It is the second (tree structure) relationship value of the card.</td></tr><tr><td>CardSave<mark style="color:red;">? ></mark><br>RelationalId3</td><td>string</td><td>Yes/No</td><td>It is the third (tree structure) relationship value of the card.</td></tr></tbody></table>

<mark style="color:blue;">**Main Directory:**</mark>**&#x20;**<mark style="color:orange;">**`Customer`**</mark>

<table><thead><tr><th width="174">Parameter</th><th width="111">Type</th><th width="163">Compulsory</th><th>Description</th></tr></thead><tbody><tr><td>FullName</td><td>string</td><td>Yes</td><td>The name of the recipient on the merchant side.</td></tr><tr><td>Phone</td><td>string</td><td>Yes</td><td>The mobile phone number of the recipient on the merchant side.</td></tr><tr><td>Email</td><td>string</td><td>Yes</td><td>The email address of the recipient on the merchant side.</td></tr><tr><td>Country</td><td>string</td><td>Yes</td><td>The country information of the recipient on the merchant side.</td></tr><tr><td>City</td><td>string</td><td>Yes</td><td>The city information of the recipient on the merchant side.</td></tr><tr><td>Address</td><td>string</td><td>Yes</td><td>The registered address of the recipient on the merchant side.</td></tr><tr><td>IdentityNumber</td><td>string</td><td>No</td><td>The identity (TCKN) number of the recipient on the merchant side.</td></tr><tr><td>TaxNumber</td><td>string</td><td>No</td><td>The tax identification number of the recipient on the merchant side.</td></tr><tr><td>DeviceFingerprint</td><td>string</td><td>No</td><td>Device fingerprint information of the recipient on the merchant side.</td></tr><tr><td>UserAgent</td><td>string</td><td>No</td><td>The user agent information of the recipient on the merchant side.</td></tr><tr><td>UserRegisteredAt</td><td>datetime</td><td>No</td><td>The user's registration date in your system.</td></tr><tr><td>Location</td><td>Location</td><td>No</td><td>The object that contains the user’s location information.</td></tr></tbody></table>

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

<table><thead><tr><th width="272">Parameter</th><th width="109">Type</th><th width="146">Compulsory</th><th>Description</th></tr></thead><tbody><tr><td>ProductId</td><td>string</td><td>Yes</td><td>Product ID.</td></tr><tr><td>ProductName</td><td>string</td><td>Yes</td><td>Product name.</td></tr><tr><td>ProductCategory</td><td>string</td><td>Yes</td><td>Product category.</td></tr><tr><td>ProductDescription</td><td>string</td><td>Yes</td><td>Product description.</td></tr><tr><td>ProductAmount</td><td>decimal</td><td>Yes</td><td>Product price information.</td></tr><tr><td>MemberId</td><td>int?</td><td>Yes/No</td><td>It is mandatory for the Marketplace model. It must be filled with the MemberId information of the sub-merchant in the Paywall system.</td></tr><tr><td>MemberEarningCalculated</td><td>bool?</td><td>Yes/No</td><td>In the marketplace scope, if you have calculated the sub-merchant's entitlement, you should send this parameter as true.</td></tr><tr><td>MemberEarning</td><td>decimal?</td><td>Yes/No</td><td>In the marketplace scope, if you have calculated the sub-merchant's entitlement, you should send this parameter with the entitlement value to Paywall.</td></tr><tr><td>MemberCustomCommission</td><td>bool</td><td>Yes/No</td><td>In the marketplace scope, this is the parameter used if you want to specify a commission for the sub-merchant for this particular sale.</td></tr><tr><td>MemberCommission</td><td>decimal?</td><td>Yes/No</td><td>In the marketplace scope, this is the parameter where the commission value is sent if you want to specify a commission for the sub-merchant for this particular sale.</td></tr></tbody></table>

<mark style="color:blue;">**Main Directory:**</mark> <mark style="color:orange;">`Location`</mark>

<table><thead><tr><th width="190.6171875">Parameter</th><th width="109">Type</th><th width="172.2734375">Compulsory</th><th>Description</th></tr></thead><tbody><tr><td>Country</td><td>string</td><td>No</td><td>Kullanıcının ülke bilgisi</td></tr><tr><td>City</td><td>string</td><td>No</td><td>Kullanıcının şehir bilgisi</td></tr><tr><td>Region</td><td>string</td><td>No</td><td>Kullanıcının bölge bilgisi</td></tr><tr><td>Lat</td><td>string</td><td>No</td><td>Kullanıcı konumunun harita üzerindeki enlem bilgisi</td></tr><tr><td>Lon</td><td>string</td><td>No</td><td>Kullanıcı konumunun harita üzerindeki boylam bilgisi</td></tr></tbody></table>

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

{% hint style="info" %}
In order for the parameters within the FraudParameters directory to be valid for fraud checks, the **UserFraudParameters** field in the Main Directory must be sent as <mark style="color:$success;">**true**</mark>. Otherwise, fraud checks will be performed using the information within **PaymentDetail**.
{% 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>Evet/Hayır</td><td>Fraud kontrolüne girecek cihaz parmak izi bilgisi.</td></tr><tr><td>Amount</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek tutar bilgisi.</td></tr><tr><td>ClientIP</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek müşteri IP bilgisi.</td></tr><tr><td>CountryCode</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek ülke kodu bilgisi.</td></tr><tr><td>UserAgent</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek useragentların listesi</td></tr><tr><td>Email</td><td>string</td><td>Evet/Hayır</td><td>Fraud kontrolüne girecek e-mail adres bilgisi</td></tr><tr><td>Phone</td><td>string</td><td>Evet/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 bilgisinin 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" %}

<pre class="language-json" data-line-numbers><code class="lang-json">{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
<strong>    "Result": true,
</strong>    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "PaymentGatewayId": 1262,
            "PaymentGatewayName": "correctaccount",
            "PaymentGatewayProviderName": "Provider",
            "Card": {
                "Saved": false,
                "UniqueCode": ""
            }
        },
        "Error": {
            "ProviderErrorCode": null,
            "ProviderErrorMessage": null,
            "BankErrorCode": null,
            "BankErrorMessage": null,
            "IsHttpError": false,
            "HttpStatusCode": 200,
            "HasPaywallUnifiedError": false,
            "UnifiedByPaywall": {
                "ErrorCode": "",
                "ErrorMessage": ""
            }
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Allow",
            "Score": 0,
            "MatchedRules": "",
            "BlockedByBlacklist": false,
            "BlacklistType": null,
            "ReviewUrl": "",
            "IsAsyncFraudPending": false
        }
    }
}
</code></pre>

{% endtab %}

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

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "PaymentGatewayId": 1262,
            "PaymentGatewayName": "correctaccount",
            "PaymentGatewayProviderName": "Provider",
            "Card": {
                "Saved": false,
                "UniqueCode": ""
            }
        },
        "Error": {
            "ProviderErrorCode": null,
            "ProviderErrorMessage": null,
            "BankErrorCode": null,
            "BankErrorMessage": null
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Review",
            "Score": 0,
            "MatchedRules": "Temp email detected "        
        }    
    }
}
```

{% endcode %}
{% endtab %}

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

```json
{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "PaymentGatewayId": 1262,
            "PaymentGatewayName": "correctaccount",
            "PaymentGatewayProviderName": "Provider",
            "Card": {
                "Saved": false,
                "UniqueCode": ""
            }
        },
        "Error": {
            "ProviderErrorCode": null,
            "ProviderErrorMessage": null,
            "BankErrorCode": null,
            "BankErrorMessage": null
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Block",
            "Score": 70,
            "MatchedRules": "Temp email detected "        
        }    
    }
}
```

{% endcode %}
{% endtab %}

{% tab title="JSON - Fraud Block" %}

<pre class="language-json" data-line-numbers><code class="lang-json">{
    "ErrorCodeType": 1,
    "ErrorMessage": null,
    "ErrorCode": 0,
    "Result": true,
    "Message": "",
    "Body": {
        "Payment": {
            "PaymentId": 2095851,
            "ActivityId": 4220860,
            "UniqueCode": "1f1f6a46-d860-4282-9346-9807fb1de440",
            "MerchantUniqueKey": "3ef9ef3f-5cc8-46bf-84ee-03f665c698c6",
            "PaymentGatewayId": 1262,
            "PaymentGatewayName": "correctaccount",
            "PaymentGatewayProviderName": "Provider",
            "Card": {
                "Saved": false,
                "UniqueCode": ""
            }
        },
        "Error": {
            "ProviderErrorCode": null,
            "ProviderErrorMessage": null,
            "BankErrorCode": null,
            "BankErrorMessage": null
        },
        "Fraud": {
            "Evaluated": true,
            "Action": "Block",
            "Score": 100,
            "MatchedRules": "Temp email detected "        
        }    
<strong>    }
</strong>}
</code></pre>

{% endtab %}
{% endtabs %}


---

# 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://developer.paywall.one/payment-orchestration-integration-document/payment-service/2.-non-secure.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.
