getTransactionId() public method

Returns the transaction id for which this IPN was generated, if one is available
public getTransactionId ( ) : string
return string
Example #1
0
 /**
  * @Route ("/ipn")
  * @Transactional
  *
  * Handles the incoming HTTP request
  * @param array $params
  */
 public function ipn(array $params)
 {
     $log = Application::instance()->getLogger();
     try {
         $ipnMessage = new PPIPNMessage();
         if (!$ipnMessage->validate()) {
             $log->error('Got a invalid IPN ' . json_encode($ipnMessage->getRawData()));
             return new Response(Http::STATUS_ERROR, 'Got a invalid IPN');
         }
         $data = $ipnMessage->getRawData();
         $log->info(sprintf('Got a valid IPN [txn_id: %s, txn_type: %s]', $ipnMessage->getTransactionId(), $data['txn_type']));
         $orderService = OrdersService::instance();
         $orderService->addIPNRecord(array('ipnTrackId' => $data['ipn_track_id'], 'ipnTransactionId' => $data['txn_id'], 'ipnTransactionType' => $data['txn_type'], 'ipnData' => json_encode($data, JSON_UNESCAPED_UNICODE)));
         // Make sure this IPN is for the merchant
         if (strcasecmp(Config::$a['commerce']['receiver_email'], $data['receiver_email']) !== 0) {
             $log->critical(sprintf('IPN originated with incorrect receiver_email [%s]', $data['ipn_track_id']));
             return new Response(Http::STATUS_ERROR, 'Invalid IPN');
         }
         // Handle the IPN
         $this->handleIPNTransaction($data['txn_id'], $data['txn_type'], $data);
         // Return success response
         return new Response(Http::STATUS_OK);
     } catch (\Exception $e) {
         $log->critical($e->getMessage());
         return new Response(Http::STATUS_ERROR, 'Error');
     }
     $log->critical('Unhandled IPN');
     return new Response(Http::STATUS_ERROR, 'Unhandled IPN');
 }
 /**
  * @test
  */
 public function testGetTransactionData()
 {
     $ipnData = "txn_data=notavailable";
     $ipn = new PPIPNMessage($ipnData, array('mode' => 'sandbox'));
     $this->assertEquals('', $ipn->getTransactionId());
     $ipnData = "txn_id=123&transaction_type=pay";
     $ipn = new PPIPNMessage($ipnData, array('mode' => 'sandbox'));
     $this->assertEquals(123, $ipn->getTransactionId());
     $this->assertEquals('pay', $ipn->getTransactionType());
     $ipnData = "transaction[0].id=5&transaction[1].id=10";
     $ipn = new PPIPNMessage($ipnData, array('mode' => 'sandbox'));
     $this->assertEquals(array(5, 10), $ipn->getTransactionId());
     $ipnData = "txn_id=123&transaction[0].id=5&transaction[1].id=10";
     $ipn = new PPIPNMessage($ipnData, array('mode' => 'sandbox'));
     $this->assertEquals(123, $ipn->getTransactionId());
 }