Tovább a tartalomhoz

Akciók és szűrők: Stripe-argumentumok, regisztráció, állapotváltás, fizetés, profil

Tizenkét akció és szűrő paraméterekkel és példákkal: a Stripe-hívások argumentumai, a gateway-nek küldött előfizetési adat, sikeres regisztráció, tagság- és fizetésállapot-váltás, lejárt tagság szűrője, profilmentés.

Ez a fejezet a hookfejezetek sorát folytatja. A hookok teljes listája az Akciók és szűrők áttekintő listája fejezetben van. Az itt szereplő kód egyedi fejlesztés: a bővítmény támogatása nem terjed ki rá, bonyolultabb feladathoz érdemes fejlesztőt bevonni.

Az akciót add_action, a szűrőt add_filter hívással csatlakoztatod. Ha a függvényednek több paramétert kell kapnia, a prioritás után add meg a paraméterek számát is.

Szűrő. A Stripe Checkoutnak átadott előfizetési adatokat módosítja. A szűrt érték egy tömb: a kulcs a tagsági szint azonosítója, az érték pedig egy újabb tömb a szint nevével (name), leírásával (description) és a fizetőgomb feliratával (panelLabel). A felirat alapértelmezetten „Regisztráció”, próbaidőszaknál „Próba indítása”.

A példa minden szintnél átírja a gomb feliratát:

function pelda_rcp_stripe_checkout_subscription_data( $subscriptions ) {
foreach ( $subscriptions as $sub_id => $sub_data ) {
$subscriptions[ $sub_id ]['panelLabel'] = __( 'Regisztráció vagy megújítás', 'rcp' );
}
return $subscriptions;
}
add_filter( 'rcp_stripe_checkout_subscription_data', 'pelda_rcp_stripe_checkout_subscription_data' );

Szűrő. A Stripe fizetési szándék (Payment Intent) létrehozásakor küldött argumentumokat módosítja. Az elfogadott argumentumokat a Stripe API leírása sorolja fel.

Paraméter Típus Jelentés
$intent_args tömb A fizetési szándék argumentumai az API-kéréshez.
$gateway RCP_Payment_Gateway_Stripe A fizetési átjáró objektuma.

A példa megakadályozza, hogy a kártya adatai a Stripe-ban későbbi használatra elmentődjenek:

/**
* Ne mentse el a kártyaadatokat a Stripe-ban későbbi használatra.
*
* @param array $intent_args
* @param RCP_Payment_Gateway_Stripe $stripe_gateway
*
* @return array
*/
function pelda_rcp_ne_mentse_a_kartyat( array $intent_args, RCP_Payment_Gateway_Stripe $stripe_gateway ) {
unset( $intent_args['setup_future_usage'] );
return $intent_args;
}
add_filter( 'rcp_stripe_create_payment_intent_args', 'pelda_rcp_ne_mentse_a_kartyat', 10, 2 );

Szűrő. A Stripe-ban új előfizetés létrehozásakor használt argumentumokat módosítja.

Paraméter Típus Jelentés
$args tömb Az alapértelmezett argumentumok (lásd alább).
$stripe_gateway RCP_Payment_Gateway_Stripe A fizetési átjáró objektuma.

Az $args tömb elemei:

Elem Típus Jelentés
plan szöveg A Stripe-terv azonosítója.
prorate logikai Jóváírja-e a fel nem használt időt. Ajánlott érték: false, mert az arányosítást a bővítmény maga kezeli.
metadata tömb Tartalma: rcp_subscription_level_id (a tagsági szint azonosítója, egész szám) és rcp_member_id (a felhasználó azonosítója, egész szám).
coupon szöveg Csak kedvezménykód használatakor van benne.
trial_end egész szám A próbaidőszak végének időbélyege.

A trial_end értéke a bővítmény 3.2-es változatától mást jelent: a kezdeti fizetés mindig egyszeri tranzakcióként történik, és a bővítmény a trial_end paraméterrel adja meg az előfizetés kezdetét, vagyis a következő (első ismétlődő) fizetés napját.

Szűrő. A Stripe-ügyfélrekord létrehozásakor küldött argumentumokat módosítja. Az elfogadott argumentumokat a Stripe API leírása sorolja fel.

Paraméter Típus Jelentés
$customer_args tömb Az API-kérés argumentumai.
$gateway RCP_Payment_Gateway_Stripe A fizetési átjáró objektuma.

Szűrő. A fizetési átjárónak küldött előfizetési adatokat módosítja. A $subscription_data tömb elemei:

Elem Típus Jelentés
price tört szám A ma fizetendő alapár, a regisztrációs díj nélkül.
recurring_price tört szám Az ismétlődő fizetés összege.
discount tört szám A fizetésre alkalmazott kedvezmények összege.
discount_code szöveg A regisztrációnál használt kedvezménykód.
fee tört szám A kezdeti árra rakódó díjak összege.
length egész szám Az előfizetés hossza számmal.
length_unit szöveg A hossz egysége (day, month, year).
subscription_id egész szám A tagsági szint azonosítója.
subscription_name szöveg A tagsági szint neve.
key szöveg Az előfizetés kulcsa.
user_id egész szám A regisztráló WordPress-felhasználó azonosítója.
user_name szöveg A regisztráló felhasználó belépési neve.
email szöveg A regisztráló felhasználó e-mail-címe.
currency szöveg A pénznem kódja (például HUF).
auto_renew logikai Be van-e kapcsolva az automatikus megújítás.
return_url szöveg A sikeres regisztráció utáni átirányítás címe.
new_user logikai Létrejött-e új felhasználói fiók a regisztrációhoz.
trial_duration egész szám A próbaidőszak hossza (0, ha nincs).
trial_duration_unit szöveg A próbaidőszak egysége (day, month, year).
trial_eligible logikai Jogosult-e a felhasználó ingyenes próbára. Ha nem, a szint árát azonnal fizetnie kell.
post_data tömb A regisztrációs űrlapon elküldött összes adat.

Akció. Akkor fut, amikor a felhasználó feliratkozik egy tagsági szintre. Lefut új regisztrációnál, kézi megújításnál, szintemelésnél és szintcsökkentésnél is, de az automatikus megújításnál nem.

Paraméter Típus Jelentés
$member RCP_Member A tag objektuma.
$customer RCP_Customer Az ügyfél objektuma.
$membership RCP_Membership A tagság objektuma.

A példa extra levelet küld azoknak az új tagoknak, akik az 1., 2. vagy 3. azonosítójú szintre regisztráltak:

/**
* Extra követő e-mail küldése az 1., 2. vagy 3. szintre regisztráló tagoknak.
*
* @param RCP_Member $member
* @param RCP_Customer $customer
* @param RCP_Membership $membership
*
* @return void
*/
function pelda_rcp_regisztracio_utan( $member, $customer, $membership ) {
// Azok a szintazonosítók, amelyekre a kódnak futnia kell. Írd át a sajátjaidra.
$szintek = array( 1, 2, 3 );
// Ha nem ezek valamelyikén van, nem csinál semmit.
if ( ! in_array( $membership->get_object_id(), $szintek ) ) {
return;
}
$subject = __( 'További adatokat kérünk', 'rcp' );
$message = __( 'Ide írd az e-mail szövegét.', 'rcp' );
$emails = new RCP_Emails;
$emails->member_id = $member->ID;
$emails->send( $member->user_email, $subject, $message );
}
add_action( 'rcp_successful_registration', 'pelda_rcp_regisztracio_utan', 10, 3 );

Akció. Minden alkalommal lefut, amikor egy tagság állapota megváltozik.

Paraméter Típus Jelentés
$old_status szöveg A korábbi állapot.
$new_status szöveg Az új állapot.
$membership_id egész szám A tagság azonosítója.

rcp_transition_membership_status_{állapot}

Szekció neve “rcp_transition_membership_status_{állapot}”

Akció. Akkor fut le, amikor egy tagság állapota megváltozik, és a hook neve az új állapot azonosítóját tartalmazza. Például:

  • rcp_transition_membership_status_active
  • rcp_transition_membership_status_expired
  • rcp_transition_membership_status_cancelled
  • rcp_transition_membership_status_pending
Paraméter Típus Jelentés
$old_status szöveg A korábbi állapot.
$membership_id egész szám A tagság azonosítója.

Akció. Akkor fut, amikor egy fizetést frissíteni készül az adatbázisban. A frissítés előtt lép életbe.

Paraméter Típus Jelentés
$payment_id egész szám A fizetési rekord azonosítója.
$payment_data tömb A frissítendő adatok.

Akció. Akkor fut, amikor egy fizetés állapota frissül.

Paraméter Típus Jelentés
$status szöveg Az új állapot: pending, complete, failed, refunded, abandoned.
$payment_id egész szám A fizetés azonosítója.

Minden állapothoz külön akció is tartozik:

  • rcp_update_payment_status_complete
  • rcp_update_payment_status_failed
  • rcp_update_payment_status_refunded
  • rcp_update_payment_status_abandoned

Ezek csak egy paramétert kapnak: a fizetés azonosítóját.

Szűrő. Azt módosítja, hogy a megadott felhasználónak van-e legalább egy lejárt tagsága.

Paraméter Típus Jelentés
$has_expired_membership logikai true, ha a felhasználónak van legalább egy lejárt tagsága, különben false.
$user_id egész szám Az ellenőrzött felhasználó azonosítója.
$customer RCP_Customer vagy false Az ügyfél objektuma, ha van; ha nincs, false.

Akció. Akkor fut, amikor a felhasználó az [rcp_profile_editor] rövidkóddal megjelenített űrlapon módosítja a profilját.

Paraméter Típus Jelentés
$user_id egész szám A profilt szerkesztő felhasználó azonosítója.
$userdata tömb A beküldött WP_User mezők: ID, first_name, last_name, display_name, user_email.
$old_data WP_User A felhasználó objektuma a módosítás előtti állapotban.

A példa egyéni profilmezőket ment el. Ugyanez a minta használható az egyéni regisztrációs mezőknél is:

/**
* Egyéni mezők mentése, amikor a tag módosítja a profilját.
*
* @param int $user_id A felhasználó azonosítója.
* @param array $userdata A beküldött felhasználói mezők.
* @param WP_User $old_data A felhasználó a módosítás előtt.
*/
function pelda_rcp_profil_mentese( $user_id, $userdata = array(), $old_data = null ) {
if ( ! empty( $_POST['rcp_foglalkozas'] ) ) {
update_user_meta( $user_id, 'rcp_foglalkozas', sanitize_text_field( wp_unslash( $_POST['rcp_foglalkozas'] ) ) );
}
if ( ! empty( $_POST['rcp_helyszin'] ) ) {
update_user_meta( $user_id, 'rcp_helyszin', sanitize_text_field( wp_unslash( $_POST['rcp_helyszin'] ) ) );
}
}
add_action( 'rcp_user_profile_updated', 'pelda_rcp_profil_mentese', 10, 3 );

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások