public function testSerializeAndUnserialize() { $payment = new Payment(array('customer' => new Customer(array('first_name' => 'Vasya', 'last_name' => 'Pupkin', 'email' => '*****@*****.**')))); $paymentTransaction = new PaymentTransaction(array('status' => PaymentTransaction::STATUS_APPROVED)); $paymentTransaction->addError(new PaynetException('Test exception')); $payment->setStatus(Payment::STATUS_CAPTURE)->addPaymentTransaction($paymentTransaction)->addPaymentTransaction(new PaymentTransaction()); $unserializedPayment = unserialize(serialize($payment)); $paymentTransactions = $unserializedPayment->getPaymentTransactions(); $unserializedTransaction = reset($paymentTransactions); $this->assertEquals(Payment::STATUS_CAPTURE, $unserializedPayment->getStatus()); $this->assertEquals('*****@*****.**', $unserializedPayment->getCustomer()->getEmail()); $this->assertCount(2, $paymentTransactions); $this->assertEquals(PaymentTransaction::STATUS_APPROVED, $unserializedTransaction->getStatus()); $errors = $unserializedTransaction->getErrors(); $this->assertTrue($unserializedTransaction->hasErrors()); $this->assertEquals('Test exception', reset($errors)->getMessage()); }
/** * Updates Payment transaction by Callback data * * @param PaymentTransaction $paymentTransaction Payment transaction for updating * @param CallbackResponse $response Callback for payment transaction updating */ protected function updatePaymentTransaction(PaymentTransaction $paymentTransaction, CallbackResponse $callbackResponse) { $paymentTransaction->setStatus($callbackResponse->getStatus()); $paymentTransaction->getPayment()->setPaynetId($callbackResponse->getPaymentPaynetId()); if ($callbackResponse->isError() || $callbackResponse->isDeclined()) { $paymentTransaction->addError($callbackResponse->getError()); } }
/** * Updates payment transaction by query response data * if payment transaction is not processing or approved * * @param PaymentTransaction $paymentTransaction Payment transaction for updating * @param Response $response Response for payment transaction updating */ protected function updatePaymentTransactionOnError(PaymentTransaction $paymentTransaction, Response $response) { if ($response->isDeclined()) { $paymentTransaction->setStatus($response->getStatus()); } else { $paymentTransaction->setStatus(PaymentTransaction::STATUS_ERROR); } $paymentTransaction->addError($response->getError()); $this->setPaynetId($paymentTransaction, $response); }