Cost+Docs

Node.js / TypeScript

Ametlik Node.js SDK Cost+ makselüüsi jaoks

Ametlik Node.js/TypeScript SDK Cost+ makselüüsi jaoks. Lihtsustab HPP (hostitud makselehe) ümbersuunamise voogu, HMAC andmete allkirjastamist ja veebihaagi kontrollimist.

Funktsioonid

  • Null sõltuvust — kasutab ainult sisseehitatud Node.js crypto ja fetch
  • Täielikud TypeScript tüübid deklaratsioonikaartidega
  • HMAC-SHA256 allkirja genereerimine ja konstantse aja kontrollimine
  • Automaatne snake_case/camelCase vastendamine API ja SDK vahel
  • Veebihaagi parsimine + API-põhine tellimuse kontrollimine
  • Testitud Node.js 18, 20 ja 22 peal

Nõuded

Paigaldamine

npm install nopayn-node-sdk

Kiirstart

1. Kliendi initsialiseerimine

import { NoPaynClient } from 'nopayn-node-sdk';

const nopayn = new NoPaynClient({
  apiKey: 'your-api-key',      // From the NoPayn merchant portal
  merchantId: 'your-project',  // Your project/merchant ID
});

2. Makse loomine ja HPP-le suunamine

const result = await nopayn.generatePaymentUrl({
  amount: 1295,            // €12.95 in cents
  currency: 'EUR',
  merchantOrderId: 'ORDER-001',
  description: 'Premium Widget',
  returnUrl: 'https://shop.example.com/success',
  failureUrl: 'https://shop.example.com/failure',
  webhookUrl: 'https://shop.example.com/webhook',
  locale: 'en-GB',
  expirationPeriod: 'PT30M',
});

// Redirect the customer
// result.orderUrl   → HPP (customer picks payment method)
// result.paymentUrl → direct link to the first transaction's payment method
// result.signature  → HMAC-SHA256 for verification
// result.orderId    → NoPayn order UUID

3. Veebihaagi käsitlemine

app.post('/webhook', async (req, res) => {
  const verified = await nopayn.verifyWebhook(JSON.stringify(req.body));

  console.log(verified.order.status); // 'completed', 'cancelled', etc.
  console.log(verified.isFinal);      // true when the order won't change

  if (verified.order.status === 'completed') {
    // Fulfil the order
  }

  res.sendStatus(200);
});

API viide

new NoPaynClient(config)

ParameeterTüüpKohustuslikVaikeväärtus
apiKeystringJah
merchantIdstringJah
baseUrlstringEihttps://api.nopayn.co.uk

client.createOrder(params)

Loob tellimuse päringuga POST /v1/orders/.

ParameeterTüüpKohustuslikKirjeldus
amountnumberJahSumma väikseimas valuutaühikus (sendid)
currencystringJahISO 4217 kood (EUR, GBP, USD, NOK, SEK)
merchantOrderIdstringEiTeie sisemine tellimuse viide
descriptionstringEiTellimuse kirjeldus
returnUrlstringEiÜmbersuunamine pärast edukat makset
failureUrlstringEiÜmbersuunamine tühistamise/aegumise/vea korral
webhookUrlstringEiAsünkroonsed olekumuutuse teavitused
localestringEiHPP keel (en-GB, de-DE, nl-NL jne)
paymentMethodsPaymentMethod[]EiHPP meetodite filtreerimine
expirationPeriodstringEiISO 8601 kestvus (PT30M)

Saadaolevad makseviisid: credit-card, apple-pay, google-pay, vipps-mobilepay

client.getOrder(orderId)

Pärib tellimuse üksikasjad päringuga GET /v1/orders/{id}/.

client.createRefund(orderId, amount, description?)

Teeb täieliku või osalise tagasimakse päringuga POST /v1/orders/{id}/refunds/.

client.generatePaymentUrl(params)

Abimeetod, mis loob tellimuse ja tagastab:

{
  orderId: string;     // NoPayn order UUID
  orderUrl: string;    // HPP URL
  paymentUrl?: string; // Direct payment URL (first transaction)
  signature: string;   // HMAC-SHA256 of amount:currency:orderId
  order: Order;        // Full order object
}

client.generateSignature(amount, currency, orderId)

Genereerib HMAC-SHA256 hex allkirja. Kanoniline sõnum on ${amount}:${currency}:${orderId}, allkirjastatud API võtmega.

client.verifySignature(amount, currency, orderId, signature)

Konstantse aja HMAC-SHA256 allkirja kontrollimine. Tagastab true, kui kehtib.

client.verifyWebhook(rawBody)

Parsib veebihaagi keha, seejärel kutsub GET /v1/orders/{id}/, et kontrollida tegelikku olekut. Tagastab:

{
  orderId: string;
  order: Order;     // Verified via API
  isFinal: boolean; // true for completed/cancelled/expired/error
}

client.parseWebhookBody(rawBody)

Parsib ja valideerib veebihaagi keha ilma API-t kutsumata.

Eraldiseisvad HMAC utiliidid

import { generateSignature, verifySignature } from 'nopayn-node-sdk';

const sig = generateSignature('your-api-key', 1295, 'EUR', 'order-uuid');
const ok  = verifySignature('your-api-key', 1295, 'EUR', 'order-uuid', sig);

Veakäsitlus

import { NoPaynApiError, NoPaynError, NoPaynWebhookError } from 'nopayn-node-sdk';

try {
  await nopayn.createOrder({ amount: 100, currency: 'EUR' });
} catch (err) {
  if (err instanceof NoPaynApiError) {
    console.error(err.statusCode); // 401, 400, etc.
    console.error(err.errorBody);  // Raw API error response
  } else if (err instanceof NoPaynError) {
    console.error(err.message);    // Network or parsing error
  }
}

Tellimuse olekud

OlekLõplik?Kirjeldus
newEiTellimus loodud
processingEiMakse pooleli
completedJahMakse edukas — tarnige kaup
cancelledJahMakse tühistatud kliendi poolt
expiredJahMakselink aegunud
errorJahTehniline tõrge

Veebihaagi parimad tavad

  1. Kontrollige alati API kaudu — veebihaagi andmed sisaldavad ainult tellimuse ID-d, mitte kunagi olekut. SDK verifyWebhook() teeb seda automaatselt.
  2. Tagastage HTTP 200 kättesaamise kinnitamiseks. Iga muu kood käivitab kuni 10 korduskatset (2 minuti vahega).
  3. Rakendage varuküsitleja — tellimuste jaoks, mis on vanemad kui 10 minutit ja pole jõudnud lõppolekusse, küsitlege getOrder() turvavõrguna.
  4. Olge idempotentne — võite sama veebihaagi saada mitu korda.

Testkaardid

Kasutage neid kaarte Cost+ testrežiimis (liivakasti veebileht):

KaartNumberMärkused
Visa (edukas)4111 1111 1111 1111Suvaline CVV
Mastercard (edukas)5544 3300 0003 7Suvaline CVV
Visa (keeldutud)4111 1111 1111 1105Do Not Honor
Visa (ebapiisav saldo)4111 1111 1111 1151Insufficient Funds

Kasutage suvalist tulevast aegumiskuupäeva ja suvalist 3-kohalist CVC-d.

Demorakendus

Dockeri-põhine demorakendus on kaasas GitHub hoidlas täieliku maksevoo testimiseks:

cd demo

cat > .env << EOF
NOPAYN_API_KEY=your-api-key
NOPAYN_MERCHANT_ID=your-merchant-id
PUBLIC_URL=http://localhost:3000
EOF

docker compose up --build

Avage http://localhost:3000, et näha demo kassalehte.

Tugi

Vajate abi? Võtke ühendust meie tugimeeskonnaga aadressil support@costplus.io.

On this page