Genel Bakış
Columbia Pay API
Columbia Pay API'ı; müşterilerin para yatırma, para çekme ve işlem durumu sorgulama işlemlerini güvenli bir şekilde gerçekleştirmesine olanak tanır. Tüm istekler HTTPS üzerinden ve hash imzasıyla doğrulanır.
| API Base URL | https://columbiamoneypay.com |
| Dokümantasyon | https://api.columbiamoneypay.com |
Kimlik Doğrulama
Kimlik Bilgileri
Her müşteriye aşağıdaki bilgiler verilir. Bu bilgileri gizli tutun ve kimseyle paylaşmayın.
| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
Terminal ID | String | Evet | Müşteri tanımlayıcınız (örn: demobahis) |
API Key | String | Evet | İşlemleri imzalamak için kullanılan anahtar (pk_live_...) |
Secret Key | String | Evet | Hash hesaplamasında kullanılan gizli anahtar (sk_live_...) |
Terminal ID: demobahis
API Key: pk_live_a1b2c3d4e5f6g7h8i9j0
Secret Key: sk_live_z9y8x7w6v5u4t3s2r1q0Güvenlik
Hash Hesaplama
Hash, isteğinizin gerçekten size ait olduğunu ispatlayan SHA-256 imzasıdır. Parametreler tam sırayla ve aralarında boşluk olmadan birleştirilir, ardından SHA-256 ile 64 karakterlik hex özet üretilir.
| İşlem | Hash Formülü |
|---|---|
| Yatırım | apiKey + islemid + tuser + tadsoyad + amount + secretKey |
| Çekim | apiKey + islemid + tuser + tadsoyad + amount + secretKey |
| Durum Sorgulama | apiKey + islemid + secretKey |
Tutar (amount) Formatı
amount her zaman ondalık ayracı nokta olacak şekilde gönderilmelidir. Hash, tutar tam olarak gönderdiğiniz metinle hesaplanır; bu yüzden hash'te kullandığınız değer ile istekte gönderdiğiniz değer birebir aynı olmalıdır.
| Doğru | Yanlış |
|---|---|
1000.00 | 1.000,00 · 1000,00 |
Endpoint
Yatırım
Yatırım talebini başlatmak için oyuncuyu aşağıdaki URL'ye yönlendirin (tarayıcıda açın). Oyuncu bu sayfada ödeme yöntemini onaylayıp talebini oluşturur. Tüm parametreler query string ile gönderilir ve zorunludur.
/deposit/{terminalid}?tuser={tuser}&tadsoyad={tadsoyad}&amount={amount}&islemid={islemid}&payment_name={payment_name}&hash={hash}&redirecturl={redirecturl}| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
terminalid | String (path) | Evet | Terminal ID (örn: demobahis) |
tuser | String (query) | Evet | Sistem kullanıcı adı |
tadsoyad | String (query) | Evet | Ad Soyad (gerçek isim) |
amount | String (query) | Evet | Yatırım tutarı TRY (örn: "1000.00") |
islemid | String (query) | Evet | Benzersiz işlem ID |
payment_name | String (query) | Evet | Ödeme yöntemi (aşağıdaki listeden) |
hash | String (query) | Evet | SHA256 imzası (aşağıdaki formül) |
redirecturl | String (query) | Evet | İşlem sonrası oyuncunun dönece��i URL |
Hash Formülü
SHA256(apiKey + islemid + tuser + tadsoyad + amount + secretKey)Desteklenen Ödeme Yöntemleri
Banka
papara · paycell · hepsipay · param · paribu · havale · vip-havale
Kripto
bitcoin · tethertrc20 · tether-erc20 · tron · solana
Örnek
https://columbiamoneypay.com/deposit/demobahis?tuser=user123&tadsoyad=Ahmet%20Yilmaz&amount=1000.00&islemid=TRX20260325001&payment_name=havale&hash=SHA256_DEGERI&redirecturl=https://siteniz.com/geri-donusAkış
Bu endpoint bir JSON yanıtı döndürmez. Oyuncu, ödeme yöntemini onayladığı yatırım sayfasına yönlendirilir; talep oluşturulduktan sonra redirecturl adresine geri döner. İşlemin nihai durumunu öğrenmek için Durum Sorgulama endpoint'ini veya callback'i kullanın.
redirecturl ve boşluk içeren tadsoyad, mutlaka URL encode edilmelidir. Aksi halde redirecturl kendi query parametrelerini içeriyorsa (örn. ?user=123&source=pay) URL bozulur. JavaScript'te URLSearchParams veya PHP'de urlencode() bunu otomatik yapar.Endpoint
Çekim
Çekim talebi POST yöntemiyle, sunucudan sunucuya (server-to-server) gönderilir. İstek gövdesi JSON'dır ve hash imzası zorunludur.
/api/withdrawİstek Gövdesi
{
"terminalid": "demobahis",
"tuser": "user123",
"tadsoyad": "Ahmet Yılmaz",
"amount": "500.00",
"islemid": "CKM20260325001",
"payment_name": "havale",
"cekim_iban": "TR123456789012345678901234",
"hash": "sha256_hash_degeri"
}| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
terminalid | String | Evet | Terminal ID |
tuser | String | Evet | Sistem kullanıcı adı |
tadsoyad | String | Evet | Ad Soyad (gerçek isim) |
amount | String | Evet | Çekim tutarı (örn: "500.00") |
islemid | String | Evet | Benzersiz çekim ID (maks. 100 karakter) |
payment_name | String | Evet | Ödeme yöntemi |
cekim_iban | String | Evet | Paranın transfer edileceği IBAN |
hash | String (64) | Evet | SHA256 imzası |
Hash Formülü
SHA256(apiKey + islemid + tuser + tadsoyad + amount + secretKey)Yanıtlar
{
"message": "İşlem başarıyla oluşturuldu",
"transaction_id": "CKM20260325001",
"status": "pending",
"redirect_url": "https://siteniz.com/callback"
}islemid değerinin aynısıdır. redirect_url ise sistemde sizin için kayıtlı callback URL'inizdir; talep sonuçlanınca bu adrese callback gönderilir (aşağıdaki Callback bölümüne bakın). Çekim her zaman pending olarak başlar.{ "error": "Bu işlem ID'si ile daha önce bir işlem yapılmış." }{ "error": "Eksik zorunlu alanlar" }Endpoint
Durum Sorgulama
İşlemin durumunu hash olmadan, basit bir GET isteğiyle sorgulayabilirsiniz.
/api/transaction/status/{terminalid}/{islemid}| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
terminalid | String (path) | Evet | Terminal ID |
islemid | String (path) | Evet | İşlem ID |
Örnek
https://columbiamoneypay.com/api/transaction/status/demobahis/TRX20260325001Yanıt
{
"transaction_id": 123,
"status": "completed",
"status_reason": "",
"type": "deposit"
}islemid ile aynı değildir. status_reason, işlem iptal/başarısız olduğunda doldurulan açıklama alanıdır.| Status | Tür | Açıklama |
|---|---|---|
pending | Ara durum | İşlem bekliyor. Tekrar sorgulanabilir; henüz nihai değildir. |
completed | Final | İşlem onaylandı ve başarıyla tamamlandı. |
canceled | Final | İşlem iptal edildi / reddedildi. |
pending ara durumdur ve tekrar sorgulanabilir. completed ve canceled nihai (final) durumlardır; değişmezler ve tekrar sorgulamaya gerek yoktur.Endpoint
Güvenli Durum Sorgulama
İşlem durumunu hash ile güvenli şekilde sorgulamak için POST yöntemini kullanın.
/api/status-checkİstek Gövdesi
{
"terminalid": "demobahis",
"islemid": "TRX20260325001",
"hash": "sha256_hash_degeri"
}Hash Formülü
SHA256(apiKey + islemid + secretKey)Yanıtlar
{
"terminalid": "demobahis",
"tuser": "user123",
"tadsoyad": "Ahmet Yılmaz",
"amount": "1000.00",
"islemid": "TRX20260325001",
"payment_name": "bitcoin",
"status": "pending",
"type": "deposit",
"cekim_iban": null,
"redirecturl": "https://siteniz.com/geri-donus",
"hash": "sha256_hash_degeri"
}cekim_iban yalnızca çekim işlemlerinde dolu gelir; yatırımlarda null döner. Bu endpoint, sistemde kayıtlı callback URL'iniz varsa aynı anda size bir callback de gönderir.{ "error": "Invalid hash - unauthorized" }{ "error": "Transaction not found" }Bildirim
Callback (Webhook)
Bir işlem onaylandığında veya reddedildiğinde, sistem kayıtlı callback URL'inize otomatik olarak bir POST isteği gönderir. Böylece işlemi sürekli sorgulamanıza gerek kalmaz. Callback URL'iniz size özel olarak tanımlanır.
{sizin_callback_url_iniz}Callback Gövdesi
{
"tuser": "user123",
"tadsoyad": "Ahmet Yılmaz",
"amount": "1000.00",
"islemid": "TRX20260325001",
"hash": "sha256_hash_degeri",
"updated_at": "2026-03-25T10:30:45.000000Z",
"type": "deposit",
"status": "completed",
"status_reason": ""
}| Parametre | Tip | Zorunlu | Açıklama |
|---|---|---|---|
type | String | Evet | İşlem türü: "deposit" veya "withdrawal" |
status | String | Evet | Nihai durum: completed veya canceled |
status_reason | String | Hayır | İptal açıklaması (varsa, yoksa boş string) |
hash | String | Evet | Orijinal istekte gönderdiğiniz hash ile aynıdır |
Callback Hash Doğrulama
Callback'in gerçekten Columbia Pay'den geldiğini doğrulamak için hash alanını kontrol edin. Sistem callback için yeni bir hash üretmez; callback'te gelen hash, o işlemi başlatırken (yatırım/çekim) sizin gönderdiğiniz hash'in birebir aynısıdır.
Doğrulamak için, işlem başlarken islemid ile birlikte kaydettiğiniz hash değeri ile callback'te gelen hash'i karşılaştırın. İsterseniz aynı formülle yeniden hesaplayıp da doğrulayabilirsiniz:
SHA256(apiKey + islemid + tuser + tadsoyad + amount + secretKey)Sizden Beklenen Yanıt
Callback'i başarıyla aldığınızı bildirmek için gövdesinde status alanı success (veya true) olan bir JSON dönmelisiniz.
{ "status": "success" }islemid'yi birden çok kez alabilirsiniz). Not: Tekrar denemelerin başarısız olması işlemin durumunu değiştirmez; işlem yine completed veya canceled olarak kalır.Referans
Hata Kodları
| Kod | Anlamı | Açıklama |
|---|---|---|
200 | OK | İşlem başarılı |
201 | Created | Yeni kayıt oluşturuldu |
400 | Bad Request | Eksik veya yanlış parametreler |
401 | Unauthorized | Yetkisiz (hash hatası) |
404 | Not Found | İşlem bulunamadı |
409 | Conflict | Duplicate işlem ID |
500 | Server Error | Sunucu hatası |
{
"error": "Hata açıklaması",
"details": "Opsiyonel detay bilgisi"
}Sık Karşılaşılan Hatalar
| HTTP | error mesajı | Sebep |
|---|---|---|
400 | Missing required fields / Eksik zorunlu alanlar | Zorunlu bir alan gönderilmedi |
401 | Hash validation failed | Yatırım/çekim hash imzası hatalı |
401 | Invalid hash - unauthorized | Durum sorgulamada hash eşleşmedi |
404 | Customer not found / Geçersiz terminal ID | Terminal ID sistemde yok |
404 | Transaction not found | İşlem (islemid) bulunamadı |
409 | Duplicate transaction ID | Aynı islemid ile daha önce işlem yapılmış |
Entegrasyon
Kod Örnekleri
Yatırım URL'i Oluşturma — Node.js
const crypto = require('crypto')
const apiKey = 'pk_live_abc123'
const secretKey = 'sk_live_xyz789'
const terminalid = 'demobahis'
const tuser = 'user123'
const tadsoyad = 'Ahmet Yılmaz'
const amount = '1000.00'
const islemid = 'TRX20260325001'
const payment_name = 'havale'
const redirecturl = 'https://siteniz.com/geri-donus'
// Yatırım hash: apiKey + islemid + tuser + tadsoyad + amount + secretKey
const hash = crypto
.createHash('sha256')
.update(apiKey + islemid + tuser + tadsoyad + amount + secretKey)
.digest('hex')
const params = new URLSearchParams({
tuser, tadsoyad, amount, islemid, payment_name, hash, redirecturl,
})
// Oyuncuyu bu URL'ye yönlendirin:
const depositUrl = `https://columbiamoneypay.com/deposit/${terminalid}?${params.toString()}`
console.log(depositUrl)Çekim — Node.js
const crypto = require('crypto')
const apiKey = 'pk_live_abc123'
const secretKey = 'sk_live_xyz789'
const terminalid = 'demobahis'
const tuser = 'user123'
const tadsoyad = 'Ahmet Yılmaz'
const amount = '500.00'
const islemid = 'CKM20260325001'
const payment_name = 'havale'
const cekim_iban = 'TR123456789012345678901234'
const hashString = apiKey + islemid + tuser + tadsoyad + amount + secretKey
const hash = crypto.createHash('sha256').update(hashString).digest('hex')
const res = await fetch('https://columbiamoneypay.com/api/withdraw', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
terminalid, tuser, tadsoyad, amount,
islemid, payment_name, cekim_iban, hash,
}),
})
console.log(await res.json())Çekim — Python
import hashlib, requests
api_key = 'pk_live_abc123'
secret_key = 'sk_live_xyz789'
tuser = 'user123'
tadsoyad = 'Ahmet Yılmaz'
amount = '500.00'
islemid = 'CKM20260325001'
hash_string = api_key + islemid + tuser + tadsoyad + amount + secret_key
hash_value = hashlib.sha256(hash_string.encode()).hexdigest()
res = requests.post('https://columbiamoneypay.com/api/withdraw', json={
'terminalid': 'demobahis',
'tuser': tuser,
'tadsoyad': tadsoyad,
'amount': amount,
'islemid': islemid,
'payment_name': 'havale',
'cekim_iban': 'TR123456789012345678901234',
'hash': hash_value,
})
print(res.json())Çekim — PHP
<?php
$apiKey = 'pk_live_abc123';
$secretKey = 'sk_live_xyz789';
$tuser = 'user123';
$tadsoyad = 'Ahmet Yılmaz';
$amount = '500.00';
$islemid = 'CKM20260325001';
$hashString = $apiKey . $islemid . $tuser . $tadsoyad . $amount . $secretKey;
$hash = hash('sha256', $hashString);
$data = [
'terminalid' => 'demobahis',
'tuser' => $tuser,
'tadsoyad' => $tadsoyad,
'amount' => $amount,
'islemid' => $islemid,
'payment_name' => 'havale',
'cekim_iban' => 'TR123456789012345678901234',
'hash' => $hash,
];
$ch = curl_init('https://columbiamoneypay.com/api/withdraw');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
echo curl_exec($ch);Durum Sorgulama — Node.js
const crypto = require('crypto')
const apiKey = 'pk_live_abc123'
const secretKey = 'sk_live_xyz789'
const islemid = 'TRX20260325001'
const hash = crypto
.createHash('sha256')
.update(apiKey + islemid + secretKey)
.digest('hex')
const res = await fetch('https://columbiamoneypay.com/api/status-check', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ terminalid: 'demobahis', islemid, hash }),
})
console.log(await res.json())