# Gebyrer

2 av 2 støttet
Kilde: https://plasapi.com/no/funksjoner/patron/fees/

La lånerne se hva de skylder biblioteket, og betale det fra klienten.

## 2.7.1 Se gebyrer — Støttet

Vis hva låneren skylder biblioteket, og hvorfor.

### Dette kan du bygge

En oversikt over utestående gebyrer med beløp, forfallsdato og materialet hvert gebyr gjelder. Hvert gebyr forteller om det kan betales gjennom API-et.

### Typisk flyt

1. Klienten henter gebyrene med `GetPatronFees`.
2. Hvert gebyr vises med type, beløp og, når de er kjent, eksemplarene det dekker.
3. Gebyrer som er `payable`, kan betales (2.7.2).

### Dette leverer API-et

- `type` er `fee` (typisk for sen innlevering), `compensation` (typisk et skadet eller tapt eksemplar) eller `send_to_debt_collector`.
- `amount` og `remainingAmount` er i minste myntenhet, `currency` i ISO 4217. Er `remainingAmount` forskjellig fra `amount`, er en del av gebyret betalt.
- `payableState` er `payable` eller `not_payable`: om gebyret kan betales og fullføres gjennom API-et.

### Kall i API-et

Forutsetter: 2.2.1

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

## 2.7.2 Betal gebyrer — Støttet

La låneren betale gebyrer fra klienten.

### Dette kan du bygge

Lånerne betaler utestående gebyrer med betalingsmetodene biblioteket tilbyr, og biblioteksystemet registrerer hvert gebyr som betalt.

### Typisk flyt

1. Låneren velger gebyrene som skal betales, og en betalingsmetode.
2. Klienten starter betalingen med `InitializePayment` og får en ordre-ID.
3. Låneren betaler gjennom betalingsløsningen, som returnerer en betalings-ID.
4. Klienten registrerer betalingen med `FinalizePayment` med `paymentId` og `orderId`.
5. Svaret gir en `status` for hvert gebyr.

### Dette leverer API-et

- `payment` i `GetConfiguration` angir betalingsmetodene i `methods` (`mobile_pay`, `vipps`), og om `partial` betaling er tillatt. Uten metoder er betaling ikke mulig.
- Er `initialize.state` `use_initialize` (standard), bør `InitializePayment` komme først (ellers feiler `FinalizePayment` med `300005`), og `orderId` er påkrevd. Med `do_not_use_initialize` bør klienten hoppe over det.
- Et gebyr kan bare stå én gang i `FinalizePayment`. `amount` på et gebyr er bare tillatt når delbetaling er slått på.
- `registered` betyr at gebyret ble betalt med denne betalingen, og `registered_by_different_payment_id` at en annen betaling allerede hadde betalt det. `fee_not_payable` og `not_allowed` betyr at det ikke ble betalt.
- Kalles `FinalizePayment` igjen med samme `paymentId`, returneres samme bekreftelses-ID i minst 48 timer. Er noe i forespørselen endret, feiler kallet.

### Kall i API-et

Forutsetter: 2.2.1

Slås på i konfigurasjonen: `GetConfiguration`

I denne rekkefølgen

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