# Planet Pay payments

**Planet Pay** — plugin integrujący WooCommerce z bramką płatności Planet Pay.

Obsługuje płatności kartą, BLIK, Google Pay, Apple Pay oraz Pay-By-Link (Transfer Online).
Działa zarówno z klasycznym, jak i blokowym checkoutem WooCommerce.

---

## Wymagania

| Wymaganie              | Minimalna wersja |
|------------------------|------------------|
| WordPress              | 5.0             |
| WooCommerce            | 6.5             |
| PHP                    | 7.4             |
| Rozszerzenia PHP       | `ext-curl`, `ext-json`, `ext-sodium` |

---

## Metody płatności

| Metoda              | Classic checkout | Block checkout | Tryby                          |
|---------------------|:----------------:|:--------------:|--------------------------------|
| Karta płatnicza     | ✅               | ✅             | Redirect (paywall)             |
| BLIK                | ✅               | ✅             | Zero (inline) / Standard (redirect) |
| Google Pay          | ✅               | ✅             | Redirect (paywall)             |
| Apple Pay           | ✅               | ✅             | Express (one-tap) / Paywall (redirect) |
| Pay-By-Link         | ✅               | ✅             | Redirect (paywall)             |

---

## Funkcjonalności

### Płatności

- **BLIK Zero** — klient wpisuje 6-cyfrowy kod BLIK bezpośrednio na stronie checkout, bez przekierowania. Status płatności sprawdzany w czasie rzeczywistym (polling).
- **BLIK Standard** — przekierowanie na bramkę Planet Pay w celu dokończenia płatności BLIK.
- **Apple Pay Express Checkout** — płatność jednym dotknięciem bezpośrednio na stronie checkout, bez przekierowania.
- **Apple Pay Paywall** — przekierowanie na bramkę Planet Pay.
- **Weryfikacja domeny Apple Pay** — automatyczne serwowanie pliku weryfikacyjnego Apple (`/.well-known/apple-developer-merchantid-domain-association`).

### Zwroty (refundy)

Plugin zastępuje domyślny mechanizm zwrotów WooCommerce własnym flow opartym o dedykowane statusy zamówień:

| Status                 | Opis                                            |
|------------------------|--------------------------------------------------|
| `Refund Requested`     | Zwrot zlecony — oczekuje na przetworzenie        |
| `Refund Approved`      | Zwrot zaakceptowany przez Planet Pay              |
| `Refund Rejected`      | Zwrot odrzucony przez Planet Pay                  |

**Powiadomienia e-mail:**
- Merchant — otrzymuje e-mail przy: zleceniu zwrotu, zaakceptowaniu, odrzuceniu.
- Klient — otrzymuje e-mail przy zaakceptowaniu zwrotu.

### Administracja

- **Test połączenia** — wbudowane przyciski do weryfikacji połączenia z API (produkcja i sandbox).
- **Synchronizacja metod płatności** — pobieranie dostępnych metod płatności z bramki Planet Pay.
- **Powiadomienia e-mail dla merchanta** — konfigurowalny adres e-mail (lub wiele adresów) dla alertów o zwrotach.

---

## Instalacja

1. Pobierz plik `WooCommerce_planetpaypayment.zip`.
2. W panelu WordPress przejdź do `Wtyczki > Dodaj nową > Wyślij wtyczkę na serwer`.
3. Wgraj plik ZIP i kliknij **Zainstaluj teraz**.
4. Aktywuj wtyczkę w `Wtyczki > Zainstalowane wtyczki`.

---

## Konfiguracja

### Ustawienia główne

1. Przejdź do `WooCommerce > Ustawienia > Płatności`.
2. Znajdź **Planet Pay** i kliknij **Zarządzaj**.
3. Uzupełnij wymagane pola:
   - **Merchant ID** — identyfikator merchanta
   - **Secret** — klucz tajny
   - **Order Description** — opis zamówienia
   - **Notification Key (Salt)** — klucz do weryfikacji powiadomień

### Metody płatności

4. Włącz lub wyłącz poszczególne metody płatności (Card, BLIK, Google Pay, Apple Pay, Transfer Online).
5. **BLIK** — wybierz tryb: `zero` (wpisywanie kodu inline) lub `standard` (redirect).
6. **Apple Pay** — wybierz tryb: `express` (one-tap) lub `paywall` (redirect), skonfiguruj Apple Merchant ID i weryfikację domeny.

### Sandbox

7. Włącz tryb sandbox i uzupełnij dedykowane dane testowe:
   - Sandbox Merchant ID
   - Sandbox Secret
   - Sandbox URL (domyślnie: `https://api.sandbox.planetpay.pl/v1/ecommerce`)
8. Użyj przycisków **Test Connection**, aby zweryfikować poprawność konfiguracji.

### Powiadomienia

9. Skonfiguruj adresy e-mail merchanta do otrzymywania powiadomień o zwrotach.

---

## FAQ

**Jakie wersje WooCommerce są wspierane?**
WooCommerce 6.5 lub wyższa.

**Jaka wersja PHP jest wymagana?**
PHP 7.4+, z rozszerzeniami: `ext-curl`, `ext-json`, `ext-sodium`.

**Czy plugin obsługuje blokowy checkout WooCommerce?**
Tak — plugin w pełni wspiera zarówno klasyczny, jak i blokowy checkout.

**Jakie metody płatności są dostępne?**
Karta płatnicza, BLIK (tryb zero i standard), Google Pay, Apple Pay (tryb express i paywall) oraz Pay-By-Link (Transfer Online).

**Jak działają zwroty?**
Zwroty przetwarzane są przez bramkę Planet Pay. Po zleceniu zwrotu status zamówienia zmienia się na *Refund Requested*. Planet Pay przetwarza zwrot asynchronicznie i aktualizuje status na *Refund Approved* lub *Refund Rejected*. Powiadomienia e-mail są wysyłane automatycznie.

**Czym jest Apple Pay Express Checkout?**
Tryb Express pozwala klientom zapłacić jednym dotknięciem bezpośrednio na stronie checkout, bez przekierowania na zewnętrzną bramkę.

---

## Usługi zewnętrzne

Plugin komunikuje się z **PlanetPay API** w celu przetwarzania płatności online.

| | |
|---|---|
| **Serwis**        | PlanetPay API |
| **Sandbox URL**   | `https://api.sandbox.planetpay.pl/v1/ecommerce` |
| **Production URL**| `https://api.planetpay.pl/v1/ecommerce` |
| **Regulamin**     | [PlanetPay Terms](https://planetpay.pl/storage/app/uploads/public/646/f72/100/646f721008fb6967147831.pdf) |

**Dane wysyłane do API:**
- ID zamówienia, kwota transakcji
- Dane klienta (jeśli wymagane do przetworzenia)
- Dane uwierzytelniające merchanta
- Kod BLIK (dla płatności BLIK zero)
- Token Apple Pay (dla płatności Apple Pay express)
- Szczegóły zwrotu (przy zleceniu refundu)

**Kiedy dane są wysyłane:**
- Inicjacja płatności
- Sprawdzanie statusu płatności (BLIK polling)
- Zlecenie zwrotu
- Odbiór asynchronicznych powiadomień (payment/refund notifications)

---

## Bezpieczeństwo

Błędy bezpieczeństwa można zgłaszać przez **Patchstack Vulnerability Disclosure Program**.
Zespół Patchstack pomaga w walidacji, klasyfikacji i obsłudze podatności.

[Zgłoś podatność](https://patchstack.com/database/vdp/ffe38ea1-8bbd-46da-b008-5412592495d2)

---

## Licencja

GPLv2 or later — [https://www.gnu.org/licenses/gpl-2.0.html](https://www.gnu.org/licenses/gpl-2.0.html)
