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
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
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 kundSvar:
{
"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-
nameom 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:
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:
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_merchant5. 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.
| Endpoint | Returnerar |
|---|---|
GET /partners/:partnerId/stats | Volym, transaktionsantal, intäktsdelning |
GET /partners/:partnerId/exchanges | Alla exchanges krediterade till denna partner |
GET /partners/:partnerId/invoices | Alla fakturor skapade för denna partner |
curl https://api.p3p.xyz/partners/0xYourMerchantWallet/statsTips 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=trueför att uppdatera det. - Återbetalningar: tillgängliga endast när insättningen upptäcks men swappen misslyckas. För fakturor utan
wallet_refundfö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ält | Typ | Krävs | Beskrivning |
|---|---|---|---|
chain_from | string | ja | Kedja kunden betalar från |
token_from | string | ja | Token kunden betalar med |
amount_from | string | ja | Belopp kunden betalar |
chain_to | string | ja | Kedja du tar emot medel på |
token_to | string | ja | Token du tar emot |
wallet_merchant | string | ja | Din 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 handlarepathFrom—<amount>:<token>.<chain>(t.ex.100:usdt.ton)pathTo— valfritt,<token>.<chain>om du vill konvertera; standard ärpathFrom
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
{ "error": "merchant_id_required", "message": "..." }| Kod | Betydelse |
|---|---|
invalid_json | Begäran-body är inte giltigt JSON |
merchant_id_required | Faktura GET-endpoint anropad utan handlaridentifierare |
partner_not_found | Ingen partner matchar den angivna merchantId |
merchant_wallet_not_found | Partnern finns men har ingen plånbok på målkedjan |
amount_too_small | Beloppet under leverantörens minimum |
amount_too_big | Beloppet över leverantörens maximum |