<html lang="pt-br" dir="ltr"><head></head><body># Pagamentos Recorrentes - Desenvolvedor: EDD_Subscription

##### Índice

- [Propriedades](#properties)
- [Métodos](#methods)
- [Uso](#usage)
- [Modificação de Objeto](#modification)
- [Métodos Operacionais](#operational)
- [Obtendo Informações da Assinatura](#getters)
- [Condicionais de Assinatura](#conditionals)
- [Métodos de Status](#status)



[Pagamentos Recorrentes](https://easydigitaldownloads.com/downloads/recurring-payments/) vem com uma nova classe EDD para gerenciar assinaturas. A classe EDD\_Subscription permite que um desenvolvedor trabalhe com assinaturas programaticamente. Este documento listará as propriedades, métodos e funcionalidades sugeridas da EDD\_Subscription.

### Propriedades

- $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étodos

- 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 = '' )

### Uso

##### Instanciação Básica

Um objeto EDD\_Subscription "vazio" pode ser criado com este código:

```
$subscription = new EDD_Subscription();
```

Isso retornará um objeto com esta estrutura:

```
EDD_Subscription Object
(
    [subs_db:EDD_Subscription:private] =&gt; EDD_Subscriptions_DB Object
        (
            [table_name] =&gt; wp_edd_subscriptions
            [version] =&gt; 1.0
            [primary_key] =&gt; id
        )

    [id] =&gt; 0
    [customer_id] =&gt; 0
    [period] =&gt; 
    [initial_amount] =&gt; 
    [recurring_amount] =&gt; 
    [bill_times] =&gt; 0
    [parent_payment_id] =&gt; 0
    [product_id] =&gt; 0
    [created] =&gt; 0000-00-00 00:00:00
    [expiration] =&gt; 0000-00-00 00:00:00
    [status] =&gt; pending
    [profile_id] =&gt; 
    [gateway] =&gt; 
    [customer] =&gt; 
)
```

##### Instanciando uma Assinatura Existente

O construtor EDD\_Subscription aceita 2 argumentos. O primeiro é um inteiro representando um ID de assinatura ou, se o segundo argumento for verdadeiro, o primeiro pode ser um profile\_id de assinatura.

Você pode encontrar um ID de assinatura na URL ao visualizar uma assinatura. ![](https://easydigitaldownloads.com/wp-content/uploads/2022/07/6184cdf1d52d8.png)

Você pode encontrar o ID do perfil listado ao visualizar uma assinatura. ![](https://easydigitaldownloads.com/wp-content/uploads/2022/07/6184cdf22022e.png)

Estas duas linhas de código retornarão a mesma saída porque se referem à mesma assinatura:

```
$subscription = new EDD_Subscription( 3 );
```

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

As linhas de código acima retornariam cada uma um objeto como este:

```
EDD_Subscription Object
(
    [subs_db:EDD_Subscription:private] =&gt; EDD_Subscriptions_DB Object
        (
            [table_name] =&gt; wp_edd_subscriptions
            [version] =&gt; 1.0
            [primary_key] =&gt; id
        )

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

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

        )

)
```

#### Modificação de Objeto

Usando os métodos incluídos, quase tudo pode ser feito com uma assinatura.

A menos que declarado o contrário, todos os exemplos de métodos fornecidos usarão este modelo de instanciação:

```
$subscription = new EDD_Subscription();
```

#### Métodos Operacionais

EDD\_Subscription inclui métodos para criar, excluir, atualizar e renovar assinaturas, além de adicionar pagamentos.

##### $subscription-&gt;create()

Para criar uma assinatura corretamente, você precisa fornecer algumas informações. Estes itens são obrigatórios:

```
$data = array(
    'customer_id'       =&gt; 0, // um inteiro, deve ser um customer_id válido
    'period'            =&gt; '', // aceita 'day', 'week', 'month' ou 'year'; com que frequência a assinatura é renovada
    'initial_amount'    =&gt; '', // aceita um float
    'recurring_amount'  =&gt; '', // aceita um float
    'bill_times'        =&gt; 0, // aceita um inteiro; o número de vezes que a cobrança deve ocorrer, 0 significa indefinido
    'parent_payment_id' =&gt; 0, // aceita um inteiro; o ID do pagamento retornado pelo pagamento inicial
    'product_id'        =&gt; 0, // aceita um inteiro; o ID do produto
    'created'           =&gt; '', // aceita uma string de data; formatada como 0000-00-00 00:00:00
    'expiration'        =&gt; '', // aceita uma string de data; formatada como 0000-00-00 00:00:00
    'status'            =&gt; '', // aceita 'Pending', 'Active', 'Cancelled', 'Expired', 'Failing', 'Completed'
    'profile_id'        =&gt; '', // aceita uma string retornada pelo gateway de pagamento como o ID da assinatura deles
);
```

Então você pode chamar o método `create()` com essas informações.

```
$subscription-&gt;create( $data );
```

O método `create()` retorna um objeto com os mesmos dados que você obteria consultando um ID de assinatura específico.

#####  

##### $subscription-&gt;update()

Atualizar uma assinatura usa o método `update()` com qualquer subconjunto das opções de array usadas para o método `create()`. O método `update()` também requer um ID de assinatura. Algo como isto funcionaria:

```
$data = array(
    'expiration' =&gt; '2019-07-17 23:59:59',
);
$subscription-&gt;update( $data );
```

#####  

##### $subscription-&gt;delete()

O método `delete()` aceita um ID de assinatura e remove permanentemente a assinatura da loja EDD. Observe que isso não afeta as assinaturas registradas nos Gateways de Pagamento. Essas devem ser tratadas individualmente.

##### $subscription-&gt;renew()

Este método renova uma assinatura, estendendo-a por um período além da data de expiração atual.

##### $subscription-&gt;add\_payment( $args = array() )

Este método permite que você faça um pagamento. Ele aceita um array e requer estes três elementos do array:

- **amount**: o valor em dinheiro pago
- **transaction\_id**: o ID da transação da assinatura do gateway de pagamento. Exemplo: 'ch\_17q04L4NqFpaKRwY8ucZjW3t'
- **gateway**: o gateway de pagamento usado para a assinatura. Exemplo: 'stripe'

Em caso de sucesso, `add_payment()` retorna true.

#### Obtendo Informações da Assinatura

EDD\_Subscription fornece vários métodos para obter informações sobre uma assinatura.

##### $subscription-&gt;get\_original\_payment\_id()

Este método retorna um inteiro que é o ID do pagamento original. Na Interface do Usuário, este Pagamento pode ser encontrado em Downloads → Histórico de Pagamentos.

##### $subscription-&gt;get\_child\_payments()

O método retorna um array de objetos EDD\_Payment onde cada objeto é um pagamento filho. Os objetos se parecerão com isto:

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

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

                )

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

                        )

                    [[downloads]] =&gt; Array
                        (
                            [0] =&gt; Array
                                (
                                    [id] =&gt; 1234
                                    [quantity] =&gt; 1
                                    [options] =&gt; Array
                                        (
                                            [quantity] =&gt; 1
                                            [price_id] =&gt; 0
                                        )

                                )

                        )

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

                                        )

                                    [item_price] =&gt; 57.4
                                    [quantity] =&gt; 1
                                    [discount] =&gt; 0
                                    [subtotal] =&gt; 57.4
                                    [tax] =&gt; 0
                                    [fees] =&gt; Array
                                        (
                                        )

                                    [price] =&gt; 57.4
                                )

                        )

                    [fees] =&gt; Array
                        (
                        )

                    [currency] =&gt; USD
                )

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

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

                        )

                )

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

                                )

                            [item_price] =&gt; 57.4
                            [quantity] =&gt; 1
                            [discount] =&gt; 0
                            [subtotal] =&gt; 57.4
                            [tax] =&gt; 0
                            [fees] =&gt; Array
                                (
                                )

                            [price] =&gt; 57.4
                        )

                )

            [has_unlimited_downloads:protected] =&gt;
            [pending:EDD_Payment:private] =&gt; Array
                (
                )

            [parent_payment:protected] =&gt; 830936
        )
)
```

##### $subscription-&gt;get\_total\_payments()

Este método retorna um inteiro que é a contagem total de pagamentos feitos, incluindo os pagamentos iniciais mais todos os pagamentos filhos.

##### $subscription-&gt;get\_lifetime\_value()

Este método retorna um float que é o total monetário de todos os pagamentos já feitos.

##### $subscription-&gt;get\_cancel\_url()

Este método retornará uma URL para cancelar uma assinatura que é processada pelo gateway através do qual a assinatura foi comprada.

##### $subscription-&gt;get\_update\_url()

Este método retornará uma URL para atualizar uma assinatura que é processada pelo gateway através do qual a assinatura foi comprada.

##### $subscription-&gt;get\_expiration()

Retorna a data e hora em que a assinatura expirará neste formato:

```
2016-04-15 23:59:59
```

##### $subscription-&gt;get\_expiration\_time()

Este método retorna um inteiro que é um timestamp Unix da expiração.

##### $subscription-&gt;get\_status()

Este método retorna o status atual de uma assinatura em um formato útil para código. As opções são 'pending', 'active', 'cancelled', 'expired', 'failing', 'completed'.

##### $subscription-&gt;get\_status\_label()

Este método retorna o status atual de uma assinatura em um formato útil para apresentação. As opções são 'Pending', 'Active', 'Cancelled', 'Expired', 'Failing', 'Completed'.

#### Condicionais de Assinatura

EDD\_Subscription oferece vários métodos condicionais.

##### $subscription-&gt;can\_cancel()

Este método retorna um booleano e é filtrado por gateways de pagamento para retornar true em assinaturas que podem ser canceladas com um ID de perfil através do processador de pagamento.

##### $subscription-&gt;can\_update()

Este método retorna um booleano e é filtrado por gateways de pagamento para retornar true se a assinatura puder ter seu método de pagamento atualizado. É *apenas* para determinar se um método de pagamento pode ser atualizado.

##### $subscription-&gt;is\_active()

Este método retorna um booleano, e é true se a assinatura não expirou
*e* o status é
'active' ou 'cancelled'.

#####  

##### $subscription-&gt;is\_expired()

Este método retorna um booleano, e é true se a assinatura expirou.



##### $subscription-&gt;payment\_exists( $txn\_id = '' )

Este método aceita um ID de transação que foi criado por um gateway de pagamento. Aqui está um exemplo de um ID de transação de assinatura do Stripe:

```
ch_17q04L4NqFpaKRwY8ucZjW3t
```

Este método retorna um booleano, true se ele encontrar uma transação com o ID fornecido.

#### Métodos de Status

EDD_Subscription inclui vários métodos para alterar o status de uma assinatura.

##### $subscription-&gt;complete()



Este método altera o status de uma assinatura para 'complete'.

##### $subscription-&gt;expire()

Este método altera o status de uma assinatura para 'expired'.

##### $subscription-&gt;failing()

Este método altera o status de uma assinatura para 'failing'.

##### $subscription-&gt;cancel()

Este método altera o status de uma assinatura para 'cancelled'.</body></html>