# Függvények: lemondás és megújítás

> Az rcp_can_member_cancel(), rcp_can_member_renew() és rcp_cancel_member_payment_profile() elavult függvények és az új megfelelőik.

Mindhárom függvény a 3.0-s verziótól elavult, az újabb kód a konkrét tagságra épülő megfelelőiket használja. Egyedi kód, ezért a bevezetéséhez érdemes fejlesztő segítségét kérni.

## rcp_can_member_cancel()

Megmondja, hogy a felhasználó le tudja-e mondani az automatikus megújítást az oldalról (a weboldali lemondó hivatkozással, az átjáróban is). Az elavult `RCP_Member` osztályt és az ügyfél elsődleges tagságát használja, ahogy a régi, egytagságos oldalakon.

Új kódban használd az `rcp_can_membership_be_cancelled( $membership_id )` függvényt vagy az `RCP_Membership::can_cancel()` metódust, ha ismered a tagságot.

A lemondás csak akkor engedélyezett, ha a tagság ismétlődő, a státusza aktív, ki van fizetve, nem járt le, és az átjáró támogatja az oldalról történő lemondást (Stripe, API-hozzáféréssel rendelkező PayPal és Braintree, adatokkal beállított 2Checkout és hasonlók). Szűrője: `rcp_membership_can_cancel`.

- `$user_id` (egész): a felhasználó azonosítója. Alapérték: `0`, ez a bejelentkezett felhasználót jelenti.

Visszatérési érték: `true`, ha a tag lemondhat, különben `false`.

```php
if ( rcp_can_member_cancel() ) {
	// Mutasd a lemondó hivatkozást a bejelentkezett felhasználónak.
}
```

```php
$membership = rcp_get_customer_single_membership( $customer_id );
if ( $membership && rcp_can_membership_be_cancelled( $membership->get_id() ) ) {
	// Ez az ajánlott módszer, ha ismered a tagság azonosítóját.
}
```

A lemondás admin oldali menetéről a „Tagságok lemondása” fejezet szól, a lemondó hivatkozás címét az `rcp_get_membership_cancel_url()` adja.

## rcp_can_member_renew()

Megmondja, hogy a felhasználó megújíthatja-e a tagságát a bővítmény megújítási folyamatán át. Az ügyfél egyetlen tagságát tölti be az `rcp_get_customer_single_membership()` függvénnyel, ami akkor a megfelelő, ha a több tagság le van tiltva.

Új kódban az adott tagság `RCP_Membership::can_renew()` metódusát használd.

A megújítás jellemzően nem lehetséges: aktív, automatikusan megújuló előfizetésnél, lejárat nélküli (`none`) aktív tagságnál, ingyenes tagságnál, befejezett részletfizetési tervnél és inaktív tagsági szintnél (kivéve, ha az `rcp_can_renew_deactivated_membership_levels` szűrő engedi). Szűrője: `rcp_membership_can_renew`.

- `$user_id` (egész): a felhasználó azonosítója. Alapérték: `0`, ez a bejelentkezett felhasználót jelenti.

Visszatérési érték: `true`, ha a megújítás engedélyezett. `false`, ha nem az, vagy ha nincs ügyfél vagy tagság.

```php
if ( rcp_can_member_renew() ) {
	// Mutass megújítás gombot vagy a regisztrációs oldalra mutató hivatkozást.
}
```

```php
$membership = rcp_get_membership( $membership_id );
if ( $membership && $membership->can_renew() ) {
	// Egy konkrét tagság ellenőrzése.
}
```

## rcp_cancel_member_payment_profile()

Az ügyfél elsődleges tagságához (`rcp_get_customer_single_membership()`) tartozó fizetési profilt, vagyis az előfizetést mondja le az átjárónál. Ha akarod, a tagság státuszát is `cancelled`-re állítja (ez az alapérték). Ha több tagság engedélyezett, csak az elsődleges tagság mondódik le, nem a fiók összes tagsága.

Új kódban az `rcp_cancel_membership_payment_profile( $membership_id, $set_status )` függvényt használd, ha ismered a tagság azonosítóját. Visszatérési értéke `true` vagy `WP_Error`, az átjáró rétegétől függően.

- `$member_id` (egész): a WordPress-felhasználó azonosítója. Alapérték: `0`, ez a bejelentkezett felhasználót jelenti (az `rcp_get_customer_by_user_id()` alapján).
- `$set_status` (logikai): beállítsa-e a tagság státuszát `cancelled`-re. Alapérték: `true`.

Visszatérési érték: `true`, ha a lemondás sikerült. `false`, ha nincs ügyfél vagy tagság, ha a `$member_id` értéke `0` és senki nincs bejelentkezve, vagy ha az átjáró `WP_Error`-t adott.

```php
$success = rcp_cancel_member_payment_profile( get_current_user_id() );

if ( $success ) {
	// A fizetési profil lemondva az átjárónál.
}
```

```php
$result = rcp_cancel_membership_payment_profile( $membership_id, true );

if ( is_wp_error( $result ) ) {
	// Az átjáró hibájának kezelése.
}
```
