Sonata\Component\Payment\BasePayment::callback PHP Метод

callback() публичный Метод

public callback ( Sonata\Component\Payment\TransactionInterface $transaction )
$transaction Sonata\Component\Payment\TransactionInterface
    public function callback(TransactionInterface $transaction)
    {
        // check if the order exists
        if (!$transaction->getOrder()) {
            $transaction->setStatusCode(TransactionInterface::STATUS_ORDER_UNKNOWN);
            $transaction->setState(TransactionInterface::STATE_KO);
            $transaction->setInformation('The order does not exist');
            return $this->handleError($transaction);
        }
        // check if the request is valid
        if (!$this->isRequestValid($transaction)) {
            $transaction->setStatusCode(TransactionInterface::STATUS_WRONG_REQUEST);
            $transaction->setState(TransactionInterface::STATE_KO);
            $transaction->setInformation('The request is not valid');
            return $this->handleError($transaction);
        }
        // check if the callback is valid
        if (!$this->isCallbackValid($transaction)) {
            $transaction->setStatusCode(TransactionInterface::STATUS_WRONG_CALLBACK);
            $transaction->setState(TransactionInterface::STATE_KO);
            $transaction->setInformation('The callback reference is not valid');
            return $this->handleError($transaction);
        }
        // apply the transaction id
        $this->applyTransactionId($transaction);
        // if the order is not open, then something already happen ... (duplicate callback)
        if (!$transaction->getOrder()->isOpen()) {
            $transaction->setState(TransactionInterface::STATE_OK);
            // the transaction is valid, but not the order state
            $transaction->setStatusCode(TransactionInterface::STATUS_ORDER_NOT_OPEN);
            $transaction->setInformation('The order is not open, then something already happen ... (duplicate callback)');
            return $this->handleError($transaction);
        }
        // send the confirmation request to the bank
        if (!($response = $this->sendConfirmationReceipt($transaction))) {
            $transaction->setInformation('Fail to send the confirmation receipt');
            $response = $this->handleError($transaction);
        }
        return $response;
    }