# Utworzenie subskrypcji

Zobacz https://docs.simpay.pl/payment/blik-recurrent po więcej informacji.

Endpoint: POST /payment/{serviceId}/blik/subscriptions
Version: 1.0.0
Security: bearerAuth

## Header parameters:

  - `x-sim-flow-submerchant` (string)
    Dotyczy tylko integratorów SimPay Flow. Jeśli nie korzystasz z SimPay Flow - pomiń ten nagłówek.

Wskazuje submerchanta, w imieniu którego wykonywane jest żądanie. Wartość to ID submerchanta (flsm_...)
lub jego customId nadany przy rejestracji (maks. 36 znaków).

Kiedy nagłówek jest wymagany?

Gdy serviceId w ścieżce to usługa Płatności Online powiązana z Twoją aktywną usługą Flow
(usługa nadrzędna, widoczna w paymentService w GET /flow/{flowServiceId}).
Wtedy każde żądanie pod /payment/{serviceId}/... musi zawierać ten nagłówek - bez niego otrzymasz
422 z kodem SIMPAY_FLOW_VALIDATION_ERROR.

Dla zwykłych usług Płatności Online (niepowiązanych z Flow) nagłówek jest ignorowany.

Jak to działa?

- W ścieżce zawsze podajesz serviceId usługi nadrzędnej (powiązanej z usługą Flow), a nie usługi submerchanta.
- Żądanie jest wykonywane w kontekście usługi Płatności Online submerchanta - transakcje, zwroty, kanały, subskrypcje
  i aliasy BLIK dotyczą wskazanego submerchanta, a środki trafiają na jego portfel.
- Usług Płatności Online submerchantów nie można używać bezpośrednio - podanie ich ID w serviceId
  zwróci 422 (VALIDATION_ERROR).

Możliwe błędy:

- 422 SIMPAY_FLOW_VALIDATION_ERROR - brak nagłówka dla usługi powiązanej z Flow lub nieprawidłowa wartość,
- 404 FLOW_SUBMERCHANT_NOT_FOUND - submerchant nie istnieje w ramach tej usługi Flow,
- 403 FLOW_SUBMERCHANT_NOT_ACTIVE - submerchant nie zakończył onboardingu lub nie jest aktywny,
- 400 FLOW_SUBMERCHANT_PAYMENT_SERVICE_NOT_FOUND / FLOW_SUBMERCHANT_PAYMENT_SERVICE_NOT_ACTIVE - usługa Płatności Online submerchanta nie istnieje lub nie jest aktywna.

Przykład: x-sim-flow-submerchant: flsm_aaaabbbb lub x-sim-flow-submerchant: user-123
    Example: "flsm_aaaabbbb"

## Path parameters:

  - `serviceId` (string, required)
    Id usługi

## Request fields (application/json):

  - `transactionId` (string, required)
    Id transakcji

  - `ticket` (object, required)
    Obiekt kodu BLIK
    Example: {"T6":"462755"}

  - `ticket.T6` (string, required)
    6-cyfrowy Kod BLIK
    Example: "462755"

  - `alias` (object, required)
    Informacje o Aliasie BLIK
    Example: {"value":"AAABBCC","type":"PAYID","label":"Płatność za plan premium w serwisie aaa"}

  - `alias.value` (string, required)
    Wartość aliasu (np. ID subskrypcji)
    Example: "AAABBCC"

  - `alias.type` (string, required)
    Typ aliasu (dla subskrypcji - PAYID)
    Enum: "PAYID"

  - `alias.label` (string)
    Etykieta widoczna w aplikacji bankowej płacącego
    Example: "Płatność za plan premium w serwisie aaa"

  - `options` (any, required)

  - `descriptions` (object,null)
    Dodatkowe opisy przekazywane do banku płacącego

  - `descriptions.line1` (string,null)
    Linijka nr 1

  - `descriptions.line2` (string,null)
    Linijka nr 2

  - `descriptions.line3` (string,null)
    Linijka nr 3

## Response 201 fields (application/json):

  - `success` (boolean, required)
    Status zapytania
    Example: true

  - `data` (object, required)
    Example: {"subscriptionId":"019970c6-3d3e-708c-9313-5f89e251e2c0","aliasId":"019970c6-3ce8-71e7-8214-20fd635532fb"}

  - `data.subscriptionId` (string, required)
    Id subskrypcji

  - `data.aliasId` (string, required)
    Id aliasu

## Response 400 fields (application/json):

  - `success` (boolean, required)
    Request status

  - `errorCode` (string, required)
    Error status code
    Example: "INVALID_BLIK_CODE"

  - `message` (string, required)
    Error message
    Example: "Invalid BLIK code."

## Response 401 fields (application/json):

  - `success` (boolean, required)
    Request status

  - `errorCode` (string, required)
    Error status code
    Enum: "UNAUTHORIZED"

## Response 403 fields (application/json):

  - `success` (boolean, required)
    Request status

  - `errorCode` (string, required)
    Error status code
    Enum: "INVALID_ABILITY_PROVIDED", "IP_ADDRESS_NOT_WHITELISTED"

## Response 404 fields (application/json):

  - `success` (boolean, required)
    Request status

  - `errorCode` (string, required)
    Error status code
    Enum: "SERVICE_NOT_FOUND", "TRANSACTION_NOT_FOUND", "ROUTE_NOT_FOUND"

## Response 409 fields (application/json):

  - `success` (boolean, required)
    Request status

  - `errorCode` (string, required)
    Error status code
    Example: "ALIAS_ALREADY_EXISTS"

  - `message` (string, required)
    Error message
    Example: "Selected alias value has been already in our system. You must pass unique alias value, for example subscription id."

## Response 422 fields (application/json):

  - `success` (boolean, required)
    Request status

  - `errorCode` (string, required)
    Error status code
    Enum: "VALIDATION_ERROR"

  - `errors` (object, required)
    Example: {"amount":["The amount field is required."],"currency":["The selected currency is invalid."]}

  - `errors.amount` (array)
    Example: ["The amount field is required."]


