Deposit
Yatırım talebi.
Merchant sisteminizden yatırım ve çekim talebi oluşturun; işlem sonuçlarını callback adresiniz üzerinden güvenli hash imzası ile alın.
Yatırım talebi.
Çekim talebi.
Sonuç bildirimi.
İmza doğrulama.
Deposit ve withdraw isteklerinde aşağıdaki üç header zorunludur. X-Timestamp Unix timestamp olmalı ve sunucu saatinden en fazla 300 saniye sapmalıdır.
X-Api-KeyEvetMerchant API anahtarı.X-HashEvetHeader signature değeri.X-TimestampEvetUnix saniye, en fazla ±300 saniye.Request Header Hash Formula
SHA256(API_KEY + MERCHANT_SECRET + TIMESTAMP)
https://apiservices.walletgate.services/api/v1/deposit
useridstring/intZorunluKullanıcı kimliği.usernamestringZorunluKullanıcı adı.namesurnamestringZorunluAd soyad.methodstringZorunluDeğer: bankamountnumberZorunluYatırım tutarı.ext_idstringZorunluMerchant işlem ID.callback_urlurlZorunluSonuç bildirimi adresi.{
"userid": "10244",
"username": "demo_user",
"namesurname": "Mehmet Yılmaz",
"method": "bank",
"amount": 2500,
"ext_id": "DEP-000001",
"callback_url": "https://merchant.example.com/payment/callback"
}
{
"status": true,
"code": 201,
"message": "Para Yatırma Talebi Başarıyla Oluşturuldu.",
"detail": {
"deposit_id": 8451,
"uuid": "transaction-uuid",
"userid": "10244",
"method": "bank",
"amount": 2500,
"url": "https://payment.example.com/payment/bankdeposit/TOKEN"
}
}
https://apiservices.walletgate.services/api/v1/withdraw
accountnumberstringZorunluPara gönderilecek IBAN.Diğer zorunlu alanlar: userid, username, namesurname, method, amount, ext_id, callback_url.
{
"userid": "10244",
"username": "demo_user",
"namesurname": "Mehmet Yılmaz",
"method": "bank",
"amount": 1000,
"ext_id": "WDR-000001",
"accountnumber": "TR000000000000000000000000",
"callback_url": "https://merchant.example.com/payment/callback"
}
{
"status": true,
"message": "Para Çekme Talebiniz Başarıyla Oluşturuldu.",
"detail": {
"withdraw_id": 9201,
"ext_id": "WDR-000001",
"uuid": "transaction-uuid",
"userid": "10244",
"amount": 1000
}
}
İşlem sonuçlandığında VOLT HAVALE, işlem oluştururken gönderdiğiniz callback_url adresine JSON POST isteği yapar. Merchant tarafı gelen callback içindeki hash değerini doğrulamalıdır.
SHA256("deposit" + API_KEY + MERCHANT_SECRET + UUID + EXT_ID + STATUS)
SHA256("withdraw" + API_KEY + MERCHANT_SECRET + UUID + EXT_ID + STATUS)
Yatırım talebi onaylandığında veya reddedildiğinde merchant callback URL’inize gönderilir.
{
"type": "deposit",
"message": "Yatırım Talebi Sonuçlandı",
"id": 8451,
"ext_id": "DEP-000001",
"currency": "TRY",
"uuid": "transaction-uuid",
"userid": "10244",
"amount": 2500,
"status": 1,
"method": "bank",
"hash": "GENERATED_CALLBACK_SHA256"
}
Çekim talebi onaylandığında veya reddedildiğinde merchant callback URL’inize gönderilir.
{
"type": "withdraw",
"message": "Çekim Talebi Sonuçlandı",
"id": 9201,
"ext_id": "WDR-000001",
"currency": "TRY",
"uuid": "transaction-uuid",
"userid": "10244",
"amount": 1000,
"status": 1,
"method": "bank",
"hash": "GENERATED_CALLBACK_SHA256"
}
Kodunuzdaki $status_id değerine göre callback standardı aşağıdaki gibi yayınlanmalıdır.
0Pendingİşlem sonuç bekliyor.1Approvedİşlem başarıyla onaylandı.2Rejectedİşlem reddedildi.API yanıtlarını aşağıdaki standarda çekmeniz, merchant tarafında hata yönetimini net ve otomasyona uygun hâle getirir.
201Yeni talep oluşturulduDeposit veya withdraw başarıyla kaydedildi.200Mevcut işlem döndürüldüIdempotent tekrar isteğinde bekleyen işlem detayı.401Authentication başarısızEksik header, invalid API key, invalid hash, expired timestamp.403Yetki yokMerchant’in bu aksiyonu kullanma izni yoksa.409ConflictAynı ext_id zaten kayıtlı veya reddedilecek aktif talep çakışması.422Validation hatasıEksik/geçersiz body alanı, yanlış URL veya yanlış method.503Geçici servis uygun değilUygun hesap yok veya provider geçici olarak işlem kabul etmiyor.500Beklenmeyen sunucu hatası<?php
$timestamp = time();
$hash = hash(
'sha256',
$apiKey . $merchantSecret . $timestamp
);
$headers = [
'X-Api-Key' => $apiKey,
'X-Hash' => $hash,
'X-Timestamp' => $timestamp,
];
<?php
$expectedHash = hash(
'sha256',
$body['type'] .
$apiKey .
$merchantSecret .
$body['uuid'] .
$body['ext_id'] .
$body['status']
);
if (!hash_equals($expectedHash, $body['hash'])) {
return response()->json([
'status' => false,
'message' => 'Invalid callback hash'
], 401);
}
return ["status" => true];