Exemplo n.º 1
0
 /**
  * Validate PayPal transaction.
  *
  * @param array $data   POST data
  * @param string $realCurrency
  * @param VirtualCurrencyPaymentSession $paymentSession
  * @param Joomla\Registry\Registry $params
  *
  * @return array
  */
 protected function validateData($data, $realCurrency, $paymentSession, $params)
 {
     $txnDate = JArrayHelper::getValue($data, "payment_date");
     $date = new JDate($txnDate);
     // Prepare transaction data
     $transaction = array("sender_id" => (int) $params->get("payments_bank_id"), "receiver_id" => (int) $paymentSession->getUserId(), "currency_id" => (int) $paymentSession->getCurrencyId(), "units" => (int) $paymentSession->getAmount(), "service_provider" => "PayPal", "txn_id" => JArrayHelper::getValue($data, "txn_id", null, "string"), "txn_amount" => JArrayHelper::getValue($data, "mc_gross", null, "float"), "txn_currency" => JArrayHelper::getValue($data, "mc_currency", null, "string"), "txn_status" => JString::strtolower(JArrayHelper::getValue($data, "payment_status", null, "string")), "txn_date" => $date->toSql());
     // Check Currency ID and Transaction ID
     if (!$transaction["currency_id"] or !$transaction["txn_id"]) {
         // Log data in the database
         $this->log->add(JText::_($this->textPrefix . "_ERROR_INVALID_TRANSACTION_DATA"), $this->debugType, $transaction);
         return null;
     }
     // Check real currency.
     if (strcmp($transaction["txn_currency"], $realCurrency) != 0) {
         // Log data in the database
         $this->log->add(JText::_($this->textPrefix . "_ERROR_INVALID_TRANSACTION_CURRENCY"), $this->debugType, array("TRANSACTION DATA" => $transaction, "CURRENCY" => $realCurrency));
         return null;
     }
     // Check receiver
     $allowedReceivers = array(JString::strtolower(JArrayHelper::getValue($data, "business")), JString::strtolower(JArrayHelper::getValue($data, "receiver_email")), JString::strtolower(JArrayHelper::getValue($data, "receiver_id")));
     if ($this->params->get("paypal_sandbox", 0)) {
         $receiver = JString::strtolower(JString::trim($this->params->get("paypal_sandbox_business_name")));
     } else {
         $receiver = JString::strtolower(JString::trim($this->params->get("paypal_business_name")));
     }
     if (!in_array($receiver, $allowedReceivers)) {
         // Log data in the database
         $this->log->add(JText::_($this->textPrefix . "_ERROR_INVALID_RECEIVER"), $this->debugType, array("TRANSACTION DATA" => $transaction, "RECEIVER" => $receiver, "RECEIVER DATA" => $allowedReceivers));
         return null;
     }
     return $transaction;
 }