Paywall Ödeme Orkestrasyonu
  • Hoş Geldiniz
  • 🔎Genel Bakış
    • Tanıtım
    • Sağlayıcılar
      • Sanal Pos Kullanımı
      • Payout Kullanımı
      • Kart Üretim Kullanımı
      • APM Kullanımı
  • 🔑Authentication
  • 👩‍💻Ortam
    • Test Ortamı
    • Gerçek Ortam
  • 💻Client-Side Servisler
    • 🔐Yetkilendirme
    • 1. TempCard
  • 📠Fiziksel Pos
    • 1. Sağlayıcı
      • 1. Liste
      • 2. Liste (ByRegion)
    • 2. Bağlantı
      • 1. Liste
      • 2. Detay
      • 3. Bağlantı Kur
      • 4. Güncelle
      • 5. Sil
      • 6. Bağlantı Kopar
      • 7. Tekrar Bağla
    • 3. Terminal
      • 1. Liste
      • 2. Liste (ByConnection)
      • 3. Senkronize Et
    • 4. Terminal Etiketi
      • 1. Liste
      • 2. Ekle
      • 3. Güncelle
      • 4. Sil
    • 5. Eşleşme
      • Async
        • 1. Talep Et
        • 2. Talep Onayla
        • 3. Eşleşme Kopar
        • 4. Talep İptali
      • Sync
        • 1. Talep Et
        • 2. Eşleşme Kopar
        • 3. Talep İptali
    • 6. Ödeme
      • Async
        • 1. Satış
        • 2. İptal
      • Sync
        • 1. Satış
        • 2. Satış Geri Çek
        • 3. İptal
        • 4. İptal Geri Çek
      • 1. Ödemeler
      • 2. Ödeme/Hareketler
      • 3. Ödeme/Ürünler
      • 4. Sorgulama
    • Sistem Verileri
      • Cihaz Sağlayıcı
      • Kart Markaları
      • Kart Menşei
      • Kart Tipi
      • Para Birimi
      • Ödeme Kanalı
      • Ödeme Durumu
      • Valör Günü
      • Ödeme Tipleri
      • Sağlayıcı
      • Bölge/Ülke
      • Vergi Grupları
      • İşlem Durumları (Trx)
      • İşlem Tipleri (Trx)
      • Birim Kodları
      • Ödeme Yöntemleri
  • 🧥Pazaryeri
  • 🧑‍🤝‍🧑Üye Servisi
    • Üye Yönetimi
      • 1. Üye Oluştur
      • 2. Üye Güncelle
      • 3. Üye Sil
      • 4. Üyeler
      • 5. Üye Ara
    • Üye Banka Yönetimi
      • 1. Banka Yöntemi Ekle
      • 2. Banka Yöntemi Düzenle
      • 3. Banka Yöntemi Sil
      • 4. Banka Yöntemleri
    • Üye Valör/Komisyon
      • 1. Valör/Komisyon Getir
      • 2. Valör/Komisyon Ekle
  • 💳Ödeme Servisi
    • 1. Versiyon Kontrol
    • 2. Non-Secure
    • 3. Non-Secure (Sigorta)
    • 4. 3D Ödeme
    • 5. Provizyon Kapatma
    • 6. Provizyon İptal
    • 7. Taksit Sorgula
    • 8. Bin Sorgula
    • 9. İade
    • 10. Kısmi İade
    • 11. İptal
    • 12. Ödeme Sorgulama
    • 13. Ödeme Sorgulama (Ürün)
    • 14. Ödeme Sorgulama (Track)
    • 15. Ödeme Onaylama
      • 1. Paywall-Hesaplayıcı
        • 1. Ürün Bazlı
        • 2. Ödeme Bazlı
      • 2. Platform-Hesaplayıcı
        • 1. Ürün Bazlı
        • 2. Ödeme Bazlı
    • 16. Ödeme Onay İptali
      • 1. Ürün Bazlı
      • 2. Ödeme Bazlı
    • 17. Ödeme Ürün Yönetimi
      • 1. Ürün Listesi
      • 2. Kargo Maliyeti
        • 1. Kargo Maliyetini Getir
        • 2. Kargo Maliyeti Tanımla
      • 3. İndirim
        • 1. İndirim Bilgisini Getir
        • 2. İndirim Tanımla
      • 4. Üye Kazanç
        • 1. Kazanç Arttır
        • 2. Kazanç Azalt
    • 18. Pazaryeri
      • 1. Onay Durumları
      • 2. Kazanç
        • 1. Ürün Bazlı
          • 1. Kazanç Getir
          • 2. Kazanç Ertele
          • 3. Kazanç Arttır
          • 4. Kazanç Azalt
          • 5. Tarih Güncelle
          • 6. Tekrar Dene
        • 2. Ödeme Bazlı
          • 1. Kazanç Getir
          • 2. Tekrar Dene
        • 3. Kazanç Bazlı
          • 1. Kazanç Getir
          • 2. Kazanç Ertele
          • 3. Kazanç Arttır
          • 4. Kazanç Azalt
          • 5. Tarih Güncelle
          • 6. Tekrar Dene
        • 4. Üye Bazlı
          • 1. Kazanç Getir
      • 3. Borç
        • 1. Ürün Bazlı
          • 1. Borç Getir
        • 2. Ödeme Bazlı
          • 1. Borç Getir
        • 3. Borç Bazlı
          • 1. Borç Arttır
          • 2. Borç Azalt
          • 3. Borç Sil
      • 4. Manuel Tetikleme
        • 1. Hakediş Getir
        • 2. Başlat
        • 3. Sorgula
        • 4. Tekrar Başlat
    • 19. Toplu İşlem Yöntemi
      • 1. Ödeme
        • 1. Storm 🍃
        • 2. Tsunami 🌊
      • 2. İptal
        • 1. İptal (Toplu)
        • 2. İptal (Liste)
      • 3. İade
        • 1. İade (Toplu)
        • 2. İade (Liste)
      • 4. Sorgula
      • 5. Tekrar Dene
  • 💰Cüzdan Servisleri
    • 1. Cüzdan Sahipleri
      • 1. Liste
      • 2. Oluştur
      • 3. Getir
      • 4. Sil
      • 5. Güncelleme
      • 6. Kimlik ile Sorgula
      • 7. Vergi Numarası ile Sorgula
    • 2. Cüzdan
      • 1. Getir
      • 2. Getir (By-Alias)
      • 3. Oluştur
      • 4. Güncelle
      • 5. Sil
      • 6. Dondur
      • 7. Dondurmayı Kaldır
      • 8. Para Yatırma (Wallet)
      • 9. Para Yatırma (Alias)
      • 10. Para Çekme (Wallet)
      • 11. Para Çekme (Alias)
      • 12. Para Transferi (Wallet)
      • 13. Para Transferi (Alias)
      • 14. Para Transfer (Wallet - Alias)
      • 15. Bakiye Sorgula (Wallet)
      • 16. Bakiye Sorgula (Alias)
      • 17. Satış/Harcama (Wallet)
      • 18. Satış/Harcama (Alias)
      • 19. Satış/Harcama İptal
      • 20. Satış/Harcama İade
      • 21. İşlem Kontrolü (Wallet)
      • 22. İşlem Kontrolü (Alias)
    • 3. İşlemler
      • 1. Id ile Getir
      • 2. Wallet ile Getir
    • 4. Limit Yönetimi
      • 1. Oluştur (Sistem)
      • 2. Oluştur (WalletOwner)
      • 3. Oluştur (Wallet)
      • 4. Listele
      • 5. Güncelleme
    • 5. Limit Kullanımları
      • 1. Limit Kullanım (Wallet)
      • 2. Limit Kullanım (WalletOwner)
    • 6. Hediye Bakiye
      • 1. Oluştur (Wallet)
      • 2. Oluştur (Alias)
      • 3. Sorgula (Id)
      • 4. Sorgula (Wallet)
    • 7. Kampanya
      • 1. Oluştur
      • 2. Güncelle
      • 3. Getir (İsmiyle)
      • 4. Getir (Id ile)
      • 5. Pasif Et
      • 6. Aktif Et
      • 7. Sil
      • 8. Aktif Kampanyalar
    • 8. Komisyon Yönetimi
      • 1. Oluştur (Sistem Seviyesi)
      • 2. Oluştur (Cüzdan Sahibi)
      • 3. Oluştur (Cüzdan)
      • 4. Getir (Id)
      • 5. Liste (Sistem Seviyesi)
      • 6. Liste (Cüzdan Sahibi)
      • 7. Liste (Cüzdan)
      • 8. Komisyon Güncelle
      • 9. Aktif Et
      • 10. Pasif Et
    • 9. Bloklu Bakiye
      • 1. Tanımla
      • 2. Liste
      • 3. Sil
    • Sistem Verileri
      • Cüzdan Sahip Tipleri
      • İşlem Tipleri
      • Komisyon Seviyeleri
      • Komisyon Koşul Tipleri
      • Komisyon Maliyet Tipleri
      • Cashback Tipleri
      • Limit Kategorileri
      • Limit Tipleri
      • Limit Kullanım Tipleri
  • 💸Payout Servisi
    • 1. Bakiye
    • 2. Bakiye/Ana Hesap
    • 3. Iban'a
    • 4. Kayıtlı Üye Iban (Member)
    • 5. Hesap'a
    • 6. İşlem Sorgulama
    • 7. Hesap Sorgulama
  • 🧾Mutabakat Servisi
    • Sanal Pos
      • 1. Mutabakat Yap
      • 2. Mutabakat Getir
      • 3. Gün Sonu Verileri
      • 4. Mutabakat Listesi
  • ⏰Tekrarlı Ödeme Servisi
    • 1. Tekrarlı Oluştur
    • 2. Tekrarlı Düzenle
    • 3. Tekrarlı Sorgula
    • 4. Tekrarlı Durdur
    • 5. Tekrarlı Sil
    • 6. Tekrarlı Yeniden Başlat
    • 7. Tekrarlı Ödeme Sorgula
    • 8. Tekrarlı Ödeme Kart
      • 1. Kartlar
      • 2. Kart Ekle
      • 3. Kart Sil
    • 9. Müşteri Havuzu
      • 1. Liste
      • 2. Ara
    • 10. Ürün/İçerik Havuzu
      • 1. Liste
      • 2. Ara
  • 🔗LinkQr Servisi
    • 1. Oluştur
  • 📰Ortak Ödeme Sayfası
    • 1. Oluştur
    • 2. Ödeme Sorgulama
  • 🔐Kart Saklama Servisi
    • Kart Kaydetme
      • 1. Yeni Kart
      • 2. Kayıtlı Kartlar
      • 3. Kart Sil
      • 4. Kart Güncelle
    • Kart Kaydetme (Sigorta)
      • 1. Yeni Kart
      • 2. Kayıtlı Kartlar
      • 3. Kart Sil
      • 4. Kart Güncelle
  • 📇Kart Üretim Servisi
    • 1. Hesap/Bakiye Kontrol
    • 2. Pasif Et
    • 3. Aktif Et
    • 4. Sil
    • 5. Bakiye Artır
    • 6. Bakiye Azalt
    • 7. Detay
    • 8. Kart Listesi
    • 9. Telefon Güncelle
    • 10. Açıklama Güncelle
    • 11. Kart İşlemleri
    • 12. Şifre Güncelle
    • Sanal Kart
      • 1. Oluştur
    • Fiziksel Kart
      • 1. Ekle
  • 🌏Alternatif Ödeme (APM)
    • DirectPay Tabanlı
      • 1. Ödeme Başlat
    • Otp Tabanlı
      • 1. Ödeme Onayla
    • QR Tabanlı
      • 1. Ödeme Oluştur
    • CheckoutPage Tabanlı
      • 1. Ödeme Başlat (Id)
      • 2. Ödeme Başlat (Key)
    • 1. Bağlı Sağlayıcı Liste
    • 2. Ödeme Sorgula
    • 3. İade
    • 4. Kısmi İade
  • 📖Sistem Verileri
    • Tekrarlı Ödeme
    • Geri Bildirim Tipleri
    • Ödeme Kanalları
    • Ödeme Durumları
    • Ödeme Tipleri
    • Ödeme Yöntemleri
    • Para Birimleri
    • IP Listesi
    • Kargo Tipleri
    • Pazaryeri Valör Tipleri
    • Üye Tipleri
    • Kart Hareket Tipleri
    • APM
    • İndirim Sahibi Tipleri
    • İndirim Tipleri
    • Valör Günleri (Sanal Pos)
    • Dil Seçenekleri
    • Bölgeler (Region)
    • Kart Aileleri
    • PayWatch Sabit Değerler
    • QR Format Tipleri
    • PayOut Durumları
    • Kart Üretim
    • Toplu Ödeme
  • 📚Kütüphaneler
  • #️⃣Hash Oluşturma
    • Formatlar
    • Anahtar Tipleri
  • 📶Geri Bildirim Örnekleri
    • 3D Bildirimi
    • PayWatch
    • Genel Haberleşme
    • Toplu İşlem Geri Bildirim
    • APM
    • PayOut
    • Tekrarlı Ödeme
    • Fiziksel Ödeme (Sync/Async)
  • Test Kartları
  • Paywall Test Kartları
  • Hata Kodları ve Açıklamaları
  • Sıkça Sorulan Sorular
  • English
Powered by GitBook
On this page
  1. Ödeme Servisi

4. 3D Ödeme

PayWall 3D ödeme servisine istek gönderdiğinizde, ilgili isteğin cevabında istek başarılıysa PayWall ödeme agent linki dönülmektedir. Bu linki uygulamanızda açmalısınız. Link 3D ekranına yönlendirir

Previous3. Non-Secure (Sigorta)Next5. Provizyon Kapatma

Last updated 11 days ago

POST {{Base Adres}}/api/paywall/payment/start3d

Önemli: 3D Ödeme servisini kullanabilmeniz için 'Header' alanında 'apikeypublic' ve 'apiclientpublic' parametrelerini göndermeniz gerekmektedir.

Servise gönderilecek örnek JSON ve örnek kodlar aşağıdaki gibidir.

Parametre
Tip
Zorunlu
Açıklama

apikeypublic

string

Evet

Üye işyeri panelinden temin etmiş olduğunuz Public Key.

apiclientpublic

string

Evet

Üye işyeri panelinden temin etmiş olduğunuz Public Client.

Paywall İstek Payload

{
    "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",
        "MarketPlace": {
            "BasketAmount": 1.00
        }
    },
    "Card":{
        "OwnerName":"Iyzico Kartı",
        "Number":"5528790000000008",
        "ExpireMonth":"12",
        "ExpireYear":"2030",
        "Cvv":"123",
        "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"
    },
    "Products":[{
        "ProductId": "ProductId",
        "ProductName": "ProductName",
        "ProductCategory": "ProductCategory",
        "ProductDescription": "ProductDescription",
        "ProductAmount": 1.0,
        "MemberId": 0,
        "DiscountOwnerType": 0,
        "DiscountType": 0,
        "DiscountValue": 0,
        "CargoType": 0,
        "CargoCurrencyId": 0,
        "CargoCost": 0,
        "MemberCustomCommission": false,
        "MemberCommission": 0,
        "MemberEarningCalculated": false,
        "MemberEarning": 0
    }]
}
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",
                Installement = 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/startdirect";
        var response = await client.PostAsync(url, data);

        string result = response.Content.ReadAsStringAsync().Result;
        Console.WriteLine(result);
    }
}
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)
}
<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>
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());
    }
}
<?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);
?>
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}')
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
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);
});
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
    }]
}'

Ana Dizin: PaymentDetail

Parametre
Tip
Zorunlu
Açıklama

Amount

decimal

Evet

Ödeme sepet tutarı.

MerchantUniqueCode

string

Evet

Ö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. Uzunluk: 250 karakter

TrackingCode

string

Hayır

Ö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. Önemli not: Tekil değildir, tekrar tekrar verilebilir. İhtiyaç halinde tekilliği sizin tarafınızdan yönetilmelidir

MerchantSuccessBackUrl

string

Evet

MerchantFailBackUrl

string

Evet

CurrencyId

int

Evet

Installment

int

Evet

Taksit bilgisi, tek çekim için 1 gönderilmelidir.

Half3D

bool

Hayır

Ö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 provizyonda kalacaktır.

ClientIP

string

Evet

İşlemi gerçekleştiren tarafın IP bilgisi. Müşteri/Kullanıcı/Üye vb. Uzunluk: 15 karakter

TagId

int?

Hayır

Ödemelerinize etiketleme uygulamak istediğinizde kullanılır

ChannelId

int?

Hayır

Ödemelerinizin Paywall'a iletildiği kanalları ayrıştırmak istediğinizde kullanılır

EndOfTheDay

int?

Hayır

RegionId

short?

Hayır

Ödemenizin hangi ülke altındaki sağlayıcılardan geçmesini istediğinizi belirtebileceğiniz parametredir. Belirtilmediği durumda ödemeniz 'Global' olarak işlenir

ProviderBased

bool

Hayır

Ödemenizin hangi sağlayıcıdan geçmesi gerektiğine kendi tarafınızda karar verdiğinizde kullanılır

ProviderKey

string

Evet/Hayır

Ödemenizin geçmesini istediğiniz sağlayıcı anahtarı

MarketPlace > BasketAmount

decimal

Hayır

Pazaryeri kapsamında kullanılır

PayWatch > Watch

bool?

Hayır

Ödeme, PayWatch ile izlensin mi?

PayWatch > PaymentStatus[]

List<int>

Evet/Hayır

Ödeme, hangi durumlardaysa izlensin

PayWatch > ActionId

short

Evet/Hayır

PayWatch > WebhookAddress

string

Evet/Hayır

İzlenme aksiyonu Webhook olarak ayarlandığında, bildirim atılacak adres

PayWatch > WatchMin

short

Evet/Hayır

Ödeme kaç dakika sonra izlensin Min: 5 Max: 20

PayWatchMultipleSupport

bool

Hayır

Ödeme çoklu kurallı PayWatch ile izlensin mi?

PayWatchMultiple > Watch

bool

Evet/Hayır

Ödeme, PayWatch çoklu ile izlensin mi?

PayWatchMultiple > Jobs[] > PaymentStatus[]

List<int>

Evet/Hayır

Ödeme, hangi durumlardaysa izlensin

PayWatchMultiple > Jobs[] > ActionId

short

Evet/Hayır

PayWatchMultiple > Jobs[] > WebhookAddress

string

Evet/Hayır

İzlenme aksiyonu Webhook olarak ayarlandığında, bildirim atılacak adres

PayWatchMultiple > Jobs[] > WatchMin

short

Evet/Hayır

Ödeme kaç dakika sonra izlensin Min: 2 Max: 20

Ana Dizin: Card

Parametre
Tip
Zorunlu
Açıklama

OwnerName

string

Evet/Hayır

Ödemenin alınacağı kart sahibinin adı soyadı. Uzunluk: 60 karakter

Number

string

Evet/Hayır

Ödemenin alınacağı kart numarası. Uzunluk: 20 karakter

ExpireMonth

string

Evet/Hayır

Ödemenin alınacağı kartın son kullanma tarihi ayı.

ExpireYear

string

Evet/Hayır

Ödemenin alınacağı kartın son kullanma tarihi yılı.

Cvv

string

Evet/Hayır

Ödemenin alınacağı kartın güvenlik kodu.

UniqueCode

string

Evet/Hayır

Kayıtlı karta ait kimlik bilgisi. Kaydetme ve listeleme anında Paywall'dan döner

TempCardToken

string

Evet/Hayır

Geçici kayıtlı kart (Client-Side Tokenization) ile ödeme almak istediğinizde kullanılması gereken parametredir

Partner? > PartnerBased

bool?

Evet/Hayır

Kartları Partner tabanlı kurguladığınızda kullanılacak parametredir

Partner? > PartnerIdentity

string

Evet/Hayır

Kartları Partner tabanlı kurguladığınızda, şirketinizin Paywall'daki partnerlik kimlik bilgisidir. Bu bilgiyi Paywall panelinden edinebilirsiniz

CardSave? > Save

bool

Evet/Hayır

Ö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

CardSave? > Nickname

string

Evet/Hayır

Kart'a ait takma isimdir

CardSave? > RelationalId1

string

Evet/Hayır

Kart'ın ilişki değeridir

CardSave? > RelationalId2

string

Evet/Hayır

Kart'ın ikinci (ağaç yapısı) ilişki değeridir

CardSave? > RelationalId3

string

Evet/Hayır

Kart'ın üçüncü (ağaç yapısı) ilişki değeridir

Ana Dizin: Customer

Parametre
Tip
Zorunlu
Açıklama

FullName

string

Evet

Üye işyeri tarafındaki alıcıya ait ad

Phone

string

Evet

Üye işyeri tarafındaki alıcıya ait GSM numarası.

Email

string

Evet

İşyeri tarafındaki alıcıya ait e-posta bilgisi.

Country

string

Evet

Üye işyeri tarafındaki alıcıya ait ülke bilgisi.

City

string

Evet

Üye işyeri tarafındaki alıcıya ait şehir bilgisi.

Address

string

Evet

Üye işyeri tarafındaki alıcıya ait kayıt adresi.

IdentityNumber

string

Hayır

Üye işyeri tarafındaki alıcıya ait kimlik (TCKN) numarası.

TaxNumber

string

Hayır

Üye işyeri tarafındaki alıcıya ait vergi kimlik numarası.

Ana Dizin: Product<Array>

Parametre
Tip
Zorunlu
Açıklama

ProductId

string

Evet

Ürün Id.

ProductName

string

Evet

Ürün adı.

ProductCategory

string

Evet

Ürün kategorisi.

ProductDescription

string

Evet

Ürün açıklama

ProductAmount

decimal

Evet

Ürün fiyat bilgisi

DiscountOwnerType

int

Hayır

DiscountType

int

Hayır

DiscountValue

decimal

Hayır

Ürüne uygulanan indirim değer. Eğer Type 1 ve değer 10 ise 10(TL/USD/EURO) uygular ancak Type 2 ise %10 uygular

CargoType

int

Hayır

CargoCurrencyId

int

Hayır

Kargo maliyetinin para birimi

CargoCost

decimal

Hayır

Kargo maliyeti

MemberId

int?

Evet/Hayır

MarketPlace modeli için zorunludur. Alt üye işyerinin Paywall sistemindeki MemberId bilgisiyle doldurulmalıdır

MemberEarningCalculated

bool?

Evet/Hayır

Pazaryeri kapsamında, alt şirketin hak edişini siz hesapladıysanız bu parametreyi true göndermelisiniz

MemberEarning

decimal?

Evet/Hayır

Pazaryeri kapsamında, alt şirketin hak edişini siz hesapladıysanız bu parametreyi hak ediş değerini Paywall'a bildirmelisiniz

MemberCustomCommission

bool

Evet/Hayır

Pazaryeri kapsamında, alt şirkete bu satış özelinde komisyon belirtmek isterseniz kullanılan parametredir

MemberCommission

decimal?

Evet/Hayır

Pazaryeri kapsamında, alt şirkete bu satış özelinde komisyon belirtmek isterdiğinizde, komisyon değerinin gönderildiği parametredir

Paywall Cevap

Parametre
Tip
Açıklama

ErrorCode

int

Hata kodu. İşlem başarılı ise '0' değerini döner.

Result

bool

True ya da false değeri döner. İşlem başarılı iste 'true' değerini döner.

Message

string

İşlem hatalıysa, bu hataya dair belirtilen mesajdır, locale parametresine göre dil desteği sunar.

Body

nesne

İşlem hatalıysa, bu hataya dair belirtilen kodudur.

{
    "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"
        }
    }
}

Başarılı işlem için 3D ekranının FormPost ile yönlendirileceği adres Uzunluk: 250 karakter Bkz:

Başarısız işlem için 3D ekranının FormPost ile yönlendirileceği adres Uzunluk: 250 karakter Bkz:

Para birimi Bkz:

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 Bkz:

İzlenme sonucunda alınacak aksiyon Bkz:

İzlenme sonucunda alınacak aksiyon Bkz:

Ürüne indirim uygulayan taraf Bkz:

Ürüne uygulanan indirim tipi Bkz:

Ürüne ait kargo tipi Bkz:

💳
PaymentAPI Adresi
İncele
İncele
İncele
İncele
İncele
İncele
İndirim Sahibi Tipleri
İndirim Tipleri
Kargo Tipleri