Sign in
Betalningar och uttag/Payment API

Payment API

Skapa och hantera betalningssessioner för kryptovalutor med 2328.io Payment API.

Payment API:et låter dig skapa betalningssessioner, omdirigera kunder till en värdbaserad kassa och spåra betalningsstatus.

Skapa betalning

Skapar en betalningssession och returnerar en URL där kunden kan betala.

Parametrar i förfrågan

FältTypObligatorisktBeskrivningVärden
amountdecimaljaBetalningsbelopp i den angivna valutan, t.ex. 100.00
currencystringjaFiatvaluta (USD, EUR, RUB, …) eller kryptovaluta (USDT, TRX, BTC, …)
order_idstringjaDitt order-ID, t.ex. ORDER-12345 (upp till 128 tecken)
to_currencystringnejFörvald kryptovaluta
networkstringnej*Nätverkskod (krävs om to_currency är satt eller currency är en kryptovaluta)
url_returnstringnejURL att omdirigera till efter betalning, t.ex. https://your-site.com/return
url_successstringnejAlternativ till url_return
url_callbackstringjaURL för webhook-notifieringar, t.ex. https://your-site.com/webhook
invite_codestringnejHänvisarkod
fee_splitdecimalnejAndel av handlaravgiften som skickas vidare till betalaren, 0–100 (%). 0 = handlaren betalar fullt ut, 100 = betalaren betalar fullt ut. Åsidosätter inställningen på projektnivå. Exempel: 30 (betalaren täcker 30 % av avgiften).
price_markupdecimalnejPåslag eller rabatt på fakturabeloppet, −99 till 100 (%). Åsidosätter inställningen på projektnivå. Exempel: 5 (+5 %) eller -10 (10 % rabatt).
descriptionstringnejValfri fakturabeskrivning (max 200 tecken). Visas för betalaren på betalningssidan. Exempel: Premium plan — Order #12345.
ttl_secondsintnejFakturans livslängd i sekunder, från 300 (5 minuter) till 86400 (24 timmar). Efter denna tid förfaller fakturan och kan inte längre betalas. Standard: 3600 (1 timme). Exempel: 3600.

Svar

JSON
{
  "state": 0,
  "result": {
    "uuid": "abc123-def456-...",
    "order_id": "ORDER-12345",
    "amount": "100.00",
    "currency": "USD",
    "amount_usd": "100.00",
    "exchange_rate": null,
    "url": "https://2328.io/pay/abc123-def456-...",
    "tg_deeplink": "https://t.me/my2328bot?start=pay_abc123-def456-...",
    "expires_at": "2026-01-11T21:00:00Z",
    "created_at": "2026-01-11T20:00:00Z",
    "payer_currency": "USDT",
    "payer_amount": "100.50",
    "network": "TRX-TRC20",
    "address": "TXYZabc123...",
    "payment_status": "check",
    "txid": null,
    "payment_amount": null,
    "qr": "data:image/png;base64,iVBORw0..."
  }
}
  • Omdirigera kunden till result.url för att slutföra betalningen.
  • tg_deeplink — deeplink till Telegram-bot för betalning via Telegram MiniApp.
  • qr — Base64-kodad QR-kod (data URI) för inbetalningsadressen. Finns när en adress redan tilldelats (när network är satt tillsammans med to_currency, eller när currency är en kryptovaluta); annars null.
  • txid, payment_amountnull tills kunden betalar. Fylls i när transaktionen upptäcks on-chain. Lyssna på webhooken payment_status: paid för att veta när.
  • exchange_ratenull om konvertering ännu inte är tillämplig (t.ex. om växelkursen fiat → krypto inte har låsts än). Fylls i när en betalningsvaluta valts.
Credentials
RequestPOST/v1/payment
curl -X POST https://api.2328.io/api/v1/payment \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.

Värdbaserad kassa, H2H och exakta kryptobelopp

Samma slutpunkt stöder tre olika fakturatyper. Välj en medvetet; blanda inte deras beloppssemantik.

Värdbaserad kassa med betalval

Skicka amount, currency, order_id och url_callback, men utelämna to_currency och network. Svar innehåller result.url; address, qr och ibland betalarens fält förblir null tills betalaren väljer en riktning på värdsidan.

JSON
{
  "amount": "125.00",
  "currency": "EUR",
  "order_id": "ORDER-2026-1042",
  "url_callback": "https://merchant.example/webhooks/2328",
  "url_return": "https://merchant.example/orders/ORDER-2026-1042"
}

Direktadresserad H2H-faktura

Skicka både to_currency och network. 2328.io skapar blockchain-fakturan under API-anropet, så ett lyckat svar kan visas direkt i din kassa utan att omdirigera kunden.

JSON
{
  "amount": "100.00",
  "currency": "USD",
  "to_currency": "USDT",
  "network": "TRX-TRC20",
  "order_id": "ORDER-2026-1043",
  "url_callback": "https://merchant.example/webhooks/2328"
}

Visa dessa värden exakt som de returneras:

  • payer_amount och payer_currency — betalningsinstruktionen;
  • network och address — den enda destinationen för denna faktura;
  • qr — en data-URI för samma adress;
  • expires_at — fakturans förfallodatum;
  • url — en användbar hostad fallback när den anpassade kassan inte kan slutföras.

Generera aldrig eller ersätt en adress, återanvänd en adress från en annan faktura, eller beräkna payer_amount från ett offentligt spotpris. API-svaret är auktoritativt.

Faktura för ett exakt kryptobelopp

Sätt kryptovalutan i currency när fakturan själv är denominerad i krypto:

JSON
{
  "amount": "25.000000",
  "currency": "USDT",
  "network": "TRX-TRC20",
  "order_id": "ORDER-2026-1044",
  "url_callback": "https://merchant.example/webhooks/2328"
}

Det begärda kryptovärdet bevaras i payer_currency / payer_amount. Tjänsten kan också internt hålla ett USD-värde för bokföring och kursfält; ersätt inte den exakta kryptoinstruktionen med det värdet. Bevara returnedekimala strängar, inklusive efterföljande precision.

För en kryptovaluta med endast ett stöds nätverk kan nätverket väljas automatiskt. Det rekommenderas fortfarande att ange network uttryckligen för en deterministisk integration. För flernätverks tillgångar såsom stablecoins, skicka det alltid.

Idempotens och försök igen

order_id är begränsat till det autentiserade handlarprojektet och fungerar som idempotensnyckel för skapande. Om en betalning redan finns returnerar API:t den sessionen med state: 0.

Ett nytt försök med samma order_id gör not betyder "uppdatera denna faktura." Ändrat belopp, valuta, callback, påslag, TTL eller riktningsfält kan ignoreras eftersom den befintliga sessionen returneras. Spara den första begäran och avvisa motstridiga försök i din egen applikation.

Rekommenderad skapandealgoritm:

  1. Infoga ditt lokala betalningsförsök och unika order_id i en databastransaktion.
  2. Skicka den signerade API-förfrågan.
  3. Spara det returnerade uuid och hela svaret.
  4. Om HTTP-resultatet går förlorat, försök samma förfrågan igen eller fråga /v1/payment/info via order_id.
  5. Skapa aldrig en andra lokal order bara för att den uppströms förfrågan tidsgränsade.

Betalningskantfall

SituationKorrekt hantering
address / qr är nullBetalarens riktning har inte initierats. Omdirigera till url, eller skapa en ny korrekt specificerad H2H-faktura med en ny order_id.
HTTP 400 valideringsfelLäs fältnivå errors; försök inte igen med oförändrad inmatning.
HTTP 429Försök igen med jitterad exponentiell backoff och behåll samma order_id.
HTTP 503 / direction_disabledUppdatera /v1/directions; dölj riktningen tillfälligt eller försök igen senare.
Klientförfrågan timeoutBehandla resultatet som okänt. Fråga via order_id innan du skapar något annat.
underpaid_checkSpara den partiella händelsen och vänta på en påfyllning eller senare status. Kreditera inte två gånger när fler txids anländer.
underpaidSlutgiltigt underbetalningstillstånd. Tillämpa din konfigurerade uppfyllnads-/manuell granskning-policy på det faktiska krediterade beloppet.
overpaidLyckad betalning med överskjutande medel. Utför idempotent och behåll de faktiska beloppen för avstämning/återbetalningspolicy.
aml_lockUtför inte eller frigör medel automatiskt; rutt till efterlevnads-/supportflöde.
cancelFaktura har gått ut eller avbrutits. Dra inte slutsatsen att en sen on-chain-överföring är omöjlig; stäm av eventuella senare händelser med support.

Webbläsarens retur-URL är endast för navigering. En kund kan öppna den utan att betala, stänga den efter att ha betalat eller spela upp den senare. Endast ett verifierat API/webhook-tillstånd kan slutföra handlarens beställning.

Betalningsinformation

Hämta aktuell betalningsstatus med uuid eller order_id.

Parametrar i förfrågan

FältTypObligatorisktBeskrivningVärden
uuidstringja*Betalningens UUID (från result.uuid vid skapandet)
order_idstringja*Ditt order-ID

Minst en av uuid eller order_id är obligatorisk.

RequestPOST/v1/payment/info
curl -X POST https://api.2328.io/api/v1/payment/info \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.

Betalningslista

Hämta en lista över alla betalningar med filtrering och paginering.

Parametrar i förfrågan

FältTypObligatorisktBeskrivningVärden
statusstringnejFiltrera efter betalningsstatus (se References)
date_fromdatenejStartdatum (YYYY-MM-DD), t.ex. 2026-01-01
date_todatenejSlutdatum (YYYY-MM-DD), t.ex. 2026-01-31
pageintnejSidnummer, standard 1
per_pageintnejAntal per sida, standard 15, max 5000
RequestPOST/v1/payment/list
curl -X POST https://api.2328.io/api/v1/payment/list \
  -H "Content-Type: application/json" \
  -H "User-Agent: MyShop/1.0 (+https://myshop.example)" \
  -H "project: YOUR_PROJECT_UUID" \
  -H "sign: YOUR_HMAC_SIGNATURE"
Response
Click Try it to see the response here.