pineplechainDocs

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/node

Disponibilidade

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

RecursoMétodos
paymentscreate, retrieve, list, listAll, release, waitFor
customerscreate, retrieve, list, listAll, waitFor
kycSessionscreate, retrieve, list, listAll, submit, addDocument
disputescreate, retrieve, list, listAll
walletsretrieve, balances
signatureRequestslist, listAll, retrieve, cancel, waitFor
metricssummary, timeseries
Outrosme(), credentials.list, ledgerTransactions, network.retrieve, assets.list

Algo errado nesta página? Fale com a gente.