/** * Update transaction record using a data that comes for PayPal Adaptive PAY notifications. * * @param array $data * @param string $preApprovalKey * * @return array|null */ protected function updateTransactionDataOnPay($data, $preApprovalKey) { // Get transaction by ID $keys = array("txn_id" => $preApprovalKey); $transaction = new Crowdfunding\Transaction(JFactory::getDbo()); $transaction->load($keys); $status = $this->getPaymentStatus($data); // Process the status state. switch ($status) { case "completed": if (!$transaction->isCompleted()) { $transaction->setStatus($status); $transaction->setStatusReason(""); } break; } // Get additional information from transaction. $extraData = $this->prepareNotificationExtraData($data, JText::_("PLG_CROWDFUNDINGPAYMENT_PAYPALADAPTIVE_RESPONSE_NOTE_NOTIFICATION")); if (!empty($extraData)) { $transaction->addExtraData($extraData); } $transaction->store(); }