Ferramentas
SDK Node.js
Cliente oficial em Node.js, sem dependências, com novas tentativas e idempotência automáticas.
O @pineplechain/node funciona no Node 18.17 ou mais novo, é ESM e já vem com tipos TypeScript.
npm install @pineplechain/nodeDisponibilidade
O pacote chega ao npm junto com a abertura do MVP. Os links de pagamento ainda não estão no SDK: use as chamadas HTTP de Links de pagamento.Configurar
import { Pineplechain } from "@pineplechain/node"
const pineple = new Pineplechain(process.env.PINEPLECHAIN_API_KEY, {
baseUrl: "https://api.pineplechain.com/v1",
timeoutMs: 30_000,
maxRetries: 3,
})
const me = await pineple.me()- Toda chamada POST leva uma
Idempotency-Key, reaproveitada nas novas tentativas. - Erros de rede, tempo esgotado, 429 e 5xx são tentados de novo, com espera crescente.
- 4xx nunca é repetido.
Erros tipados
import { ConflictError, RateLimitError, ValidationError } from "@pineplechain/node"
try {
await pineple.payments.release(paymentId, { reason: "delivered" }, { idempotencyKey: "release-1842" })
} catch (err) {
if (err instanceof ValidationError) console.log(err.errors) // [{ path, message }]
else if (err instanceof ConflictError) console.log(err.detail) // e.g. escrow-expired
else if (err instanceof RateLimitError) console.log("retry later")
else throw err
}Listas e métricas
for await (const payment of pineple.payments.listAll({ status: "released" })) {
console.log(payment.id, payment.amount.value)
}
const summary = await pineple.metrics.summary({ start_date: "2026-10-01T00:00:00Z" })Pagamentos com escrow (beta)
Para vendas com entrega e cliente identificado. O cliente precisa ter carteira conectada e verificação (KYC) ativa antes do pagamento.
const payment = await pineple.payments.create(
{ customer_id: "cus_…", amount: { value: "25", asset: { type: "XRP" } }, description: "Order #1842" },
{ idempotencyKey: "order-1842" },
)
// payment.next_action.qr_png / deeplink: the payer signs in their wallet
const locked = await pineple.payments.waitFor(payment.id, { status: "locked", timeoutMs: 600_000 })
if (locked.status === "locked") {
await pineple.payments.release(payment.id, { reason: "delivered" }, { idempotencyKey: "release-1842" })
}Recursos
| Recurso | Métodos |
|---|---|
payments | create, retrieve, list, listAll, release, waitFor |
customers | create, retrieve, list, listAll, waitFor |
kycSessions | create, retrieve, list, listAll, submit, addDocument |
disputes | create, retrieve, list, listAll |
wallets | retrieve, balances |
signatureRequests | list, listAll, retrieve, cancel, waitFor |
metrics | summary, timeseries |
| Outros | me(), credentials.list, ledgerTransactions, network.retrieve, assets.list |