Payment Gateway Integration
API Base URL:
Authentication: Tüm istekler için API anahtarı gereklidir. Header'da WebApiKey olarak gönderilmelidir.
Response Format: JSON
Encoding: UTF-8
Müşteri hesabına para yatırma işlemi başlatır. İşlem sonucunda kullanıcıyı yönlendireceğiniz bir URL döner.
| Parametre | Değer | Açıklama | 
|---|---|---|
| WebApiKey | string | Size verilen API anahtarı | 
| Parametre | Tip | Zorunlu | Açıklama | 
|---|---|---|---|
| amount | decimal | Evet | Yatırılacak miktar (integer veya decimal gönderilebilir) | 
| userId | string | Evet | Müşteri kullanıcı ID'si | 
| name | string | Evet | Müşteri adı ve soyadı (Örn: Louie Anderson) | 
| userName | string | Evet | Müşteri kullanıcı adı | 
| processId | string | Evet | Sizin tarafınızdan oluşturulan benzersiz işlem ID'si | 
| IslemTuru | string | Evet | İşlem yöntemi (havale, papara, kredikarti, mefete, pep, payco, crypto vb.) | 
| SuccessRedirectUrl | string | Hayır* | Başarılı işlem sonrası yönlendirme (*Sadece kredikarti için) | 
| ErrorRedirectUrl | string | Hayır* | Başarısız işlem sonrası yönlendirme (*Sadece kredikarti için) | 
| RedirectUrl | string | Hayır | Genel yönlendirme URL'i | 
{
  "amount": 500,
  "userId": "customer-123",
  "name": "Louie Anderson",
  "userName": "louie_a",
  "processId": "TRX-2024-001",
  "IslemTuru": "havale",
  "SuccessRedirectUrl": "https://example.com/success",
  "ErrorRedirectUrl": "https://example.com/error",
  "RedirectUrl": "https://example.com/redirect"
}
      {
  "status": "successful",
  "url": "https://vevopay.io/iFrame/HavaleOtoBack?trackingID=96baf381-f727-4bcd-b9bb-03422e1211af",
  "hashcode": "98344483d494a0ed8a69120b8cde3b24",
  "trackingId": "96baf381-f727-4bcd-b9bb-03422e1211af",
  "iban": "TR12 3456 7890 1234 5678 9012 34",
  "ibanname": "ABC ÖDEME HİZMETLERİ A.Ş."
}
        {
  "status": "failed",
  "hataMesaj": "Aynı tutarda bekleyen yatırım talebiniz bulunmaktadır",
  "hashcode": "98344483d494a0ed8a69120b8cde3b24",
  "trackingId": "96baf381-f727-4bcd-b9bb-03422e1211af"
}
        Müşteri hesabından para çekme işlemi gerçekleştirir. İsim ve soyisim kontrolü yapılır, yanlış bilgi durumunda işlem reddedilir.
| Parametre | Değer | Açıklama | 
|---|---|---|
| WebApiKey | string | Size verilen API anahtarı | 
| Content-Type | application/json | İstek içerik tipi | 
| Parametre | Tip | Zorunlu | Açıklama | 
|---|---|---|---|
| userId | string | Evet | Müşteri kullanıcı ID'si | 
| name | string | Evet | Müşteri adı soyadı (Kontrol edilir!) | 
| username | string | Evet | Müşteri kullanıcı adı | 
| amount | decimal | Evet | Çekilecek miktar (integer gönderilebilir) | 
| IslemTuru | string | Evet | Çekim yöntemi (havale, papara, crypto vb.) | 
| processId | string | Evet | Sizin tarafınızdan oluşturulan benzersiz işlem ID'si | 
| iban | string | Evet | Alıcı IBAN veya cüzdan adresi (yönteme göre değişir) | 
| currency | string | Hayır* | Para birimi (*Sadece crypto işlemleri için zorunlu) | 
| currencyamount | decimal | Hayır | Crypto işlemlerinde amount=0 ise kullanılır | 
{
  "userId": "12.1223",
  "name": "Louie Anderson",
  "username": "tes653111",
  "amount": 10000,
  "IslemTuru": "havale",
  "processId": "process-2024-001",
  "iban": "TR12 3456 7890 1234 5678 9012 34"
}
      {
  "status": "successful"
}
      Servisin sağlığını ve erişilebilirliğini kontrol eder. API anahtarı doğrulaması ve IP kontrolü yapılır.
| Parametre | Değer | Açıklama | 
|---|---|---|
| WebApiKey | string | Size verilen API anahtarı (Zorunlu) | 
GET /api/vevo/health Headers: WebApiKey: Your-API-Key
{
"status": "ok",
"service": "VevoPay API",
"ip": "192.168.1.1",
"timestamp": "2025-10-17T14:32:45.1234567Z",
"version": "1.0"
}
      WebApiKey eksik (401 Unauthorized):
{
"status": "error",
"message": "WebApiKey header required"
}
      Geçersiz API Key (401 Unauthorized):
{
"status": "error",
"message": "Invalid WebApiKey"
}
      IP adresi kayıtlı değil (401 Unauthorized):
{
"status": "error",
"message": "IP address not registered: 203.0.113.42"
}
      Firma pasif (403 Forbidden):
{
"status": "error",
"message": "Company inactive"
}
      İşlem durumunu kontrol eder. TrackingId parametresi ile sorgulama yapılır.
| Parametre | Değer | Açıklama | 
|---|---|---|
| WebApiKey | string | Size verilen API anahtarı | 
| Parametre | Tip | Zorunlu | Açıklama | 
|---|---|---|---|
| trackingId | string (GUID) | Evet | İşlem takip numarası | 
POST /api/vevo/checkstatus?trackingId=328bcca3-434e-4c01-99df-b973ee412377 Headers: WebApiKey: Your-API-Key
{
  "success": true,
  "data": {
    "TrackingID": "328bcca3-434e-4c01-99df-b973ee412377",
    "ProcessID": "test!3proc322722223ses2s-1s22ss32323222225452",
    "StatusLabel": "unsuccessful",
    "IslemSekli": "Deposit",
    "Yontem": "havale",
    "EklenmeZamani": "2025-04-22 12:24:59,540",
    "OdemeZamani": null
  }
}
      İşlem durumu değiştiğinde veya tamamlandığında belirttiğiniz callback URL'e POST isteği gönderilir. JSON formatında gönderilir.
| Parametre | Tip | Açıklama | 
|---|---|---|
| transactionId | string | İşlem kimlik numarası | 
| amount | string | İşlem tutarı | 
| userId | string | Kullanıcı ID'si | 
| name | string | Kullanıcı adı soyadı | 
| userName | string | Kullanıcı adı | 
| processId | string | Sizin gönderdiğiniz işlem ID'si | 
| status | string | 'pending', 'successful' veya 'unsuccessful' | 
| type | string | 'Deposit' veya 'withdrawal' | 
| Dekont | string | Dekont bilgisi (varsa) | 
| durumMesaj | string | Durum açıklama mesajı | 
| IslemTuru | string | İşlem yöntemi | 
| hashcode | string | MD5 hash kodu (FirmaID-ApiKey-amount-processId) | 
POST /your-callback-url Content-Type: application/x-www-form-urlencoded transactionId=TRX123456&amount=500&userId=customer-123&name=Louie+Anderson&userName=louie_a&processId=TRX-2024-001&status=successful&type=deposit&Dekont=&durumMesaj=İşlem+başarılı&IslemTuru=havale&hashcode=98344483d494a0ed8a69120b8cde3b24
Gelen callback'in güvenliğini sağlamak için hashcode doğrulaması yapmanız önerilir:
// PHP Örneği
$firma_id = "YOUR_FIRMA_ID";
$api_key = "YOUR_API_KEY";
$amount = $_POST['amount'];
$process_id = $_POST['processId'];
// G2W firmalar için ondalık format kullanılır
$formatted_amount = number_format($amount, 2, '.', '');
$hash_string = $firma_id . $api_key . $formatted_amount . $process_id;
// Normal firmalar için integer format kullanılır
// $hash_string = $firma_id . $api_key . intval($amount) . $process_id;
$expected_hash = md5($hash_string);
if ($expected_hash === $_POST['hashcode']) {
    // Callback geçerli, işlemi tamamla
    http_response_code(200);
    echo "OK"; // Başarılı yanıt - MUTLAKA 200 OK dönün!
} else {
    // Hash uyuşmazlığı
    http_response_code(400);
    echo "Invalid hash";
}