La clase EDD_Payment facilita la creación, edición y eliminación de información de pagos en Easy Digital Downloads. Aquí tienes algunos ejemplos:
Ejemplo de creación de un nuevo pago
$payment = new EDD_Payment(); $payment->add_download( 97 ); $payment->email = '[email protected]'; $payment->status = 'complete'; $payment->save();
Ejemplo de actualización del correo electrónico de un pago existente:
$payment = new EDD_Payment( 4023 ); $payment->email = '[email protected]'; $payment->save();
Propiedades disponibles
Estas son las propiedades disponibles para tu objeto:
- $ID
- $number
- $mode
- $key
- $total
- $subtotal
- $tax
- $fees
- $discounts
- $date
- $completed_date
- $status
- $old_status
- $status_nicename
- $customer_id
- $user_id
- $first_name
- $last_name
- $address
- $transaction_id
- $downloads
- $ip
- $gateway
- $currency
- $cart_details
- $has_unlimited_downloads
- $pending
- $parent_payment
Métodos disponibles
add_download( $download_id = 0, $args = array(), $options = array() )
Este método te permite añadir una descarga a un pago. Acepta tres argumentos:
$download_id
Este es el ID de la descarga que deseas adjuntar. Siempre es un entero.
$args
Este es un array que puede anular estos valores predeterminados:
'quantity' => 1,
'price_id' => false,
'item_price' => 0.00,
'tax' => 0.00,
'fees' => array()
Las tarifas pueden ser cualquier cosa requerida, pero siguen el formato de
add_fee(). Para más información consulta la documentación de EDD_Fees.
$options
Este es un array que puede aceptar opciones arbitrarias para la descarga. Los ejemplos podrían ser
is_renewal o is_upgrade para la extensión Software Licensing.
IMPORTANTE: si añades una descarga a un pago Completado, la nueva descarga se establecerá a un precio cero. Si añades una descarga a un pago con cualquier otro estado, esa descarga conserva su valor financiero predeterminado y el valor total del pago aumenta.
Este comportamiento predeterminado puede ser anulado enviando un
item_price en $args.
remove_download( $download_id, $args = array() )
Este método te permite eliminar una descarga de un pago. Acepta dos argumentos:
$download_id
Este es el ID de la descarga que deseas adjuntar. Siempre es un entero.
$args
Este es un array que puede anular estos valores predeterminados:
'quantity' => 1,
'price_id' => false,
'item_price' => 0.00,
'cart_index' => false,
NOTA: si tu descarga es variable, se requiere el price_id para que se elimine el artículo correcto.
NOTA: Por defecto, remove_download() solo elimina un artículo. Si tienes varios del mismo artículo, necesitarás usar la opción quantity en $args.
get_meta( $meta_key = ‘_edd_payment_meta’, $single = true )
Este método obtiene los metadatos asociados con un pago. Acepta una clave de metadatos y un booleano para solicitar los metadatos en modo único o no.
Internamente, este método ejecuta get_post_meta, pero luego aplica algo de lógica para proporcionar compatibilidad con versiones anteriores de EDD 1.5
Luego ejecuta apply_filters en
'edd_get_payment_meta_' . $meta_key y luego devuelve la salida después de un filtro más de edd_get_payment_meta
update_meta( $meta_key = ”, $meta_value = ”, $prev_value = ” )
Este método te permite actualizar los metadatos del post para un pago. Acepta una clave de metadatos, un valor de metadatos y un valor de metadatos anterior para comparación.
Antes de actualizar, la meta_key se ejecuta a través de un filtro llamado
'edd_update_payment_meta_' . $meta_key.
El valor de retorno es la salida de
update_post_meta.
add_fee( $args = ”, $global = true )
Este método te permite adjuntar una tarifa arbitraria al pago. Funciona exactamente igual que el de EDD_Fees, por favor lee la documentación allí.
remove_fee( $key )
Este método te permite eliminar una tarifa dada. Funciona exactamente igual que el de EDD_Fees,
por favor lee la documentación allí.
remove_fee_by( $key, $value, $global = false )
Este método te permite eliminar una tarifa sin tener que conocer su posición en el array de tarifas. Por ejemplo, si tienes una tarifa con la etiqueta 'shipping', podrías hacer algo como
$payment->remove_fee_by( 'label', 'Shipping' );
El código anterior eliminaría la primera instancia de una tarifa con la etiqueta 'Shipping'. Si añades el indicador global 'true' como este:
$payment->remove_fee_by( 'label', 'Shipping', true );
entonces eliminará TODAS las tarifas con la etiqueta 'Shipping'.
add_note( $note = false )
This method allows you to attach a note to the payment. Results will look something like this:

update_status( $status = false )
Este método te permite establecer el estado de un pago dado. Estos son los estados posibles:
- Pendiente
- Completado
- Reembolsado
- Fallido
- Abandonado
- Revocado
array_convert()
Este método te permite obtener todas las propiedades disponibles como un array. Ejemplo:
$payment = new EDD_Payment( 4577 ); $payments_array = $payment->array_convert();
IMPORTANTE: las propiedades que se han movido a un array con array_convert NO se actualizarán dentro de ese array. Si necesitas una versión actualizada después de un cambio, tendrías que volver a ejecutar este método y volver a poblar tu array.
save()
Este método toma cualquier cambio o actualización realizada por cualquier otro método y los escribe en la base de datos.
NOTA: si no usas save(), ninguno de tus cambios se hará efectivo.
Ejemplos
Aquí tienes algunos ejemplos de código de algunas tareas comunes:
Crear un pago
$payment = new EDD_Payment(); // Instantiates a payment object $payment->add_download( 12 ); // Adds download id 12 to the payment at it's default price $payment->email = '[email protected]'; // Email is required for a payment $payment->status = 'complete'; // Completes the payment $payment->save(); // Writes to the database any changes that were made
Editar un pago existente
$payment = new EDD_Payment( 42 ); // Loads the information for Payment ID 42 $payment->email = '[email protected]'; // Changes the email address on the payment $payment->save();
Cambiar el estado de un pago
$payment = new EDD_Payment( 1337 ); $payment->status = 'revoked'; $payment->save();
Añadir una descarga con precio variable
$payment = new EDD_Payment( 1942 );
$args = array(
'price_id' => 1, // Variable price ID
'item_price' => 0.00, // Makes the item free
);
$payment->add_download( 23, $args ); // Adds Download ID 23, variable price 1 to the payment
$payment->save();
Añadir una descarga con opciones
$payment = new EDD_Payment( 2008 );
$args = array(
'item_price' => 4.00,
);
$options = array(
'is_renewal' => true,
);
$payment->add_download( 28, $args, $options );
$payment->save();
Eliminar una descarga
$payment = new EDD_Payment( 2008 ); $payment->remove_download( 23 ); $payment->save();
Eliminar una descarga con precios variables
$payment = new EDD_Payment( 2008 );
$args = array(
'price_id' => 1,
);
$payment->remove_download( 28, $args );
$payment->save();
