Cost+Docs

Linkuri de plată

Creați linkuri de plată reutilizabile

Linkurile de plată sunt URL-uri reutilizabile care permit clienților să plătească o comandă. Spre deosebire de comenzile standard care expiră după o singură tentativă eșuată, linkurile de plată suportă mai multe reîncercări, fiind ideale pentru facturi, plăți prin email și scenarii în care clientul nu plătește imediat.

Caracteristici principale

  • Reutilizabile: Clienții pot reîncerca plata de până la 25 de ori dacă tentativele anterioare eșuează.
  • Durată lungă de viață: Expirarea implicită este de 30 de zile (configurabilă prin expiration_period).
  • Partajabile: Trimiteți linkul prin email, SMS, chat sau integrați-l pe site-ul dvs.

Trimiteți o cerere POST la /v1/paymentlinks/:

POST /v1/paymentlinks/
curl -X POST https://api.costplus.online/v1/paymentlinks/ \
  -u YOUR_API_KEY: \
  -H "Content-Type: application/json" \
  -d '{
    "merchant_order_id": "invoice-1234",
    "amount": 995,
    "currency": "EUR",
    "description": "Invoice #1234"
  }'

Răspunsul include payment_url pentru a-l partaja cu clientul și un id unic pentru urmărire:

Response (201 Created)
{
  "id": "e6eecc6a-47c5-4948-bcc0-d8b73f5c55a1",
  "merchant_order_id": "invoice-1234",
  "amount": 995,
  "currency": "EUR",
  "description": "Invoice #1234",
  "expiration_period": "P30D",
  "payment_url": "https://pay.costplus.online/paymentlinks/e6eecc6a.../",
  "status": "new",
  "reason": "Payment Link was created, not yet visited",
  "orders": {},
  "created": "2026-01-15T12:00:00.000000Z"
}

Salvați id — îl veți folosi pentru a verifica statusul linkului de plată ulterior.

Câmpuri obligatorii

CâmpDescriere
merchant_order_idID-ul dvs. de referință propriu pentru linkul de plată
amountSuma în cenți (de ex., 9,95 EUR = 995)
currencyCod valutar ISO 4217 (de ex., EUR, GBP)

Câmpuri opționale

CâmpDescriere
descriptionDescriere afișată clientului
expiration_periodDurată ISO 8601. Implicit este P30D (30 de zile)
return_urlURL pentru redirecționarea clientului după plata reușită
failure_urlURL pentru redirecționarea clientului la anulare, expirare sau eroare
webhook_urlURL pentru a primi notificări de schimbare a statusului
customerObiect cu detaliile clientului (nume, email, etc.)

Dacă furnizați atât return_url cât și failure_url, clienții sunt redirecționați la failure_url când statusul comenzii este cancelled, expired sau error. Altfel, toate redirecționările merg la return_url.

Trimiteți o cerere GET la /v1/paymentlinks/{id}/ folosind id-ul linkului de plată din răspunsul de creare:

GET /v1/paymentlinks/{id}/
curl -u YOUR_API_KEY: \
  https://api.costplus.online/v1/paymentlinks/e6eecc6a-47c5-4948-bcc0-d8b73f5c55a1/

Răspunsul include statusul curent și referințe la toate comenzile create din link, grupate după statusul lor:

Response (completed example)
{
  "id": "e6eecc6a-47c5-4948-bcc0-d8b73f5c55a1",
  "merchant_order_id": "invoice-1234",
  "amount": 995,
  "currency": "EUR",
  "description": "Invoice #1234",
  "expiration_period": "P30D",
  "payment_url": "https://pay.costplus.online/paymentlinks/e6eecc6a.../",
  "status": "completed",
  "reason": "Completed",
  "completed": "2026-01-15T12:05:30.123456+00:00",
  "completed_order_id": "3bb663cc-2a20-400d-8bf6-18d9695d0c66",
  "orders": {
    "error": ["0d79014c-0aaa-4fd6-87c5-c8cfa5f5ac69"],
    "completed": ["3bb663cc-2a20-400d-8bf6-18d9695d0c66"]
  }
}

În acest exemplu, clientul a avut o tentativă eșuată (comanda 0d79014c... cu statusul error) înainte de a reuși (comanda 3bb663cc... cu statusul completed). Puteți prelua detaliile complete ale oricărei comenzi prin GET /v1/orders/{order_id}/.

Statusurile linkului de plată

StatusDescriere
newLinkul a fost creat, dar nu s-a efectuat nicio tentativă de plată.
processingO tentativă de plată este în curs de desfășurare.
all_unsuccessfulToate tentativele de plată de până acum au eșuat. Clientul poate încă reîncerca (până la 25 de tentative).
completedPlata a fost efectuată cu succes. Linkul nu mai este activ.
expiredLinkul a expirat înainte ca o plată să fie efectuată cu succes.

Statusul all_unsuccessful nu este un status final. Clientul poate încă să încerce să plătească din nou până când plata reușește, se atinge numărul maxim de tentative (25) sau linkul expiră.

Odată ce un link de plată ajunge la statusul completed sau expired, nu mai poate fi utilizat din nou. Creați un link de plată nou dacă clientul trebuie să plătească din nou.

Exemplu de flux de lucru

  1. Creați un link de plată prin POST /v1/paymentlinks/.
  2. Partajați payment_url returnat cu clientul (de ex., prin email, SMS sau factură).
  3. Clientul deschide linkul și finalizează plata.
  4. Cost+ trimite un webhook la webhook_url când statusul se schimbă.
  5. Verificați statusul linkului de plată prin GET /v1/paymentlinks/{id}/.
  6. Onorați comanda odată ce statusul este completed.

Endpoint-uri asociate

On this page