Connexion
Commencer

Documentation Easy Digital Downloads

Documentation, matériel de référence et tutoriels pour Easy Digital Downloads 

Paiements récurrents – Développeur : EDD_Subscription

Paiements récurrents est livré avec une nouvelle classe EDD pour la gestion des abonnements. La classe EDD_Subscription permet à un développeur de travailler avec les abonnements par programme. Ce document listera les propriétés, les méthodes et les fonctionnalités suggérées d'EDD_Subscription.

Propriétés

  • $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;

Méthodes

  • 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 = ” )

Utilisation

Instanciation de base

Un objet EDD_Subscription « vide » peut être créé avec ce code :

$subscription = new EDD_Subscription();

Ceci retournera un objet avec cette structure :

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] => 
)
Instanciation d'un abonnement existant

Le constructeur EDD_Subscription accepte 2 arguments. Le premier est soit un entier représentant un ID d'abonnement, soit, si le deuxième argument est vrai, le premier peut être un ID de profil d'abonnement.

You can find a subscription ID in the URL while viewing a subscription.

You can find the profile ID listed when viewing a subscription.

Ces deux lignes de code retourneront le même résultat car elles font référence au même abonnement :

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

Les lignes de code ci-dessus retourneraient chacune un objet comme celui-ci :

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
                )

        )

)

Modification d'objet

En utilisant les méthodes incluses, presque tout peut être fait avec un abonnement.

Sauf indication contraire, tous les exemples de méthodes donnés utiliseront ce modèle d'instanciation :

$subscription = new EDD_Subscription();

Méthodes opérationnelles

EDD_Subscription inclut des méthodes pour créer, supprimer, mettre à jour et renouveler des abonnements, ainsi que pour ajouter des paiements.

$subscription->create()

Afin de créer correctement un abonnement, vous devez fournir certaines informations. Ces éléments sont requis :

$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
);

Vous pouvez ensuite appeler la m00thode create() avec ces informations.

$subscription->create( $data );

La m00thode create() renvoie un objet avec les m00mes donn00es que celles que vous obtiendriez en interrogeant un ID d'abonnement sp00cifique.

 
$subscription->update()

La mise 00 jour d'un abonnement utilise la m00thode update() avec n'importe quel sous-ensemble des options de tableau utilis00es pour la m00thode create(). La m00thode update() n00cessite 00galement un ID d'abonnement. Quelque chose comme ceci fonctionnerait :

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

La m00thode delete() accepte un ID d'abonnement et supprime d00finitivement l'abonnement du magasin EDD. Notez que cela n'affecte pas les abonnements enregistr00s sur les passerelles de paiement. Ceux-ci doivent 00tre g00r00s individuellement.

$subscription->renew()

Cette m00thode renouvelle un abonnement, le prolongeant d'une p00riode au-del00 de la date d'expiration actuelle.

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

Cette m00thode vous permet d'effectuer un paiement. elle accepte un tableau et n00cessite ces trois 00l00ments de tableau :

  • amount : le montant d'argent pay00
  • transaction_id : l'ID de transaction de l'abonnement de la passerelle de paiement. Exemple : ‘ch_17q04L4NqFpaKRwY8ucZjW3t’
  • gateway : la passerelle de paiement utilis00e pour l'abonnement. Exemple : ‘stripe’

En cas de succ00s, add_payment() renvoie true.

Obtenir des informations sur l'abonnement

EDD_Subscription fournit un certain nombre de m00thodes pour obtenir des informations sur un abonnement.

$subscription->get_original_payment_id()

Cette m00thode renvoie un entier qui est l'ID du paiement d'origine. Dans l'interface utilisateur, ce paiement peut 00tre trouv00 sous T00l00chargements 00 Historique des paiements.

$subscription->get_child_payments()

La m00thode renvoie un tableau d'objets EDD_Payment o00 chaque objet est un paiement enfant. Les objets ressembleront 00 quelque chose comme ceci :

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()

Cette m00thode renvoie un entier qui est le nombre total de paiements effectu00s, y compris les paiements initiaux plus tous les paiements enfants.

$subscription->get_lifetime_value()

Cette m00thode renvoie un nombre 00 virgule flottante qui est le total mon00taire de tous les paiements jamais effectu00s.

$subscription->get_cancel_url()

Cette m00thode renverra une URL pour annuler un abonnement qui est trait00 par la passerelle via laquelle l'abonnement a 00t00 achet00.

$subscription->get_update_url()

Cette m00thode renverra une URL pour mettre 00 jour un abonnement qui est trait00 par la passerelle via laquelle l'abonnement a 00t00 achet00.

$subscription->get_expiration()

Renvoie la date et l'heure d'expiration de l'abonnement dans ce format :

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

Cette méthode renvoie un entier qui est un timestamp Unix de l'expiration.

$subscription->get_status()

Cette méthode renvoie le statut actuel d'un abonnement dans un format utile pour le code. Les options sont 'pending', 'active', 'cancelled', 'expired', 'failing', 'completed'.

$subscription->get_status_label()

Cette méthode renvoie le statut actuel d'un abonnement dans un format utile pour la présentation. Les options sont 'En attente', 'Actif', 'Annulé', 'Expiré', 'En échec', 'Terminé'.

Conditionnelles d'abonnement

EDD_Subscription offre un certain nombre de méthodes conditionnelles.

$subscription->can_cancel()

Cette méthode renvoie un booléen et est filtrée par les passerelles de paiement afin de renvoyer true pour les abonnements qui peuvent être annulés avec un identifiant de profil via le processeur marchand.

$subscription->can_update()

Cette méthode renvoie un booléen et est filtrée par les passerelles de paiement afin de renvoyer true si le mode de paiement de l'abonnement peut être mis à jour. Elle sert *uniquement* à déterminer si un mode de paiement peut être mis à jour.

$subscription->is_active()
This method returns boolean, and is true if the subscription is not expired
and the status is
either ‘active’ or ‘cancelled’.
 
$subscription->is_expired()
This method returns boolean, and is true if the subscription is expired.
$subscription->payment_exists( $txn_id = "" )

Cette méthode accepte un identifiant de transaction qui a été créé par une passerelle de paiement. Voici un exemple d'identifiant de transaction d'abonnement de Stripe :

ch_17q04L4NqFpaKRwY8ucZjW3t

Cette méthode renvoie un booléen, true s'il trouve une transaction avec l'identifiant fourni.

Méthodes de statut

EDD_Subscription includes several methods for changing the status of a subscription.
$subscription->complete()

Cette méthode change le statut d'un abonnement à 'complété'.

$subscription->expire()

Cette méthode change le statut d'un abonnement à 'expiré'.

$subscription->failing()

Cette méthode change le statut d'un abonnement à 'en échec'.

$subscription->cancel()

Cette méthode change le statut d'un abonnement à 'annulé'.

Was this article helpful?

Commencez à vendre dès aujourd'hui !

Rejoignez plus de 50 000 propriétaires de boutiques avisés et commencez à utiliser le moyen le plus simple de vendre des produits numériques avec WordPress.

Copyright © 2025 Sandhills Development, LLC

[universally_switcher]