Tribe__Tickets__Commerce__PayPal__Gateway::parse_transaction( array $transaction )
Parses PayPal transaction data into a more organized structure
Contents
Parameters
- $transaction
-
(array) (Required) Transaction data from PayPal in key/value pairs
Return
(array|false) The parsed transaction data or false if the transaction could not be processed for any reason.
Source
File: src/Tribe/Commerce/PayPal/Gateway.php
public function parse_transaction( array $transaction ) {
if ( ! empty( $transaction['custom'] ) ) {
$decoded_custom = Tribe__Tickets__Commerce__PayPal__Custom_Argument::decode( $transaction['custom'], true );
if ( empty( $decoded_custom['tribe_handler'] ) || 'tpp' !== $decoded_custom['tribe_handler'] ) {
return false;
}
}
if ( $this->handler instanceof Tribe__Tickets__Commerce__PayPal__Handler__Invalid_PDT ) {
$this->handler->save_transaction();
return false;
}
$item_indexes = array(
'item_number',
'item_name',
'quantity',
'mc_handling',
'mc_shipping',
'tax',
'mc_gross_',
);
$item_indexes_regex = '/(' . implode( '|', $item_indexes ) . ')(\d)/';
$data = array(
'items' => array(),
);
foreach ( $transaction as $key => $value ) {
if ( ! preg_match( $item_indexes_regex, $key, $matches ) ) {
$data[ $key ] = $value;
continue;
}
$index = $matches[2];
$name = trim( $matches[1], '_' );
if ( ! isset( $data['items'][ $index ] ) ) {
$data['items'][ $index ] = array();
}
$data['items'][ $index ][ $name ] = $value;
}
foreach ( $data['items'] as &$item ) {
if ( ! isset( $item['item_number'] ) ) {
continue;
}
list( $item['post_id'], $item['ticket_id'] ) = explode( ':', $item['item_number'] );
$item['ticket'] = tribe( 'tickets.commerce.paypal' )->get_ticket( $item['post_id'], $item['ticket_id'] );
}
return $data;
}
Changelog
| Version | Description |
|---|---|
| 4.7 | Introduced. |