Callback Sistemi
MVPAY callback sistemi ile deposit ve withdraw işlem durumu güncellemelerini gerçek zamanlı alın.
Callback bildirimleri yalnızca HTTP 200 OK yanıtını başarılı kabul eder. 200 dışındaki tüm yanıtlar yeniden deneme tetikler.
Nasıl Çalışır?
İşlem durumu değiştiğinde MVPAY, belirlediğiniz callback URL'lerine HTTP POST isteği gönderir.
Callback Türleri
- Deposit Callback —
/api/updateCallbackUrlDepositile URL güncellenir - Withdraw Callback —
/api/updateCallbackUrlWithdrawile URL güncellenir
Teslimat Politikası
- Timeout: 15 sn
- Başarı Kriteri: HTTP 200 OK
- Tekrar Deneme: 5 kere
- Aralıklar: 5s → 10s → 20s → 40s → 80s (exponential backoff)
- Maksimum Süre: ≈155 sn (≈2.5 dk)
Örnek Callback Payload
{
"amount": 100,
"userID": "2",
"name": "test_user",
"userName": "2",
"processID": "TEST-PROCCESS-ID-T1",
"trackingID": "WD2509100038039988",
"type": "withdraw",
"status": "success",
"hash": "9252c360abc7e6c5509ec72dc3b79404"
}
Payload Alanları
| Alan | Tip | Örnek | Açıklama |
|---|---|---|---|
| hash | string | "9252c360abc7e6..." | processID|amount|userID|type|apiKey MD5 hex değeri (gövdede gönderilir). |
| amount | number | 100 | İşlem tutarı. Hash oluştururken string olarak birleştirilir. |
| userID | string | "2" | Entegrasyondaki kullanıcı ID’niz. Hash içinde kullanılır. |
| name | string | "test_user" | Kullanıcı adı/adı-soyadı bilgisi. |
| userName | string | "2" | Kullanıcı kullanıcı adı/rumuzu. |
| processID | string | "TEST-PROCCESS-ID-T1" | İşlem referansı. Hash içinde kullanılır; idempotency için eşlemede kullanın. |
| trackingID | string | "WD2509100038039988" | MVPAY tarafındaki takip numarası. |
| type | string | "withdraw" | İşlem tipi. Örn: "deposit", "withdraw". Hash içinde kullanılır. |
| status | string | "success" | İşlem sonucu. Tipik olarak "success" veya "failed". |
- hash alanı,
processID|amount|userID|type|apiKeyşeklinde oluşturulan string’in MD5 değeri olup gövdede (body) gönderilir. - trackingID, MVPAY tarafındaki takip numarasıdır.
- Hash doğrulama ve güvenlik önerileri için bkz: Callback Güvenliği.
URL Yapılandırma
Deposit URL Güncelleme
bilgi
- Method: PUT
- Endpoint: https://app.mvpay.xyz/api/updateCallbackUrlDeposit
- Header: mvpayApiToken, Content-Type: application/json
- 🟢 Node.js
- 🐘 PHP
- 🔷 C#
- 🐍 Python
- ☕ Java
const fetch = require("node-fetch");
const response = await fetch("https://app.mvpay.xyz/api/updateCallbackUrlDeposit", {
method: "PUT",
headers: {
mvpayApiToken: "YOUR_API_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({ callback_url: "https://yoursite.com/deposit-webhook" }),
});
const data = await response.json();
console.log(data);
<?php
$data = [
'callback_url' => 'https://yoursite.com/deposit-webhook'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://app.mvpay.xyz/api/updateCallbackUrlDeposit');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'mvpayApiToken: YOUR_API_TOKEN',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("mvpayApiToken", "YOUR_API_TOKEN");
var data = new {
callback_url = "https://yoursite.com/deposit-webhook"
};
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PutAsync("https://app.mvpay.xyz/api/updateCallbackUrlDeposit", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
import requests
import json
url = "https://app.mvpay.xyz/api/updateCallbackUrlDeposit"
headers = {
"mvpayApiToken": "YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"callback_url": "https://yoursite.com/deposit-webhook"
}
response = requests.put(url, headers=headers, json=data)
print(response.json())
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;
var client = HttpClient.newHttpClient();
var objectMapper = new ObjectMapper();
var data = Map.of("callback_url", "https://yoursite.com/deposit-webhook");
var json = objectMapper.writeValueAsString(data);
var request = HttpRequest.newBuilder()
.uri(URI.create("https://app.mvpay.xyz/api/updateCallbackUrlDeposit"))
.header("mvpayApiToken", "YOUR_API_TOKEN")
.header("Content-Type", "application/json")
.PUT(HttpRequest.BodyPublishers.ofString(json))
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
Withdraw URL Güncelleme
bilgi
- Method: PUT
- Endpoint: https://app.mvpay.xyz/api/updateCallbackUrlWithdraw
- Header: mvpayApiToken, Content-Type: application/json
- 🟢 Node.js
- 🐘 PHP
- 🔷 C#
- 🐍 Python
- ☕ Java
const fetch = require("node-fetch");
const response = await fetch("https://app.mvpay.xyz/api/updateCallbackUrlWithdraw", {
method: "PUT",
headers: {
mvpayApiToken: "YOUR_API_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({ callback_url: "https://yoursite.com/withdraw-webhook" }),
});
const data = await response.json();
console.log(data);
<?php
$data = [
'callback_url' => 'https://yoursite.com/withdraw-webhook'
];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://app.mvpay.xyz/api/updateCallbackUrlWithdraw');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'mvpayApiToken: YOUR_API_TOKEN',
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("mvpayApiToken", "YOUR_API_TOKEN");
var data = new {
callback_url = "https://yoursite.com/withdraw-webhook"
};
var json = JsonConvert.SerializeObject(data);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PutAsync("https://app.mvpay.xyz/api/updateCallbackUrlWithdraw", content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
import requests
import json
url = "https://app.mvpay.xyz/api/updateCallbackUrlWithdraw"
headers = {
"mvpayApiToken": "YOUR_API_TOKEN",
"Content-Type": "application/json"
}
data = {
"callback_url": "https://yoursite.com/withdraw-webhook"
}
response = requests.put(url, headers=headers, json=data)
print(response.json())
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import com.fasterxml.jackson.databind.ObjectMapper;
var client = HttpClient.newHttpClient();
var objectMapper = new ObjectMapper();
var data = Map.of("callback_url", "https://yoursite.com/withdraw-webhook");
var json = objectMapper.writeValueAsString(data);
var request = HttpRequest.newBuilder()
.uri(URI.create("https://app.mvpay.xyz/api/updateCallbackUrlWithdraw"))
.header("mvpayApiToken", "YOUR_API_TOKEN")
.header("Content-Type", "application/json")
.PUT(HttpRequest.BodyPublishers.ofString(json))
.build();
var response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());