Skip to content

Handlare

Använd invoice-endpoints för att debitera dina kunder i vilken stödd token som helst och ta emot en annan i din egen plånbok. p3p hanterar cross-chain routing.

Hur det fungerar

1
Registrera dig som partnerHämta ditt partner-ID från dashboarden
2
Skapa en fakturaPOST /invoice/create
3
Kunden betalarTill `deposit_address`
4
Du tar emot medelAvräknat direkt till din plånbok

p3p förvaltar aldrig dina medel längre än de få sekunder som krävs för att routa swappen. Återbetalningar, när tillämpligt, går automatiskt till insättningsavsändaren.

1. Bli en handlare

Registrera dig på Partner Dashboard med en plånbok du kontrollerar. Använd ditt tilldelade Partner-ID som opts.partner_id (i /exchange/create) eller som wallet_merchant (i /invoice/create) för att tillskriva transaktioner till ditt konto.

Inget registreringsformulär, ingen e-postbekräftelse och inget API-token. Plånboken är legitimationen.

Behandla din handlarplånbok som en API-nyckel

Den som kontrollerar plånboken kontrollerar handlarkontot. Använd en dedikerad plånbok för ditt företag, separat från personliga medel.

2. Skapa en faktura

Två sätt att göra detta.

Programmatiskt (rekommenderas)

POST /invoice/create

ts
const invoice = await fetch("https://api.p3p.xyz/invoice/create", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    chain_from: "eth",  token_from: "usdt", amount_from: "50",
    chain_to:   "ton",  token_to:   "usdt",
    wallet_merchant: "UQYourMerchantTonWallet"
  }),
}).then(r => r.json())

console.log(invoice.deposit_address) // visa för din kund

Svar:

json
{
  "id": "in_ab12cd...",
  "invoice": true,
  "chain_from": "eth",  "token_from": "usdt", "amount_from": "50",
  "chain_to":   "ton",  "token_to":   "usdt",
  "amount_to":  "50.0",
  "wallet_merchant": "UQYourMerchantTonWallet",
  "deposit_address": "0xDepositAddressForCustomer",
  "rate":     "1.0",
  "duration": 60
}

Delbar URL (ingen integration behövs)

För en utcheckningsknapp, QR-kod eller delningslänk kan du bygga fakturan från en URL:

https://api.p3p.xyz/invoice/create/:merchantId/:pathFrom/:pathTo?

Exempel:

# kunden betalar 100 USDT på TON, du tar emot USDT på TON
https://api.p3p.xyz/invoice/create/0xYourMerchantWallet/100:usdt.ton/usdt.ton

# kunden betalar 50 TON, du tar emot USDT på TON
https://api.p3p.xyz/invoice/create/acme/50:ton.ton/usdt.ton

# enkel form: betala och ta emot samma tillgång
https://api.p3p.xyz/invoice/create/acme/100:usdt.ton

:merchantId kan vara:

  • partner-id som returnerades vid registrering,
  • en partner-name om du satte en, eller
  • en plånboksadress som redan är registrerad som handlare.

3. Visa insättningsadressen

Rendera invoice.deposit_address och invoice.amount_from i ditt UI, helst som en QR-kod:

ts
import QRCode from "qrcode"

const dataUrl = await QRCode.toDataURL(
  `${invoice.chain_from}:${invoice.deposit_address}?amount=${invoice.amount_from}`
)

Kunden skickar amount_from av token_from till den adressen. Allt annat (fel belopp, fel token, utgånget fönster) återbetalas automatiskt.

4. Bekräfta betalning

Polla /check/:id precis som en vanlig exchange:

ts
async function waitForInvoicePayment(id: string) {
  while (true) {
    const s = await fetch(`https://api.p3p.xyz/check/${id}`).then(r => r.json())
    if (s.status === "complete") return s
    if (s.status === "failed" || s.status === "refunded") throw new Error(s.status)
    await new Promise(r => setTimeout(r, 4000))
  }
}

await waitForInvoicePayment(invoice.id)
// medlen är nu i wallet_merchant

5. Inspektera dina intäkter

Tre partner-endpoints är skrivskyddade och kräver ingen autentisering utöver att känna till partnerId. Intäkter avräknas enligt dina konfigurerade utbetalningsinställningar (antingen omedelbart per swap eller via schemalagda USDT-uttag) — konfigurera detta i Partner Dashboard.

EndpointReturnerar
GET /partners/:partnerId/statsVolym, transaktionsantal, intäktsdelning
GET /partners/:partnerId/exchangesAlla exchanges krediterade till denna partner
GET /partners/:partnerId/invoicesAlla fakturor skapade för denna partner
bash
curl https://api.p3p.xyz/partners/0xYourMerchantWallet/stats

Tips och fallgropar

  • En plånbok per kedja: en partner ackumulerar plånböcker, en per kedja. Använd rätt plånbok för målkedjan i wallet_merchant.
  • Samma kedja + samma token: hoppar över swap-motorn och fungerar som en enkel vidarebefordringsadress — användbar för enkla "betala mig X USDT på TON"-länkar.
  • Insättningsfönster: fakturor delar standardfönstret på ~6 minuter. Om kunden tar längre tid, anropa /check/:id?bump=true för att uppdatera det.
  • Återbetalningar: tillgängliga endast när insättningen upptäcks men swappen misslyckas. För fakturor utan wallet_refund försöker medlen återbetalas till avsändaradressen upptäckt on-chain.

Endpoint-referens

Alla handlar-endpoints är öppna — ingen api-key-header krävs. Din plånbok är legitimationen.

1. Skapa faktura

POST /invoice/create

FältTypKrävsBeskrivning
chain_fromstringjaKedja kunden betalar från
token_fromstringjaToken kunden betalar med
amount_fromstringjaBelopp kunden betalar
chain_tostringjaKedja du tar emot medel på
token_tostringjaToken du tar emot
wallet_merchantstringjaDin plånbok på målkedjan

Returnerar ett fakturaobjekt inklusive id, deposit_address, amount_from, amount_to, rate och duration.

2. Skapa delbar faktura-URL

GET /invoice/create/:merchantId/:pathFrom/:pathTo?

Delbar faktura-URL — lägg den i en QR-kod eller en knapp.

  • merchantId — partner-id, partnernamn eller en plånbok som redan är registrerad som handlare
  • pathFrom<amount>:<token>.<chain> (t.ex. 100:usdt.ton)
  • pathTo — valfritt, <token>.<chain> om du vill konvertera; standard är pathFrom

Returnerar samma objekt som POST /invoice/create.

3. Hämta partnerstatistik

GET /partners/:partnerId/stats

Aggregerad volym, transaktionsantal och livstidsintäktsdelning för partnerplånboken.

4. Hämta partner-exchanges

GET /partners/:partnerId/exchanges

Paginerad lista över exchanges krediterade till partnern.

5. Hämta partner-fakturor

GET /partners/:partnerId/invoices

Paginerad lista över fakturor skapade för partnern.

Fel

json
{ "error": "merchant_id_required", "message": "..." }
KodBetydelse
invalid_jsonBegäran-body är inte giltigt JSON
merchant_id_requiredFaktura GET-endpoint anropad utan handlaridentifierare
partner_not_foundIngen partner matchar den angivna merchantId
merchant_wallet_not_foundPartnern finns men har ingen plånbok på målkedjan
amount_too_smallBeloppet under leverantörens minimum
amount_too_bigBeloppet över leverantörens maximum