# Stripe fizetési átjáró

> A Stripe bekapcsolása, a webhook beállítása, a fizetés menete, a sikertelen megújítások kezelése, tesztelés és a kártyaűrlap testreszabása.

A beépített Stripe-átjáróval a tagok közvetlenül a regisztrációs űrlapon fizethetnek bankkártyával. A kártyaadatokat a Stripe kezeli, a webhelyed nem tárolja őket. A használathoz Stripe-fiók kell.

## Bekapcsolás és összekötés

1. Nyisd meg a **Restrict → Settings → Payments** fület.
2. Az **Enabled Gateways** alatt jelöld be a **Stripe** négyzetet.
3. Ha a lap a „Activate the Stripe Payment Gateway” kártyát mutatja, add meg az e-mail-címed, vagy kattints a **Skip, setup payment gateway** hivatkozásra.
4. A **Stripe Settings** részben kattints a **Connect with Stripe** gombra.
5. A Stripe oldalán hozz létre új fiókot, vagy lépj be a meglévőbe, és fejezd be az űrlapot. Ezután a rendszer visszavisz a webhelyedre.
6. Kattints a **Save Options** gombra.

![A Payments fül bekapcsolt Stripe-pal: Connect with Stripe gomb, kártyakivonat-leíró és a webhook-címet mutató doboz](./kepek/fizetesi-atjarok-stripe-beallitasok.webp)

*A Payments fül bekapcsolt Stripe-pal: Connect with Stripe gomb, kártyakivonat-leíró és a webhook-címet mutató doboz* (https://minta-bolt.hu/wp-admin/admin.php?page=rcp-settings)

A képen a **Stripe Settings** alatt látod a **Connect with Stripe** gombot, a **Statement Descriptor** és a **Statement Descriptor Suffix** mezőt, valamint a **Disable Global Stripe.js** jelölőnégyzetet. Alul a doboz a webhook-címet mutatja.

| Beállítás | Mit csinál |
| --- | --- |
| **Sandbox Mode** | Tesztüzem: a fizetések a Stripe teszt-környezetében futnak. |
| **Statement Descriptor** | A vásárló kártyakivonatán megjelenő név. |
| **Statement Descriptor Suffix** | A kivonati név toldaléka. Ha kitöltöd, felülírja a **Statement Descriptor** értékét. |
| **Disable Global Stripe.js** | Alapból a Stripe.js fájl a webhely minden oldalán betöltődik, hogy a Stripe jobban észrevegye a gyanús viselkedést. Ha bejelölöd, csak a fizetésnél töltődik be. |

## Webhook

A Stripe webhookokon keresztül jelzi a webhelynek, ha egy előfizetés változik (befizetés, lemondás stb.). Az átjáró figyelőcíme:

```text
https://sajatoldal.example/?listener=stripe
```

A webhookot a Stripe-fiókodban kell kézzel felvenni:

1. A Stripe vezérlőpultján nyisd meg a **Developers → Webhooks** oldalt.
2. Kattints az **Add endpoint** gombra.
3. Az URL mezőbe írd be a fenti címet a saját domaineddel. A cím végén a perjel fontos.
4. Válaszd ki ezeket az eseményeket:

```text
customer.subscription.created
customer.subscription.deleted
charge.succeeded
charge.refunded
invoice.payment_succeeded
invoice.payment_failed
```

A webhookot külön fel kell venni teszt és éles módban is. Ha a webhook nem válaszol, vagy máshová irányít át, a fizetések késhetnek. A Stripe vezérlőpultján, a **Webhooks** részben ellenőrizheted, sikeresen feldolgozódnak-e az üzenetek.

## A fizetés menete

A vásárló a regisztrációs űrlapon kapja a bankkártya-mezőket. Kitöltés után egy folyamatjelző látszik, aztán három eset lehetséges:

- **A kártya nem kér hitelesítést:** a rendszer terheli a kártyát, és siker esetén a sikeres regisztráció oldalára viszi a vásárlót.
- **A kártya 3D Secure hitelesítést kér:** egy felugró ablakban kell elvégezni a hitelesítést. Siker esetén a vásárló a sikeres oldalra érkezik, hiba esetén hibaüzenetet kap, és újra próbálkozhat.
- **A kártyát elutasítják:** hibaüzenet jelenik meg, a vásárló másik kártyával próbálkozhat.

## Sikertelen automatikus megújítások

Kétféleképpen kezelheted a sikertelen megújító fizetéseket.

**1. A Stripe kezeli.** A Stripe vezérlőpultján nyisd meg a **Settings** oldalt, ott a **Stripe apps** alatt a **Subscriptions and emails** részt. Itt bekapcsolhatod:

- a sikertelen fizetések megelőzését (e-mail a lejáró kártyákról),
- a sikertelen fizetések kezelését (e-mail, ha a kártyás fizetés meghiúsul),
- a 3D Secure-t igénylő fizetések kezelését (a Stripe által üzemeltetett hivatkozás, amelyen a kártyabirtokos hitelesíthet).

Az újrapróbálkozások és az emlékeztetők ütemezése teljesen rád van bízva.

**2. A tagságkezelő bővítmény kezeli.** A **Restrict → Settings → Emails** fülön beállíthatod a „Renewal Payment Failed” e-mailt. Ezt akkor küldi a rendszer, ha a Stripe webhookja sikertelen megújítást jelez. Érdemes beletenni az `%update_billing_card_url%` sablonkódot: ez közvetlen hivatkozás arra az oldalra, ahol az `[rcp_update_card]` rövidkód van. Ha a vásárlónak kifizetetlen számlája van, ezen az oldalon a számla is látszik. A kártya frissítésekor szükség esetén 3D Secure hitelesítést is kér a rendszer, utána a lejárt számla kifizetődik, az új kártya pedig elmentődik a következő fizetésekhez.

## Tesztelés

A Stripe teszt-környezetében a teljes folyamatot kipróbálhatod éles indulás előtt.

1. Kapcsold be a **Sandbox Mode** beállítást a **Restrict → Settings → Payments** fülön.
2. Kösd össze a Stripe-fiókodat.
3. Állítsd a Stripe-fiókodat tesztüzemre.
4. Nyisd meg a regisztrációs oldalt kijelentkezve.
5. Add meg a felhasználó adatait. Bármi lehet, de érdemes olyan e-mail-címet írni, amelyhez hozzáférsz.
6. Válassz fizetős tagsági szintet.
7. Válaszd ki, hogy legyen-e automatikus megújítás.
8. Fizetési módnak válaszd a bankkártyát.
9. Kártyaszámnak írd be: `4242424242424242`. További tesztkártyákat a Stripe tesztelési leírásában találsz.
10. Lejáratnak bármilyen jövőbeli dátum jó.
11. Irányítószámnak bármilyen amerikai irányítószám jó, például `55320`. Más ország irányítószámához nemzetközi tesztkártya kell.
12. Kattints a **Register** gombra.
13. A sikeres oldalra kell érkezned, az új felhasználóval bejelentkezve.
14. A Stripe tranzakciótörténetében megjelenik a tesztfizetés.

Az új felhasználó fiókja ekkor teljesen aktív.

## Korlátok és fontos tudnivalók

- Stripe-pal automatikus megújításnál a tagsági szint időtartama legfeljebb 1 év lehet. Egy kétéves, automatikusan megújuló tagság nem állítható be.
- Az ingyenes próbaidőszak legfeljebb 5 év lehet.
- A bővítmény a Stripe API 2022-11-15-ös verziójáig lett tesztelve.
- Új, ismétlődő tagságnál az azonnal esedékes első fizetés mindig egyszeri terhelésként megy a Stripe-ban. Mellette létrejön egy előfizetés késleltetett kezdéssel, amely a Stripe-ban próbaidőszakként látszik, mert így lehet az előfizetés indulását a következő számlázási ciklusra halasztani.

## A kártyaűrlap testreszabása

A kártyamezőket a Stripe Elements tölti be egy iframe-ben, ezért a megszokott CSS nem hat rájuk. A testreszabás egyedi PHP-kóddal, az `rcp_stripe_scripts` szűrővel megy. Ez fejlesztői, egyedi kód: a hibakeresés a te feladatod.

### Az irányítószám-mező elrejtése

A Stripe a kártya országa alapján maga dönt, mutassa-e az irányítószám-mezőt. Ha mindenkinél el akarod rejteni:

```php
add_filter( 'rcp_stripe_scripts', function ( $stripe_args ) {
	$stripe_args['elementsConfig']['hidePostalCode'] = true;

	return $stripe_args;
} );
```

### A kártyamezők stílusa

A stílust JavaScript-beállításként kell átadni a `style` tömbben, a `base` kulcs alatt. Betűszín pirosra:

```php
add_filter( 'rcp_stripe_scripts', function ( $stripe_args ) {
	$stripe_args['elementsConfig']['style'] = array(
		'base' => array(
			'color' => 'red',
		),
	);

	return $stripe_args;
} );
```

Betűméret és betűtípus:

```php
add_filter( 'rcp_stripe_scripts', function ( $stripe_args ) {
	$stripe_args['elementsConfig']['style'] = array(
		'base' => array(
			'fontSize'   => '14px',
			'fontFamily' => '"Open Sans", "Helvetica Neue", "Helvetica", sans-serif',
		),
	);

	return $stripe_args;
} );
```

A `base` tömbbe a Stripe Elements által támogatott további stílustulajdonságok is felvehetők.
