# Gebyrer

2 af 2 understøttet
Kilde: https://plasapi.com/da/funktioner/patron/fees/

Lad lånerne se hvad de skylder biblioteket, og betale det fra klienten.

## 2.7.1 Se gebyrer — Understøttet

Vis hvad låneren skylder biblioteket, og hvorfor.

### Det kan du bygge

Et overblik over udestående gebyrer med beløb, forfaldsdato og det materiale hvert gebyr handler om. Hvert gebyr fortæller om det kan betales gennem API'et.

### Typisk flow

1. Klienten henter gebyrerne med `GetPatronFees`.
2. Hvert gebyr vises med type, beløb og, når de kendes, de eksemplarer det dækker.
3. Gebyrer der er `payable`, kan betales (2.7.2).

### Det leverer API'et

- `type` er `fee` (typisk en for sen aflevering), `compensation` (typisk et beskadiget eller mistet eksemplar) eller `send_to_debt_collector`.
- `amount` og `remainingAmount` er i mindste møntenhed, `currency` i ISO 4217. Er `remainingAmount` forskellig fra `amount`, er en del af gebyret betalt.
- `payableState` er `payable` eller `not_payable`: om gebyret kan betales og afsluttes gennem API'et.

### Kald i API'et

Forudsætter: 2.2.1

- [GET /patron/{patronId}/fee](https://plasapi.com/da/provider/v0.6.7/patron-fee/#GetPatronFees) — Get patron fees

## 2.7.2 Betal gebyrer — Understøttet

Lad låneren betale gebyrer fra klienten.

### Det kan du bygge

Lånerne betaler udestående gebyrer med de betalingsmetoder biblioteket tilbyder, og bibliotekssystemet registrerer hvert gebyr som betalt.

### Typisk flow

1. Låneren vælger de gebyrer der skal betales, og en betalingsmetode.
2. Klienten starter betalingen med `InitializePayment` og får et ordre-id.
3. Låneren betaler gennem betalingsløsningen, som returnerer et betalings-id.
4. Klienten registrerer betalingen med `FinalizePayment` med `paymentId` og `orderId`.
5. Svaret giver en `status` for hvert gebyr.

### Det leverer API'et

- `payment` i `GetConfiguration` angiver betalingsmetoderne i `methods` (`mobile_pay`, `vipps`), og om `partial` betaling er tilladt. Uden metoder er betaling ikke mulig.
- Er `initialize.state` `use_initialize` (standard), bør `InitializePayment` komme først (ellers fejler `FinalizePayment` med `300005`), og `orderId` er påkrævet. Med `do_not_use_initialize` bør klienten springe det over.
- Et gebyr må kun optræde én gang i `FinalizePayment`. `amount` på et gebyr er kun tilladt når delbetaling er slået til.
- `registered` betyder at gebyret blev betalt med denne betaling, og `registered_by_different_payment_id` at en anden betaling allerede havde betalt det. `fee_not_payable` og `not_allowed` betyder at det ikke blev betalt.
- Kaldes `FinalizePayment` igen med samme `paymentId`, returneres samme bekræftelses-id i mindst 48 timer. Er noget i forespørgslen ændret, fejler kaldet.

### Kald i API'et

Forudsætter: 2.2.1

Slås til i konfigurationen: `GetConfiguration`

I denne rækkefølge

1. [POST /patron/{patronId}/payment/initialize](https://plasapi.com/da/provider/v0.6.7/payment/#InitializePayment) — Initialize payment
2. [POST /patron/{patronId}/payment/finalize](https://plasapi.com/da/provider/v0.6.7/payment/#FinalizePayment) — Finalize Payment
