1. Załóż konto i projekt
Zarejestruj się e-mailem, a potem zgłoś projekt: nazwa, strona, średni miesięczny obrót, kraj i kontakt na Telegramie lub Discordzie. Bez dokumentów tożsamości. Od razu dostajesz klucz projektu i sekret testowy; sekret produkcyjny działa po akceptacji projektu przez nasz zespół.
2. Wybierz integrację
- Strona płatności — POST /payments zwraca pay_url. Przekieruj użytkownika, otwórz ją w okienku pop-up albo umieść embed_url w iframe. Najszybsze wdrożenie.
- Płatności bezpośrednie — GET /inventory zwraca przedmioty użytkownika z cenami; Ty budujesz wybór przedmiotów i wywołujesz POST /payments/direct. Pełna kontrola nad UI.
Oba sposoby wysyłają te same webhooki i trafiają na to samo saldo.
3. Obsłuż webhook
Ustaw URL webhooka na stronie projektu. Każde zdarzenie jest podpisane HMAC-SHA256 z "<timestamp>.<raw body>" Twoim sekretem whsec_. Zweryfikuj podpis, odrzucaj timestampy starsze niż pięć minut, a potem przed dopisaniem czegokolwiek ponownie pobierz płatność przez GET /payments/{id}.
Dopisz saldo przy deposit.in_hold, żeby było szybko, albo przy deposit.success, gdy minie ochrona wymiany Steam.
4. Przetestuj wszystko
Z sekretem sk_test_ każda wymiana jest symulowana: prawdziwe nazwy i ceny przedmiotów, saldo testowe i przycisk dla każdego wyniku na stronie płatności. POST /test/payments/{id}/simulate steruje wynikami z Twojego kodu.
5. Uruchom na produkcji
Po akceptacji projektu przełącz się na sekret sk_live_. Wypłaty w USDT, USDC, BTC, ETH, LTC, SEPA, PayPal lub Wise od $25.
Pierwsze wywołanie API
Utwórz płatność i przekieruj klienta na pay_url. Wszystkie endpointy: Dokumentacja API.
curl -X POST 'https://skinplata.com/api/v1/payments' \
-H 'X-Project-Key: pk_your_key' \
-H 'X-Project-Secret: sk_test_your_secret' \
-H 'Content-Type: application/json' \
-d '{"order_id":"inv-1042","game":"cs2","currency":"usd","min_amount":5,"metadata":{"user_id":"8812"}}'<?php
$ch = curl_init('https://skinplata.com/api/v1/payments');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'X-Project-Key: pk_your_key',
'X-Project-Secret: sk_test_your_secret',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'order_id' => 'inv-1042',
'game' => 'cs2',
'currency' => 'usd',
'min_amount' => 5,
'metadata' => [
'user_id' => '8812',
],
]),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);const res = await fetch('https://skinplata.com/api/v1/payments', {
method: 'POST',
headers: {
'X-Project-Key': 'pk_your_key',
'X-Project-Secret': 'sk_test_your_secret',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"order_id": "inv-1042",
"game": "cs2",
"currency": "usd",
"min_amount": 5,
"metadata": {
"user_id": "8812"
}
}),
});
const data = await res.json();
if (!res.ok) throw new Error(data.error.message);import requests
r = requests.post(
"https://skinplata.com/api/v1/payments",
headers={"X-Project-Key": "pk_your_key", "X-Project-Secret": "sk_test_your_secret"},
json={
"order_id": "inv-1042",
"game": "cs2",
"currency": "usd",
"min_amount": 5,
"metadata": {
"user_id": "8812"
}
},
timeout=30,
)
data = r.json()
if not r.ok:
raise RuntimeError(data["error"]["message"])FAQ
Ile trwa akceptacja?
Nasz zespół ręcznie sprawdza każdy projekt. Klucze testowe działają od pierwszej minuty, więc możesz budować w trakcie oczekiwania.
Czy mogę przyjmować przedmioty Dota 2 i Rust tym samym kodem?
Tak — zmień parametr game.
Czy jest prowizja?
0% prowizji od płatności, zakupów i wypłat.