Tribe__Events__Community__Tickets__Adapter__WooCommerce_PayPal::process_ipn( array $posted )
Process the IPN.
Contents
Parameters
- $posted
-
(array) (Required) PayPal IPN POST data.
Return
(void)
Source
File: src/Tribe/Adapter/WooCommerce_PayPal.php
public function process_ipn( $posted ) { $posted = stripslashes_deep( $posted ); if ( ! isset( $posted['tracking_id'] ) ) { exit; } // Extract the order ID. $order_id = intval( str_replace( $this->gateway()->invoice_prefix, '', $posted['tracking_id'] ) ); if ( $this->debug ) { $this->log->add( $this->id, 'Checking IPN response for order #' . $order_id . '...' ); } // Get the order data. $order = new WC_Order( $order_id ); // Checks whether the invoice number matches the order. // If true processes the payment. if ( $order->id === $order_id ) { $status = esc_attr( $posted['status'] ); if ( $this->debug ) { $this->log->add( $this->id, 'Payment status: ' . $status ); } switch ( $status ) { case 'CANCELED' : $order->update_status( 'cancelled', __( 'Payment canceled via IPN.', 'woocommerce-gateway-paypal-adaptive-payments' ) ); break; case 'CREATED' : $order->update_status( 'on-hold', __( 'The payment request was received. Funds will be transferred once the payment is approved.', 'woocommerce-gateway-paypal-adaptive-payments' ) ); break; case 'COMPLETED' : // Check order not already completed. if ( $order->status == 'completed' ) { if ( $this->debug ) { $this->log->add( $this->id, 'Aborting, Order #' . $order->id . ' is already complete.' ); } exit; } if ( ! empty( $posted['sender_email'] ) ) { update_post_meta( $order->id, 'Payer PayPal address', sanitize_text_field( $posted['sender_email'] ) ); } $order->add_order_note( __( 'The payment was successful.', 'woocommerce-gateway-paypal-adaptive-payments' ) ); $order->payment_complete(); break; case 'INCOMPLETE' : $order->update_status( 'on-hold', __( 'Some transfers succeeded and some failed for a parallel payment or, for a delayed chained payment, secondary receivers have not been paid.', 'woocommerce-gateway-paypal-adaptive-payments' ) ); break; case 'ERROR' : $order->update_status( 'failed', __( 'The payment failed and all attempted transfers failed or all completed transfers were successfully reversed.', 'woocommerce-gateway-paypal-adaptive-payments' ) ); break; case 'REVERSALERROR' : $order->update_status( 'failed', __( 'One or more transfers failed when attempting to reverse a payment.', 'woocommerce-gateway-paypal-adaptive-payments' ) ); break; case 'PROCESSING' : $order->update_status( 'on-hold', __( 'The payment is in progress.', 'woocommerce-gateway-paypal-adaptive-payments' ) ); break; case 'PENDING' : $order->update_status( 'pending', __( 'The payment is awaiting processing.', 'woocommerce-gateway-paypal-adaptive-payments' ) ); break; default : // No action. break; } } else { if ( $this->debug ) { $this->log->add( $this->id, 'Invalid IPN response for order #' . $order_id . '!' ); } } }