Indice dei contenuti
Pagamenti Ricorrenti include una nuova classe EDD per la gestione delle sottoscrizioni. La classe EDD_Subscription consente a uno sviluppatore di lavorare con le sottoscrizioni a livello programmatico. Questo documento elencherà le proprietà, i metodi e le funzionalità suggerite di EDD_Subscription.
Proprietà
- $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;
Metodi
- create( $data = array() )
- update( $args = array() )
- delete()
- get_original_payment_id()
- get_child_payments()
- get_total_payments()
- get_lifetime_value()
- add_payment( $args = array() )
- rinnova()
- completa()
- scade()
- fallisce()
- annulla()
- può_annullare()
- get_cancel_url()
- può_aggiornare()
- get_update_url()
- is_active()
- is_expired()
- get_expiration()
- get_expiration_time()
- get_status()
- get_status_label()
- payment_exists( $txn_id = ” )
Utilizzo
Istanziazione di base
Un oggetto EDD_Subscription "vuoto" può essere creato con questo codice:
$subscription = new EDD_Subscription();
Questo restituirà un oggetto con questa struttura:
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] =>
)
Istanziazione di un abbonamento esistente
Il costruttore EDD_Subscription accetta 2 argomenti. Il primo è un intero che rappresenta un ID di abbonamento o, se il secondo argomento è vero, il primo può essere un profile_id di abbonamento.
Puoi trovare un ID di abbonamento nell'URL durante la visualizzazione di un abbonamento. 
Puoi trovare l'ID del profilo elencato durante la visualizzazione di un abbonamento. 
Queste due righe di codice restituiranno lo stesso output perché si riferiscono allo stesso abbonamento:
$subscription = new EDD_Subscription( 3 );
$subscription = new EDD_Subscription( 'sub_85YmWtzABSAWN7', true );
Le righe di codice sopra restituirebbero ciascuna un oggetto simile a questo:
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
)
)
)
Modifica Oggetto
Utilizzando i metodi inclusi, quasi tutto può essere fatto con un abbonamento.
Salvo diversa indicazione, ogni esempio di metodo fornito utilizzerà questo modello di istanziazione:
$subscription = new EDD_Subscription();
Metodi Operativi
EDD_Subscription include metodi per creare, eliminare, aggiornare e rinnovare abbonamenti, oltre ad aggiungere pagamenti.
$subscription->create()
Per creare correttamente un abbonamento, è necessario fornire alcune informazioni. Questi elementi sono obbligatori:
$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
);
Quindi puoi chiamare il metodo create() con tali informazioni.
$subscription->create( $data );
Il metodo create() restituisce un oggetto con gli stessi dati che otterresti interrogando un ID di abbonamento specifico.
$subscription->update()
L'aggiornamento di un abbonamento utilizza il metodo update() con qualsiasi sottoinsieme delle opzioni dell'array utilizzate per il metodo create(). Il metodo update() richiede anche un ID di abbonamento. Qualcosa di simile funzionerebbe:
$data = array(
'expiration' => '2019-07-17 23:59:59',
);
$subscription->update( $data );
$subscription->delete()
Il metodo delete() accetta un ID di abbonamento e rimuove permanentemente l'abbonamento dallo store EDD. Nota che questo non influisce sugli abbonamenti registrati sui Gateway di Pagamento. Quelli dovrebbero essere gestiti individualmente.
$subscription->renew()
Questo metodo rinnova un abbonamento, estendendolo di un periodo oltre la data di scadenza attuale.
$subscription->add_payment( $args = array() )
Questo metodo ti consente di effettuare un pagamento. Accetta un array e richiede questi tre elementi dell'array:
- amount: l'importo di denaro pagato
- transaction_id: l'ID della transazione dell'abbonamento dal gateway di pagamento. Esempio: ‘ch_17q04L4NqFpaKRwY8ucZjW3t’
- gateway: il gateway di pagamento utilizzato per l'abbonamento. Esempio: ‘stripe’
In caso di successo, add_payment() restituisce true.
Ottenere Informazioni sulla Sottoscrizione
EDD_Subscription fornisce una serie di metodi per ottenere informazioni su un abbonamento.
$subscription->get_original_payment_id()
Questo metodo restituisce un intero che è l'ID del pagamento originale. Nell'interfaccia utente, questo Pagamento può essere trovato in Download → Cronologia Pagamenti.
$subscription->get_child_payments()
Il metodo restituisce un array di oggetti EDD_Payment in cui ogni oggetto è un pagamento figlio. Gli oggetti appariranno più o meno così:
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()
Questo metodo restituisce un intero che è il conteggio del numero totale di pagamenti effettuati, inclusi i pagamenti iniziali più tutti i pagamenti figli.
$subscription->get_lifetime_value()
Questo metodo restituisce un float che è il totale monetario di tutti i pagamenti mai effettuati.
$subscription->get_cancel_url()
Questo metodo restituirà un URL per annullare un abbonamento che viene elaborato dal gateway attraverso il quale è stato acquistato l'abbonamento.
$subscription->get_update_url()
Questo metodo restituirà un URL per aggiornare un abbonamento che viene elaborato dal gateway attraverso il quale è stato acquistato l'abbonamento.
$subscription->get_expiration()
Restituisce la data e l'ora in cui l'abbonamento scadrà in questo formato:
2016-04-15 23:59:59
$subscription->get_expiration_time()
Questo metodo restituisce un intero che è un timestamp Unix della scadenza.
$subscription->get_status()
Questo metodo restituisce lo stato corrente di un abbonamento in un formato utile per il codice. Le opzioni sono ‘pending’, ‘active’, ‘cancelled’, ‘expired’, ‘failing’, ‘completed’.
$subscription->get_status_label()
Questo metodo restituisce lo stato corrente di un abbonamento in un formato utile per la presentazione. Le opzioni sono ‘Pending’, ‘Active’, ‘Cancelled’, ‘Expired’, ‘Failing’, ‘Completed’.
Condizionali di Sottoscrizione
EDD_Subscription offre una serie di metodi condizionali.
$subscription->can_cancel()
Questo metodo restituisce un booleano ed è filtrato dai gateway di pagamento al fine di restituire true per gli abbonamenti che possono essere annullati con un ID profilo tramite il processore di pagamento.
$subscription->can_update()
Questo metodo restituisce un booleano ed è filtrato dai gateway di pagamento al fine di restituire true se l'abbonamento può avere il suo metodo di pagamento aggiornato. Serve *solo* per determinare se un metodo di pagamento può essere aggiornato.
$subscription->is_active()
e lo stato è
o ‘active’ o ‘cancelled’.
$subscription->is_expired()
$subscription->payment_exists( $txn_id = ” )
Questo metodo accetta un ID di transazione creato da un gateway di pagamento. Ecco un esempio di ID di transazione di abbonamento da Stripe:
ch_17q04L4NqFpaKRwY8ucZjW3t
Questo metodo restituisce un booleano, true se trova una transazione con l'ID fornito.
Metodi di Stato
$subscription->complete()
Questo metodo cambia lo stato di un abbonamento in ‘complete’.
$subscription->expire()
Questo metodo cambia lo stato di un abbonamento in ‘expired’.
$subscription->failing()
Questo metodo cambia lo stato di un abbonamento in ‘failing’.
$subscription->cancel()
Questo metodo cambia lo stato di un abbonamento in ‘cancelled’.
