Autentificare
Începe

Documentație Easy Digital Downloads

Documentație, Materiale de Referință și Tutoriale pentru Easy Digital Downloads 

Plăți Recurente – Dezvoltator: EDD_Subscription

Plăți Recurente vine cu o nouă clasă EDD pentru gestionarea abonamentelor. Clasa EDD_Subscription permite unui dezvoltator să lucreze cu abonamentele în mod programatic. Acest document va lista proprietățile, metodele și funcționalitatea sugerată a EDD_Subscription.

Proprietăți

  • $id = 0;
  • $customer_id = 0;
  • $period = ”;
  • $initial_amount = ”;
  • $recurring_amount = ”;
  • $bill_times = 0;
  • $parent_payment_id = 0;
  • $product_id = 0;
  • $created = ‘0000-00-00 00:00:00’;
  • $expiration = ‘0000-00-00 00:00:00’;
  • $status = ‘pending’;
  • $profile_id = ”;
  • $gateway = ”;
  • $customer;

Metode

  • create( $data = array() )
  • update( $args = array() )
  • delete()
  • get_original_payment_id()
  • get_child_payments()
  • get_total_payments()
  • get_lifetime_value()
  • add_payment( $args = array() )
  • renew()
  • complete()
  • expire()
  • failing()
  • cancel()
  • can_cancel()
  • get_cancel_url()
  • can_update()
  • get_update_url()
  • is_active()
  • is_expired()
  • get_expiration()
  • get_expiration_time()
  • get_status()
  • get_status_label()
  • payment_exists( $txn_id = ” )

Utilizare

Instanțiere de bază

Un obiect EDD_Subscription „gol” poate fi creat cu acest cod:

$subscription = new EDD_Subscription();

Aceasta va returna un obiect cu această structură:

EDD_Subscription Object
(
    [subs_db:EDD_Subscription:private] => EDD_Subscriptions_DB Object
        (
            [table_name] => wp_edd_subscriptions
            [version] => 1.0
            [primary_key] => id
        )

    [id] => 0
    [customer_id] => 0
    [period] => 
    [initial_amount] => 
    [recurring_amount] => 
    [bill_times] => 0
    [parent_payment_id] => 0
    [product_id] => 0
    [created] => 0000-00-00 00:00:00
    [expiration] => 0000-00-00 00:00:00
    [status] => pending
    [profile_id] => 
    [gateway] => 
    [customer] => 
)
Instanțierea unui abonament existent

Constructorul EDD_Subscription acceptă 2 argumente. Primul este fie un număr întreg care reprezintă un ID de abonament, fie, dacă al doilea argument este adevărat, primul poate fi un ID de profil de abonament.

Puteți găsi un ID de abonament în URL în timp ce vizualizați un abonament.

Puteți găsi ID-ul profilului listat atunci când vizualizați un abonament.

Aceste două linii de cod vor returna același rezultat deoarece se referă la același abonament:

$subscription = new EDD_Subscription( 3 );
$subscription = new EDD_Subscription( 'sub_85YmWtzABSAWN7', true );

Liniile de cod de mai sus ar returna fiecare un obiect de acest fel:

EDD_Subscription Object
(
    [subs_db:EDD_Subscription:private] => EDD_Subscriptions_DB Object
        (
            [table_name] => wp_edd_subscriptions
            [version] => 1.0
            [primary_key] => id
        )

    [id] => 1
    [customer_id] => 3
    [period] => month
    [initial_amount] => 50.00
    [recurring_amount] => 50.00
    [bill_times] => 0
    [parent_payment_id] => 87
    [product_id] => 85
    [created] => 2016-03-15 15:36:30
    [expiration] => 2016-04-15 23:59:59
    [status] => pending
    [profile_id] => paypal-363e3cc178dab152bb59b958024bce75
    [gateway] => paypal
    [customer] => EDD_Customer Object
        (
            [id] => 3
            [purchase_count] => 3
            [purchase_value] => 110.000000
            [email] => [email protected]
            [name] => Bob Smith
            [date_created] => 2016-03-08 15:01:02
            [payment_ids] => 54,63,87,88,91
            [user_id] => 2
            [notes] => Array
                (
                    [0] => March 16, 2016 14:37:22 - Subscription #3 cancelled admin
                )

            [db:protected] => EDD_DB_Customers Object
                (
                    [table_name] => wp_edd_customers
                    [version] => 1.0
                    [primary_key] => id
                )

        )

)

Modificarea Obiectului

Folosind metodele incluse, aproape orice poate fi făcut cu un abonament.

Cu excepția cazului în care se menționează altfel, fiecare exemplu de metodă dat va folosi acest model de instanțiere:

$subscription = new EDD_Subscription();

Metode Operaționale

EDD_Subscription include metode pentru crearea, ștergerea, actualizarea și reînnoirea abonamentelor, precum și adăugarea plăților.

$subscription->create()

Pentru a crea corect un abonament, trebuie să furnizați unele informații. Aceste elemente sunt obligatorii:

$data = array(
    'customer_id'       => 0, // an integer, should be a valid customer_id
    'period'            => '', // accepts 'day', 'week', 'month', or 'year'; how often the subscription renews
    'initial_amount'    => '', // accepts a float
    'recurring_amount'  => '', // accepts a float
    'bill_times'        => 0, // accepts an integer; the number of times billing should happen, 0 means indefinite
    'parent_payment_id' => 0, // accepts an integer; the payment id returned by the initial payment
    'product_id'        => 0, // accepts an integer; the id of the product
    'created'           => '', // accepts a date string; formatted like 0000-00-00 00:00:00
    'expiration'        => '', // accepts a date string; formatted like 0000-00-00 00:00:00
    'status'            => '', // accepts 'Pending', 'Active', 'Cancelled', 'Expired', 'Failing', 'Completed'
    'profile_id'        => '', // accepts a string returned by the payment gateway as their subscription ID
);

Apoi puteți apela metoda create() cu acele informații.

$subscription->create( $data );

Metoda create() returnează un obiect cu aceleași date pe care le-ați obține prin interogarea unui ID de abonament specific.

 
$subscription->update()

Actualizarea unui abonament folosește metoda update() cu orice subset al opțiunilor din array utilizate pentru metoda create(). Metoda update() necesită, de asemenea, un ID de abonament. Ceva de genul acesta ar funcționa:

$data = array(
    'expiration' => '2019-07-17 23:59:59',
);
$subscription->update( $data );
 
$subscription->delete()

Metoda delete() acceptă un ID de abonament și elimină permanent abonamentul din magazinul EDD. Rețineți că acest lucru nu afectează abonamentele înregistrate pe gateway-urile de plată. Acestea ar trebui gestionate individual.

$subscription->renew()

Această metodă reînnoiește un abonament, extinzându-l cu o perioadă dincolo de data curentă de expirare.

$subscription->add_payment( $args = array() )

Această metodă vă permite să efectuați o plată. Acceptă un array și necesită următoarele trei elemente din array:

  • amount: suma de bani plătită
  • transaction_id: ID-ul tranzacției abonamentului de la gateway-ul de plată. Exemplu: ‘ch_17q04L4NqFpaKRwY8ucZjW3t’
  • gateway: gateway-ul de plată utilizat pentru abonament. Exemplu: ‘stripe’

La succes, add_payment() returnează true.

Obținerea Informațiilor despre Abonament

EDD_Subscription oferă o serie de metode pentru obținerea informațiilor despre un abonament.

$subscription->get_original_payment_id()

Această metodă returnează un întreg care este ID-ul plății originale. În Interfața Utilizator, această Plată poate fi găsită sub Descărcări → Istoric plăți.

$subscription->get_child_payments()

Metoda returnează un array de obiecte EDD_Payment, unde fiecare obiect este o plată secundară. Obiectele vor arăta cam așa:

Array
(
    [0] => EDD_Payment Object
        (
            [ID] => 1111111
            [_ID:protected] => 1111111
            [new:protected] =>
            [number:protected] => 1111111
            [mode:protected] => live
            [key:protected] => 8d6f842jkf66cb6312117b9ad417dc6be
            [total:protected] => 57.4
            [subtotal:protected] => 57.4
            [tax:protected] => 0
            [discounted_amount:protected] => 0
            [tax_rate:protected] =>
            [fees:protected] => Array
                (
                )

            [fees_total:protected] => 0
            [discounts:protected] => samplediscount
            [date:protected] => 2018-05-17 06:40:29
            [completed_date:protected] =>
            [status:protected] => edd_subscription
            [post_status:protected] => edd_subscription
            [old_status:protected] =>
            [status_nicename:protected] => Renewal
            [customer_id:protected] => 111111
            [user_id:protected] => 1nan1
            [first_name:protected] => Bob Smith
            [last_name:protected] => Smith
            [email:protected] => [email protected]
            [user_info:EDD_Payment:private] => Array
                (
                    [first_name] => Bob Smith
                    [last_name] => Smith
                    [discount] => samplediscount
                    [id] => 1nan1
                    [email] => [email protected]
                    [address] => Array
                        (
                            [line1] =>
                            [line2] =>
                            [city] =>
                            [country] =>
                            [state] =>
                            [zip] =>
                            [vat] =>
                            [notes] =>
                        )

                )

            [payment_meta:EDD_Payment:private] => Array
                (
                    [key] => 8d6f842jkf66cb6312117b9ad417dc6be
                    [email] => [email protected]
                    [date] => 2018-05-17 06:40:29
                    [user_info] => Array
                        (
                            [first_name] => Bob Smith
                            [discount] => samplediscount
                            [id] => 1nan1
                            [email] => [email protected]
                            [address] => Array
                                (
                                    [line1] =>
                                    [line2] =>
                                    [city] =>
                                    [country] =>
                                    [state] =>
                                    [zip] =>
                                    [vat] =>
                                    [notes] =>
                                )

                        )

                    [downloads] => Array
                        (
                            [0] => Array
                                (
                                    [id] => 1234
                                    [quantity] => 1
                                    [options] => Array
                                        (
                                            [quantity] => 1
                                            [price_id] => 0
                                        )

                                )

                        )

                    [cart_details] => Array
                        (
                            [0] => Array
                                (
                                    [name] => Sample Product
                                    [id] => 1234
                                    [item_number] => Array
                                        (
                                            [id] => 1234
                                            [quantity] => 1
                                            [options] => Array
                                                (
                                                    [quantity] => 1
                                                    [price_id] => 0
                                                )

                                        )

                                    [item_price] => 57.4
                                    [quantity] => 1
                                    [discount] => 0
                                    [subtotal] => 57.4
                                    [tax] => 0
                                    [fees] => Array
                                        (
                                        )

                                    [price] => 57.4
                                )

                        )

                    [fees] => Array
                        (
                        )

                    [currency] => USD
                )

            [address:protected] => Array
                (
                    [line1] =>
                    [line2] =>
                    [city] =>
                    [country] =>
                    [state] =>
                    [zip] =>
                    [vat] =>
                    [notes] =>
                )

            [transaction_id:protected] => 7M999999999999999
            [downloads:protected] => Array
                (
                    [0] => Array
                        (
                            [id] => 1234
                            [quantity] => 1
                            [options] => Array
                                (
                                    [quantity] => 1
                                    [price_id] => 0
                                )

                        )

                )

            [ip:protected] => 192.168.1.1
            [gateway:protected] => paypalexpress
            [currency:protected] => USD
            [cart_details:protected] => Array
                (
                    [0] => Array
                        (
                            [name] => Sample Product
                            [id] => 1234
                            [item_number] => Array
                                (
                                    [id] => 1234
                                    [quantity] => 1
                                    [options] => Array
                                        (
                                            [quantity] => 1
                                            [price_id] => 0
                                        )

                                )

                            [item_price] => 57.4
                            [quantity] => 1
                            [discount] => 0
                            [subtotal] => 57.4
                            [tax] => 0
                            [fees] => Array
                                (
                                )

                            [price] => 57.4
                        )

                )

            [has_unlimited_downloads:protected] =>
            [pending:EDD_Payment:private] => Array
                (
                )

            [parent_payment:protected] => 830936
        )
)
$subscription->get_total_payments()

Această metodă returnează un întreg care este numărul total de plăți efectuate, incluzând plățile inițiale plus toate plățile secundare.

$subscription->get_lifetime_value()

Această metodă returnează un float care este totalul monetar al tuturor plăților efectuate vreodată.

$subscription->get_cancel_url()

Această metodă va returna un URL pentru anularea unui abonament care este procesat de gateway-ul prin care a fost achiziționat abonamentul.

$subscription->get_update_url()

Această metodă va returna un URL pentru actualizarea unui abonament care este procesat de gateway-ul prin care a fost achiziționat abonamentul.

$subscription->get_expiration()

Returnează data și ora la care va expira abonamentul în acest format:

2016-04-15 23:59:59
$subscription->get_expiration_time()

Această metodă returnează un număr întreg care este un timestamp Unix al expirării.

$subscription->get_status()

Această metodă returnează starea curentă a unui abonament într-un format util pentru cod. Opțiunile sunt ‘pending’, ‘active’, ‘cancelled’, ‘expired’, ‘failing’, ‘completed’.

$subscription->get_status_label()

Această metodă returnează starea curentă a unui abonament într-un format util pentru prezentare. Opțiunile sunt ‘Pending’, ‘Active’, ‘Cancelled’, ‘Expired’, ‘Failing’, ‘Completed’.

Condiționale pentru Abonament

EDD_Subscription oferă o serie de metode condiționale.

$subscription->can_cancel()

Această metodă returnează boolean și este filtrată de gateway-urile de plată pentru a returna true pentru abonamentele care pot fi anulate cu un ID de profil prin intermediul procesatorului comerciant.

$subscription->can_update()

Această metodă returnează boolean și este filtrată de gateway-urile de plată pentru a returna true dacă abonamentul poate avea metoda de plată actualizată. Este *doar* pentru a determina dacă o metodă de plată poate fi actualizată.

$subscription->is_active()
Această metodă returnează boolean și este true dacă abonamentul nu este expirat
și starea este
fie ‘active’ sau ‘cancelled’.
 
$subscription->is_expired()
Această metodă returnează boolean și este true dacă abonamentul este expirat.
$subscription->payment_exists( $txn_id = ” )

Această metodă acceptă un ID de tranzacție care a fost creat de un gateway de plată. Iată un exemplu de ID de tranzacție de abonament de la Stripe:

ch_17q04L4NqFpaKRwY8ucZjW3t

Această metodă returnează boolean, true dacă găsește o tranzacție cu ID-ul furnizat.

Metode de Stare

EDD_Subscription include mai multe metode pentru schimbarea stării unui abonament.
$subscription->complete()

Această metodă schimbă starea unui abonament la ‘complete’.

$subscription->expire()

Această metodă schimbă starea unui abonament la ‘expired’.

$subscription->failing()

Această metodă schimbă starea unui abonament la ‘failing’.

$subscription->cancel()

Această metodă schimbă starea unui abonament la ‘cancelled’.

A fost util acest articol?

Începeți să vindeți astăzi!

Alăturați-vă peste 50.000 de proprietari de magazine inteligente și începeți să folosiți cel mai ușor mod de a vinde produse digitale cu WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]