curl --request POST \
--url https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay \
--header 'Content-Type: application/json' \
--data '
{
"amount": {
"amount": 15000,
"currency": "TRY"
},
"installment": 1,
"card": {
"holder_name": "<string>",
"number": "<string>",
"expire_month": "<string>",
"expire_year": "<string>",
"cvv": "<string>"
},
"callback_url": "https://example.com/3ds/return",
"external_id": "ORDER-1001",
"basket_id": "BASKET-2026-001",
"description": "<string>",
"buyer": {
"id": "cust-001",
"name": "Ahmet",
"surname": "Yılmaz",
"email": "musteri@example.com",
"phone": "+905551112233",
"ip_address": "85.105.10.10",
"identity_number": "12345678901"
},
"billing_address": {
"contact_name": "Ahmet Yılmaz",
"city": "İstanbul",
"country": "TR",
"address": "Maslak Mh. ...",
"postal_code": "34485"
},
"shipping_address": {
"contact_name": "Ahmet Yılmaz",
"city": "İstanbul",
"country": "TR",
"address": "Maslak Mh. ...",
"postal_code": "34485"
},
"basket_items": [
{
"name": "Kablosuz kulaklık",
"price": 7500,
"quantity": 2,
"id": "SKU-001"
}
],
"cancel_url": "https://example.com/checkout/cancel",
"return_url": "<string>",
"operation_type": "sale",
"extra_properties": {}
}
'import requests
url = "https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay"
payload = {
"amount": {
"amount": 15000,
"currency": "TRY"
},
"installment": 1,
"card": {
"holder_name": "<string>",
"number": "<string>",
"expire_month": "<string>",
"expire_year": "<string>",
"cvv": "<string>"
},
"callback_url": "https://example.com/3ds/return",
"external_id": "ORDER-1001",
"basket_id": "BASKET-2026-001",
"description": "<string>",
"buyer": {
"id": "cust-001",
"name": "Ahmet",
"surname": "Yılmaz",
"email": "musteri@example.com",
"phone": "+905551112233",
"ip_address": "85.105.10.10",
"identity_number": "12345678901"
},
"billing_address": {
"contact_name": "Ahmet Yılmaz",
"city": "İstanbul",
"country": "TR",
"address": "Maslak Mh. ...",
"postal_code": "34485"
},
"shipping_address": {
"contact_name": "Ahmet Yılmaz",
"city": "İstanbul",
"country": "TR",
"address": "Maslak Mh. ...",
"postal_code": "34485"
},
"basket_items": [
{
"name": "Kablosuz kulaklık",
"price": 7500,
"quantity": 2,
"id": "SKU-001"
}
],
"cancel_url": "https://example.com/checkout/cancel",
"return_url": "<string>",
"operation_type": "sale",
"extra_properties": {}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
amount: {amount: 15000, currency: 'TRY'},
installment: 1,
card: {
holder_name: '<string>',
number: '<string>',
expire_month: '<string>',
expire_year: '<string>',
cvv: '<string>'
},
callback_url: 'https://example.com/3ds/return',
external_id: 'ORDER-1001',
basket_id: 'BASKET-2026-001',
description: '<string>',
buyer: {
id: 'cust-001',
name: 'Ahmet',
surname: 'Yılmaz',
email: 'musteri@example.com',
phone: '+905551112233',
ip_address: '85.105.10.10',
identity_number: '12345678901'
},
billing_address: {
contact_name: 'Ahmet Yılmaz',
city: 'İstanbul',
country: 'TR',
address: 'Maslak Mh. ...',
postal_code: '34485'
},
shipping_address: {
contact_name: 'Ahmet Yılmaz',
city: 'İstanbul',
country: 'TR',
address: 'Maslak Mh. ...',
postal_code: '34485'
},
basket_items: [{name: 'Kablosuz kulaklık', price: 7500, quantity: 2, id: 'SKU-001'}],
cancel_url: 'https://example.com/checkout/cancel',
return_url: '<string>',
operation_type: 'sale',
extra_properties: {}
})
};
fetch('https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => [
'amount' => 15000,
'currency' => 'TRY'
],
'installment' => 1,
'card' => [
'holder_name' => '<string>',
'number' => '<string>',
'expire_month' => '<string>',
'expire_year' => '<string>',
'cvv' => '<string>'
],
'callback_url' => 'https://example.com/3ds/return',
'external_id' => 'ORDER-1001',
'basket_id' => 'BASKET-2026-001',
'description' => '<string>',
'buyer' => [
'id' => 'cust-001',
'name' => 'Ahmet',
'surname' => 'Yılmaz',
'email' => 'musteri@example.com',
'phone' => '+905551112233',
'ip_address' => '85.105.10.10',
'identity_number' => '12345678901'
],
'billing_address' => [
'contact_name' => 'Ahmet Yılmaz',
'city' => 'İstanbul',
'country' => 'TR',
'address' => 'Maslak Mh. ...',
'postal_code' => '34485'
],
'shipping_address' => [
'contact_name' => 'Ahmet Yılmaz',
'city' => 'İstanbul',
'country' => 'TR',
'address' => 'Maslak Mh. ...',
'postal_code' => '34485'
],
'basket_items' => [
[
'name' => 'Kablosuz kulaklık',
'price' => 7500,
'quantity' => 2,
'id' => 'SKU-001'
]
],
'cancel_url' => 'https://example.com/checkout/cancel',
'return_url' => '<string>',
'operation_type' => 'sale',
'extra_properties' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay"
payload := strings.NewReader("{\n \"amount\": {\n \"amount\": 15000,\n \"currency\": \"TRY\"\n },\n \"installment\": 1,\n \"card\": {\n \"holder_name\": \"<string>\",\n \"number\": \"<string>\",\n \"expire_month\": \"<string>\",\n \"expire_year\": \"<string>\",\n \"cvv\": \"<string>\"\n },\n \"callback_url\": \"https://example.com/3ds/return\",\n \"external_id\": \"ORDER-1001\",\n \"basket_id\": \"BASKET-2026-001\",\n \"description\": \"<string>\",\n \"buyer\": {\n \"id\": \"cust-001\",\n \"name\": \"Ahmet\",\n \"surname\": \"Yılmaz\",\n \"email\": \"musteri@example.com\",\n \"phone\": \"+905551112233\",\n \"ip_address\": \"85.105.10.10\",\n \"identity_number\": \"12345678901\"\n },\n \"billing_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"shipping_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"basket_items\": [\n {\n \"name\": \"Kablosuz kulaklık\",\n \"price\": 7500,\n \"quantity\": 2,\n \"id\": \"SKU-001\"\n }\n ],\n \"cancel_url\": \"https://example.com/checkout/cancel\",\n \"return_url\": \"<string>\",\n \"operation_type\": \"sale\",\n \"extra_properties\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay")
.header("Content-Type", "application/json")
.body("{\n \"amount\": {\n \"amount\": 15000,\n \"currency\": \"TRY\"\n },\n \"installment\": 1,\n \"card\": {\n \"holder_name\": \"<string>\",\n \"number\": \"<string>\",\n \"expire_month\": \"<string>\",\n \"expire_year\": \"<string>\",\n \"cvv\": \"<string>\"\n },\n \"callback_url\": \"https://example.com/3ds/return\",\n \"external_id\": \"ORDER-1001\",\n \"basket_id\": \"BASKET-2026-001\",\n \"description\": \"<string>\",\n \"buyer\": {\n \"id\": \"cust-001\",\n \"name\": \"Ahmet\",\n \"surname\": \"Yılmaz\",\n \"email\": \"musteri@example.com\",\n \"phone\": \"+905551112233\",\n \"ip_address\": \"85.105.10.10\",\n \"identity_number\": \"12345678901\"\n },\n \"billing_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"shipping_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"basket_items\": [\n {\n \"name\": \"Kablosuz kulaklık\",\n \"price\": 7500,\n \"quantity\": 2,\n \"id\": \"SKU-001\"\n }\n ],\n \"cancel_url\": \"https://example.com/checkout/cancel\",\n \"return_url\": \"<string>\",\n \"operation_type\": \"sale\",\n \"extra_properties\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": {\n \"amount\": 15000,\n \"currency\": \"TRY\"\n },\n \"installment\": 1,\n \"card\": {\n \"holder_name\": \"<string>\",\n \"number\": \"<string>\",\n \"expire_month\": \"<string>\",\n \"expire_year\": \"<string>\",\n \"cvv\": \"<string>\"\n },\n \"callback_url\": \"https://example.com/3ds/return\",\n \"external_id\": \"ORDER-1001\",\n \"basket_id\": \"BASKET-2026-001\",\n \"description\": \"<string>\",\n \"buyer\": {\n \"id\": \"cust-001\",\n \"name\": \"Ahmet\",\n \"surname\": \"Yılmaz\",\n \"email\": \"musteri@example.com\",\n \"phone\": \"+905551112233\",\n \"ip_address\": \"85.105.10.10\",\n \"identity_number\": \"12345678901\"\n },\n \"billing_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"shipping_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"basket_items\": [\n {\n \"name\": \"Kablosuz kulaklık\",\n \"price\": 7500,\n \"quantity\": 2,\n \"id\": \"SKU-001\"\n }\n ],\n \"cancel_url\": \"https://example.com/checkout/cancel\",\n \"return_url\": \"<string>\",\n \"operation_type\": \"sale\",\n \"extra_properties\": {}\n}"
response = http.request(request)
puts response.read_body{
"transaction_id": "8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6",
"status": "completed",
"is_success": true,
"message": "İşlem başarıyla tamamlandı",
"error_code": "bank_declined",
"provider_error_code": "51",
"extra_properties": {}
}{
"type": "https://docs.payven.com.tr/errors/bad_request",
"title": "Geçersiz istek",
"status": 400,
"code": "bad_request",
"detail": "amount.amount alanı zorunlu.",
"correlation_id": "9f1c8e76-2a3b-4f12-9c8d-12cb24a8a8a8"
}{
"type": "https://docs.payven.com.tr/errors/invalid_token",
"title": "Geçersiz token",
"status": 401,
"code": "invalid_token",
"detail": "Access token geçersiz veya süresi dolmuş — refresh edin."
}{
"type": "https://docs.payven.com.tr/errors/forbidden",
"title": "Yetki yok",
"status": 403,
"code": "forbidden",
"detail": "Bu rol bu kaynağı göremez."
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "https://docs.payven.com.tr/errors/idempotency_key_in_use",
"title": "Idempotency-Key çakışması",
"status": 409,
"code": "idempotency_key_in_use",
"detail": "Bu Idempotency-Key daha önce farklı bir istek gövdesi ile kullanıldı."
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "https://docs.payven.com.tr/errors/rate_limit_exceeded",
"title": "İstek limiti aşıldı",
"status": 429,
"code": "rate_limit_exceeded"
}{
"type": "https://docs.payven.com.tr/errors/internal_server_error",
"title": "Sunucu hatası",
"status": 500,
"code": "internal_server_error"
}{
"type": "https://docs.payven.com.tr/errors/connector_unavailable",
"title": "Konnektör erişilemez",
"status": 503,
"code": "connector_unavailable"
}Hosted checkout oturumunda ödeme yap
curl --request POST \
--url https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay \
--header 'Content-Type: application/json' \
--data '
{
"amount": {
"amount": 15000,
"currency": "TRY"
},
"installment": 1,
"card": {
"holder_name": "<string>",
"number": "<string>",
"expire_month": "<string>",
"expire_year": "<string>",
"cvv": "<string>"
},
"callback_url": "https://example.com/3ds/return",
"external_id": "ORDER-1001",
"basket_id": "BASKET-2026-001",
"description": "<string>",
"buyer": {
"id": "cust-001",
"name": "Ahmet",
"surname": "Yılmaz",
"email": "musteri@example.com",
"phone": "+905551112233",
"ip_address": "85.105.10.10",
"identity_number": "12345678901"
},
"billing_address": {
"contact_name": "Ahmet Yılmaz",
"city": "İstanbul",
"country": "TR",
"address": "Maslak Mh. ...",
"postal_code": "34485"
},
"shipping_address": {
"contact_name": "Ahmet Yılmaz",
"city": "İstanbul",
"country": "TR",
"address": "Maslak Mh. ...",
"postal_code": "34485"
},
"basket_items": [
{
"name": "Kablosuz kulaklık",
"price": 7500,
"quantity": 2,
"id": "SKU-001"
}
],
"cancel_url": "https://example.com/checkout/cancel",
"return_url": "<string>",
"operation_type": "sale",
"extra_properties": {}
}
'import requests
url = "https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay"
payload = {
"amount": {
"amount": 15000,
"currency": "TRY"
},
"installment": 1,
"card": {
"holder_name": "<string>",
"number": "<string>",
"expire_month": "<string>",
"expire_year": "<string>",
"cvv": "<string>"
},
"callback_url": "https://example.com/3ds/return",
"external_id": "ORDER-1001",
"basket_id": "BASKET-2026-001",
"description": "<string>",
"buyer": {
"id": "cust-001",
"name": "Ahmet",
"surname": "Yılmaz",
"email": "musteri@example.com",
"phone": "+905551112233",
"ip_address": "85.105.10.10",
"identity_number": "12345678901"
},
"billing_address": {
"contact_name": "Ahmet Yılmaz",
"city": "İstanbul",
"country": "TR",
"address": "Maslak Mh. ...",
"postal_code": "34485"
},
"shipping_address": {
"contact_name": "Ahmet Yılmaz",
"city": "İstanbul",
"country": "TR",
"address": "Maslak Mh. ...",
"postal_code": "34485"
},
"basket_items": [
{
"name": "Kablosuz kulaklık",
"price": 7500,
"quantity": 2,
"id": "SKU-001"
}
],
"cancel_url": "https://example.com/checkout/cancel",
"return_url": "<string>",
"operation_type": "sale",
"extra_properties": {}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
amount: {amount: 15000, currency: 'TRY'},
installment: 1,
card: {
holder_name: '<string>',
number: '<string>',
expire_month: '<string>',
expire_year: '<string>',
cvv: '<string>'
},
callback_url: 'https://example.com/3ds/return',
external_id: 'ORDER-1001',
basket_id: 'BASKET-2026-001',
description: '<string>',
buyer: {
id: 'cust-001',
name: 'Ahmet',
surname: 'Yılmaz',
email: 'musteri@example.com',
phone: '+905551112233',
ip_address: '85.105.10.10',
identity_number: '12345678901'
},
billing_address: {
contact_name: 'Ahmet Yılmaz',
city: 'İstanbul',
country: 'TR',
address: 'Maslak Mh. ...',
postal_code: '34485'
},
shipping_address: {
contact_name: 'Ahmet Yılmaz',
city: 'İstanbul',
country: 'TR',
address: 'Maslak Mh. ...',
postal_code: '34485'
},
basket_items: [{name: 'Kablosuz kulaklık', price: 7500, quantity: 2, id: 'SKU-001'}],
cancel_url: 'https://example.com/checkout/cancel',
return_url: '<string>',
operation_type: 'sale',
extra_properties: {}
})
};
fetch('https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'amount' => [
'amount' => 15000,
'currency' => 'TRY'
],
'installment' => 1,
'card' => [
'holder_name' => '<string>',
'number' => '<string>',
'expire_month' => '<string>',
'expire_year' => '<string>',
'cvv' => '<string>'
],
'callback_url' => 'https://example.com/3ds/return',
'external_id' => 'ORDER-1001',
'basket_id' => 'BASKET-2026-001',
'description' => '<string>',
'buyer' => [
'id' => 'cust-001',
'name' => 'Ahmet',
'surname' => 'Yılmaz',
'email' => 'musteri@example.com',
'phone' => '+905551112233',
'ip_address' => '85.105.10.10',
'identity_number' => '12345678901'
],
'billing_address' => [
'contact_name' => 'Ahmet Yılmaz',
'city' => 'İstanbul',
'country' => 'TR',
'address' => 'Maslak Mh. ...',
'postal_code' => '34485'
],
'shipping_address' => [
'contact_name' => 'Ahmet Yılmaz',
'city' => 'İstanbul',
'country' => 'TR',
'address' => 'Maslak Mh. ...',
'postal_code' => '34485'
],
'basket_items' => [
[
'name' => 'Kablosuz kulaklık',
'price' => 7500,
'quantity' => 2,
'id' => 'SKU-001'
]
],
'cancel_url' => 'https://example.com/checkout/cancel',
'return_url' => '<string>',
'operation_type' => 'sale',
'extra_properties' => [
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay"
payload := strings.NewReader("{\n \"amount\": {\n \"amount\": 15000,\n \"currency\": \"TRY\"\n },\n \"installment\": 1,\n \"card\": {\n \"holder_name\": \"<string>\",\n \"number\": \"<string>\",\n \"expire_month\": \"<string>\",\n \"expire_year\": \"<string>\",\n \"cvv\": \"<string>\"\n },\n \"callback_url\": \"https://example.com/3ds/return\",\n \"external_id\": \"ORDER-1001\",\n \"basket_id\": \"BASKET-2026-001\",\n \"description\": \"<string>\",\n \"buyer\": {\n \"id\": \"cust-001\",\n \"name\": \"Ahmet\",\n \"surname\": \"Yılmaz\",\n \"email\": \"musteri@example.com\",\n \"phone\": \"+905551112233\",\n \"ip_address\": \"85.105.10.10\",\n \"identity_number\": \"12345678901\"\n },\n \"billing_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"shipping_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"basket_items\": [\n {\n \"name\": \"Kablosuz kulaklık\",\n \"price\": 7500,\n \"quantity\": 2,\n \"id\": \"SKU-001\"\n }\n ],\n \"cancel_url\": \"https://example.com/checkout/cancel\",\n \"return_url\": \"<string>\",\n \"operation_type\": \"sale\",\n \"extra_properties\": {}\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay")
.header("Content-Type", "application/json")
.body("{\n \"amount\": {\n \"amount\": 15000,\n \"currency\": \"TRY\"\n },\n \"installment\": 1,\n \"card\": {\n \"holder_name\": \"<string>\",\n \"number\": \"<string>\",\n \"expire_month\": \"<string>\",\n \"expire_year\": \"<string>\",\n \"cvv\": \"<string>\"\n },\n \"callback_url\": \"https://example.com/3ds/return\",\n \"external_id\": \"ORDER-1001\",\n \"basket_id\": \"BASKET-2026-001\",\n \"description\": \"<string>\",\n \"buyer\": {\n \"id\": \"cust-001\",\n \"name\": \"Ahmet\",\n \"surname\": \"Yılmaz\",\n \"email\": \"musteri@example.com\",\n \"phone\": \"+905551112233\",\n \"ip_address\": \"85.105.10.10\",\n \"identity_number\": \"12345678901\"\n },\n \"billing_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"shipping_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"basket_items\": [\n {\n \"name\": \"Kablosuz kulaklık\",\n \"price\": 7500,\n \"quantity\": 2,\n \"id\": \"SKU-001\"\n }\n ],\n \"cancel_url\": \"https://example.com/checkout/cancel\",\n \"return_url\": \"<string>\",\n \"operation_type\": \"sale\",\n \"extra_properties\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://vpos-sandbox.payven.com.tr/api/v1/checkout/sessions/{session_id}/pay")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"amount\": {\n \"amount\": 15000,\n \"currency\": \"TRY\"\n },\n \"installment\": 1,\n \"card\": {\n \"holder_name\": \"<string>\",\n \"number\": \"<string>\",\n \"expire_month\": \"<string>\",\n \"expire_year\": \"<string>\",\n \"cvv\": \"<string>\"\n },\n \"callback_url\": \"https://example.com/3ds/return\",\n \"external_id\": \"ORDER-1001\",\n \"basket_id\": \"BASKET-2026-001\",\n \"description\": \"<string>\",\n \"buyer\": {\n \"id\": \"cust-001\",\n \"name\": \"Ahmet\",\n \"surname\": \"Yılmaz\",\n \"email\": \"musteri@example.com\",\n \"phone\": \"+905551112233\",\n \"ip_address\": \"85.105.10.10\",\n \"identity_number\": \"12345678901\"\n },\n \"billing_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"shipping_address\": {\n \"contact_name\": \"Ahmet Yılmaz\",\n \"city\": \"İstanbul\",\n \"country\": \"TR\",\n \"address\": \"Maslak Mh. ...\",\n \"postal_code\": \"34485\"\n },\n \"basket_items\": [\n {\n \"name\": \"Kablosuz kulaklık\",\n \"price\": 7500,\n \"quantity\": 2,\n \"id\": \"SKU-001\"\n }\n ],\n \"cancel_url\": \"https://example.com/checkout/cancel\",\n \"return_url\": \"<string>\",\n \"operation_type\": \"sale\",\n \"extra_properties\": {}\n}"
response = http.request(request)
puts response.read_body{
"transaction_id": "8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6",
"status": "completed",
"is_success": true,
"message": "İşlem başarıyla tamamlandı",
"error_code": "bank_declined",
"provider_error_code": "51",
"extra_properties": {}
}{
"type": "https://docs.payven.com.tr/errors/bad_request",
"title": "Geçersiz istek",
"status": 400,
"code": "bad_request",
"detail": "amount.amount alanı zorunlu.",
"correlation_id": "9f1c8e76-2a3b-4f12-9c8d-12cb24a8a8a8"
}{
"type": "https://docs.payven.com.tr/errors/invalid_token",
"title": "Geçersiz token",
"status": 401,
"code": "invalid_token",
"detail": "Access token geçersiz veya süresi dolmuş — refresh edin."
}{
"type": "https://docs.payven.com.tr/errors/forbidden",
"title": "Yetki yok",
"status": 403,
"code": "forbidden",
"detail": "Bu rol bu kaynağı göremez."
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "https://docs.payven.com.tr/errors/idempotency_key_in_use",
"title": "Idempotency-Key çakışması",
"status": 409,
"code": "idempotency_key_in_use",
"detail": "Bu Idempotency-Key daha önce farklı bir istek gövdesi ile kullanıldı."
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "https://docs.payven.com.tr/errors/rate_limit_exceeded",
"title": "İstek limiti aşıldı",
"status": 429,
"code": "rate_limit_exceeded"
}{
"type": "https://docs.payven.com.tr/errors/internal_server_error",
"title": "Sunucu hatası",
"status": 500,
"code": "internal_server_error"
}{
"type": "https://docs.payven.com.tr/errors/connector_unavailable",
"title": "Konnektör erişilemez",
"status": 503,
"code": "connector_unavailable"
}Headers
Path Parameters
Body
3D Secure ödeme başlatma isteği. CreatePaymentRequest ile aynı alanlara ek olarak callback/return/cancel URL'leri taşır.
İşlem tutarı (kuruş + currency).
Show child attributes
Show child attributes
Taksit sayısı. 1 = peşin.
1
Kart bilgileri.
Show child attributes
Show child attributes
Zorunlu. 3DS doğrulaması sonrası bankanın kullanıcıyı geri yönlendireceği HTTPS URL'iniz. Buradan gelen transaction_id ile /payments/3d/complete çağrılır.
"https://example.com/3ds/return"
Sizin sipariş kimliğiniz.
"ORDER-1001"
Sepet kimliği.
"BASKET-2026-001"
Müşteri bilgileri — fraud sinyalleri ve banka risk skoru için.
Show child attributes
Show child attributes
Adres bilgisi (fatura veya teslimat).
Show child attributes
Show child attributes
Adres bilgisi (fatura veya teslimat).
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Müşteri 3DS akışını iptal ederse yönlendirileceği URL.
"https://example.com/checkout/cancel"
Sonuç sayfasına yönlendirme için (success/fail unified). callback_url farklı sebeple kullanılır.
sale (varsayılan) veya pre_auth.
Sale, PreAuth, PostAuth, Void, Refund, Recurring "sale"
Konnektör-spesifik özel alanlar.
Show child attributes
Show child attributes
Response
OK
- Option 1
- Option 2
Yazma operasyonlarından (POST /payments, /refund, /void, /capture) dönen sonuç.
Payven tarafından atanan benzersiz işlem kimliği. Sorgulama / aksiyon endpoint'lerinde URL parametresi olarak kullanılır.
"8e3f5c12-9a7b-4c8d-bc4e-2c963f66afa6"
İşlemin mevcut durumu: pending, pending_3ds, authorized, completed, failed, voided, refunded, partially_refunded.
"completed"
Operasyon başarılı mı? Geçiş döneminde tutuluyor — yeni kodlarda HTTP status kodunu konuşturun (2xx başarı, 4xx/5xx hata).
true
İnsan-okur durum mesajı.
"İşlem başarıyla tamamlandı"
Yalnızca başarısız işlemlerde dolar — Payven canonical hata kodu.
"bank_declined"
Yalnızca başarısız işlemlerde dolar — bankanın orijinal yanıt kodu.
"51"
Banka-spesifik ek alanlar: auth_code, host_reference, provider_transaction_id, processed_at vb.
Show child attributes
Show child attributes