Siirry sisältöön

TypeScript-SDK

@feitpay/sdk on fetch-rajapinnan päälle rakennettu riippuvuudeton asiakaskirjasto, jonka tyypit on luotu OpenAPI-sopimuksesta. Se toimii Node.js 20+:ssa, Denossa, Bunissa ja edge-ajoympäristöissä.

Terminal window
pnpm add @feitpay/sdk
import { FeitPay, FeitPayError } from '@feitpay/sdk';
const gp = new FeitPay({
apiKey: process.env.FEITPAY_API_KEY!, // gp_live_…
baseUrl: 'https://api.feitpay.com',
timeoutMs: 30_000, // per attempt
maxRetries: 2, // GET and idempotent POST only
});
Nimiavaruus Metodit
paymentIntents create, retrieve, list, cancel, resolve, timeline
checkoutSessions create, retrieve
invoices create, retrieve, list, void
paymentLinks create, retrieve, list, update
transactions list, retrieve
wallets create, retrieve, list, disable, createOwnershipChallenge, submitOwnershipProof
stores, organizations, customers list / retrieve
webhookEndpoints create, list, retrieve, update, rotateSecret, sendTest
webhookDeliveries list, retrieve, retry
events list, retrieve
reports payments (CSV-merkkijono tai JSON), reconciliation
billing invoices, usage
auditEvents list
platform capabilities, networks, assets, health
  • Idempotenssi — luontimetodit lähettävät Idempotency-Key-otsakkeen automaattisesti (gp_sdk_…) ja käyttävät sitä uudelleen uudelleenyrityksissä. Anna { idempotencyKey } sitoaksesi sen omaan tilausnumeroosi.
  • Uudelleenyritykset — eksponentiaalinen viive täydellä satunnaistuksella (Retry-After huomioiden) verkkovirheissä sekä 429- ja 5xx-vastauksissa, vain GET-pyynnöille ja avaimellisille POST-pyynnöille.
  • Sivutus — await gp.invoices.list() palauttaa yhden sivun; for await (const inv of gp.invoices.list()) käy läpi kaikki sivut; .toArray(max) kerää rajatun määrän.
  • Virheet — jokainen virhe on FeitPayError-aliluokka, jolla on kentät type, code, param, requestId ja status.
  • Raha — summat ovat merkkijonoja. formatBaseUnits('99834', 8) === '0.00099834' käyttää BigInt-tyyppiä, ei koskaan liukulukuja.
  • Polkujen turvallisuus — tunnisteet koodataan yhdeksi polun osaksi.
try {
const intent = await gp.paymentIntents.retrieve('pi_…');
if (intent.fulfillable) ship(intent.merchant_order_id);
} catch (err) {
if (err instanceof FeitPayError && err.type === 'not_found_error') return null;
throw err;
}