Cost+Docs

Linki płatności

Tworzenie linków płatności wielokrotnego użytku

Linki płatności to adresy URL wielokrotnego użytku, które umożliwiają klientom zapłacenie za zamówienie. W przeciwieństwie do standardowych zamówień, które wygasają po jednej nieudanej próbie, linki płatności obsługują wiele prób ponowienia, co czyni je idealnymi do faktur, płatności e-mailowych i scenariuszy, w których klient może nie zapłacić od razu.

Kluczowe cechy

  • Wielokrotnego użytku: Klienci mogą ponawiać próby płatności do 25 razy, jeśli poprzednie się nie powiodły.
  • Długo ważne: Domyślny czas ważności to 30 dni (konfigurowalne przez expiration_period).
  • Udostępnialne: Wyślij link przez e-mail, SMS, czat lub osadź go na swojej stronie.

Tworzenie linku płatności

Wyślij żądanie POST na /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"
  }'

Odpowiedź zawiera payment_url do udostępnienia klientowi oraz unikalny id do śledzenia:

Odpowiedź (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"
}

Zapisz id — użyjesz go później do sprawdzenia statusu linku płatności.

Pola wymagane

PoleOpis
merchant_order_idTwój własny identyfikator referencyjny linku płatności
amountKwota w groszach/centach (np. 9,95 EUR = 995)
currencyKod waluty ISO 4217 (np. EUR, GBP)

Pola opcjonalne

PoleOpis
descriptionOpis wyświetlany klientowi
expiration_periodCzas trwania w formacie ISO 8601. Domyślnie P30D (30 dni)
return_urlURL do przekierowania klienta po pomyślnej płatności
failure_urlURL do przekierowania klienta w przypadku anulowania, wygaśnięcia lub błędu
webhook_urlURL do otrzymywania powiadomień o zmianie statusu
customerObiekt z danymi klienta (imię, e-mail itp.)

Jeśli podasz zarówno return_url, jak i failure_url, klienci są przekierowywani na failure_url, gdy status zamówienia to cancelled, expired lub error. W przeciwnym razie wszystkie przekierowania prowadzą na return_url.

Pobieranie linku płatności

Wyślij żądanie GET na /v1/paymentlinks/{id}/, używając id linku płatności z odpowiedzi na żądanie tworzenia:

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

Odpowiedź zawiera aktualny status oraz odniesienia do wszystkich zamówień utworzonych z linku, pogrupowane według ich statusu:

Odpowiedź (przykład zakończony sukcesem)
{
  "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"]
  }
}

W tym przykładzie klient dokonał jednej nieudanej próby (zamówienie 0d79014c... ze statusem error) przed sukcesem (zamówienie 3bb663cc... ze statusem completed). Pełne szczegóły dowolnego zamówienia możesz pobrać przez GET /v1/orders/{order_id}/.

Statusy linków płatności

StatusOpis
newLink został utworzony, ale nie podjęto jeszcze żadnej próby płatności.
processingPróba płatności jest w trakcie realizacji.
all_unsuccessfulWszystkie dotychczasowe próby płatności zakończyły się niepowodzeniem. Klient nadal może ponowić próbę (do 25 prób).
completedPłatność zakończyła się sukcesem. Link nie jest już aktywny.
expiredLink wygasł przed dokonaniem pomyślnej płatności.

Status all_unsuccessful nie jest statusem końcowym. Klient nadal może próbować zapłacić, dopóki płatność się nie powiedzie, nie zostanie osiągnięta maksymalna liczba prób (25) lub link nie wygaśnie.

Gdy link płatności osiągnie status completed lub expired, nie może być ponownie użyty. Utwórz nowy link płatności, jeśli klient musi ponownie zapłacić.

Przykładowy przepływ

  1. Utwórz link płatności przez POST /v1/paymentlinks/.
  2. Udostępnij klientowi zwrócony payment_url (np. przez e-mail, SMS lub fakturę).
  3. Klient otwiera link i realizuje płatność.
  4. Cost+ wysyła webhook na Twój webhook_url, gdy status się zmieni.
  5. Zweryfikuj status linku płatności przez GET /v1/paymentlinks/{id}/.
  6. Zrealizuj zamówienie, gdy status to completed.

Powiązane punkty końcowe

On this page