protected function validatePaymentTransaction(PaymentTransaction $paymentTransaction)
 {
     if (!$paymentTransaction->getPayment()->isPaid()) {
         throw new ValidationException("Payment must be paid up to return funds");
     }
     parent::validatePaymentTransaction($paymentTransaction);
 }
 /**
  * {@inheritdoc}
  */
 protected function validateCallback(PaymentTransaction $paymentTransaction, CallbackResponse $callbackResponse)
 {
     if (!$paymentTransaction->isNew()) {
         throw new ValidationException("Only new payment transaction can be processed");
     }
     parent::validateCallback($paymentTransaction, $callbackResponse);
 }
 /**
  * Fill fields of payment data objects by date from PaynetEasy response.
  *
  * @param       PaymentTransaction      $paymentTransaction     Payment transaction to fill.
  * @param       Response                $response               PaynetEasy response to get data from.
  */
 protected function setFieldsFromResponse(PaymentTransaction $paymentTransaction, Response $response)
 {
     $payment = $paymentTransaction->getPayment();
     $card = $payment->getRecurrentCardFrom();
     if ($response->offsetExists('card-ref-id')) {
         $card->setPaynetId($response['card-ref-id']);
     }
     if ($response->offsetExists('last-four-digits')) {
         $card->setLastFourDigits($response['last-four-digits']);
     }
     if ($response->offsetExists('bin')) {
         $card->setBin($response['bin']);
     }
     if ($response->offsetExists('cardholder-name')) {
         $card->setCardPrintedName($response['cardholder-name']);
     }
     if ($response->offsetExists('card-exp-month')) {
         $card->setExpireMonth($response['card-exp-month']);
     }
     if ($response->offsetExists('card-exp-year')) {
         $card->setExpireYear($response['card-exp-year']);
     }
     if ($response->offsetExists('card-hash-id')) {
         $card->setCardHashId($response['card-hash-id']);
     }
     if ($response->offsetExists('card-type')) {
         $card->setCardType($response['card-type']);
     }
 }
 public function processResponse(PaymentTransaction $paymentTransaction, Response $response)
 {
     if ($response->isApproved()) {
         $paymentTransaction->setStatus(PaymentTransaction::STATUS_APPROVED);
     }
     return $response;
 }
 /**
  * Check, if payment transaction is finished and payment is not new.
  *
  * @param       PaymentTransaction      $paymentTransaction     Payment transaction for checking
  */
 protected function checkPaymentTransactionStatus(PaymentTransaction $paymentTransaction)
 {
     if (!$paymentTransaction->isFinished()) {
         throw new ValidationException('Only finished payment transaction can be used for create-card-ref-id');
     }
     if (!$paymentTransaction->getPayment()->isPaid()) {
         throw new ValidationException("Can not use new payment for create-card-ref-id. Execute 'sale' or 'preauth' query first");
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function validatePaymentTransaction(PaymentTransaction $paymentTransaction)
 {
     if ($paymentTransaction->getPayment()->hasProcessingTransaction()) {
         throw new ValidationException('Payment can not has processing payment transaction');
     }
     if (!$paymentTransaction->isNew()) {
         throw new ValidationException('Payment transaction must be new');
     }
     parent::validatePaymentTransaction($paymentTransaction);
 }
 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());
 }
 /**
  * Transform OsCommerce order to PaynetEasy order
  *
  * @param       order           $oscommerce_order       OsCommerce order
  * @param       string          $redirect_url           Url for final payment processing
  *
  * @return      PaymentTransaction                      PaynetEasy transaction
  */
 protected function get_paynet_transaction(OsCommerceOrder $oscommerce_order, $redirect_url = null)
 {
     $oscommerce_customer = $oscommerce_order->customer;
     $paynet_transaction = new PaymentTransaction();
     $paynet_address = new BillingAddress();
     $paynet_payment = new Payment();
     $paynet_customer = new Customer();
     $query_config = new QueryConfig();
     $state_code = tep_get_zone_code($oscommerce_customer['country']['id'], $oscommerce_customer['zone_id'], $oscommerce_customer['state']);
     $paynet_address->setCountry($oscommerce_customer['country']['iso_code_2'])->setState($state_code)->setCity($oscommerce_customer['city'])->setFirstLine($oscommerce_customer['street_address'])->setZipCode($oscommerce_customer['postcode'])->setPhone($oscommerce_customer['telephone']);
     $paynet_customer->setEmail($oscommerce_customer['email_address'])->setFirstName($oscommerce_customer['firstname'])->setLastName($oscommerce_customer['lastname'])->setIpAddress(tep_get_ip_address());
     $paynet_payment->setClientId($oscommerce_order->info['order_id'])->setDescription($this->get_paynet_order_description($oscommerce_order))->setAmount($oscommerce_order->info['total'])->setCurrency($oscommerce_order->info['currency'])->setCustomer($paynet_customer)->setBillingAddress($paynet_address);
     if (isset($oscommerce_order->info['paynet_order_id'])) {
         $paynet_payment->setPaynetId($oscommerce_order->info['paynet_order_id']);
     }
     $query_config->setEndPoint((int) MODULE_PAYMENT_PAYNETEASYFORM_END_POINT)->setLogin(MODULE_PAYMENT_PAYNETEASYFORM_LOGIN)->setSigningKey(MODULE_PAYMENT_PAYNETEASYFORM_SIGNING_KEY)->setGatewayMode(MODULE_PAYMENT_PAYNETEASYFORM_GATEWAY_MODE)->setGatewayUrlSandbox(MODULE_PAYMENT_PAYNETEASYFORM_SANDBOX_GATEWAY)->setGatewayUrlProduction(MODULE_PAYMENT_PAYNETEASYFORM_PRODUCTION_GATEWAY);
     if (Validator::validateByRule($redirect_url, Validator::URL, false)) {
         $query_config->setRedirectUrl($redirect_url)->setCallbackUrl($redirect_url);
     }
     $paynet_transaction->setPayment($paynet_payment)->setQueryConfig($query_config);
     return $paynet_transaction;
 }
 /**
  * Get PaynetEasy payment transaction object by OpenCart order data array
  *
  * @param       MageOrder       $mageOrder          Magento order
  * @param       string          $redirectUrl        Url for final payment processing
  *
  * @return      PaynetTransaction                   PaynetEasy payment transaction
  */
 protected function getPaynetTransaction(array $opencart_order, $redirect_url = null)
 {
     $query_config = new QueryConfig();
     $paynet_address = new BillingAddress();
     $paynet_transaction = new PaymentTransaction();
     $paynet_payment = new Payment();
     $paynet_customer = new Customer();
     $paynet_address->setCountry($opencart_order['payment_iso_code_2'])->setCity($opencart_order['payment_city'])->setFirstLine($opencart_order['payment_address_1'])->setZipCode($opencart_order['payment_postcode'])->setPhone($opencart_order['telephone'])->setState($opencart_order['payment_zone_code']);
     $paynet_customer->setEmail($opencart_order['email'])->setFirstName($opencart_order['firstname'])->setLastName($opencart_order['lastname'])->setIpAddress($opencart_order['ip']);
     $paynet_payment->setClientId($opencart_order['order_id'])->setDescription($this->getPaynetPaymentDescription($opencart_order))->setAmount($opencart_order['total'])->setCurrency($opencart_order['currency_code'])->setCustomer($paynet_customer)->setBillingAddress($paynet_address);
     $query_config->setEndPoint($this->getModuleConfigValue('end_point'))->setLogin($this->getModuleConfigValue('login'))->setSigningKey($this->getModuleConfigValue('signing_key'))->setGatewayMode($this->getModuleConfigValue('gateway_mode'))->setGatewayUrlSandbox($this->getModuleConfigValue('sandbox_gateway'))->setGatewayUrlProduction($this->getModuleConfigValue('production_gateway'));
     if (Validator::validateByRule($redirect_url, Validator::URL, false)) {
         $query_config->setRedirectUrl($redirect_url)->setCallbackUrl($redirect_url);
     }
     $paynet_transaction->setPayment($paynet_payment)->setQueryConfig($query_config);
     return $paynet_transaction;
 }
 public function processCallback(PaymentTransaction $paymentTransaction, CallbackResponse $callback)
 {
     $paymentTransaction->setStatus(PaymentTransaction::STATUS_APPROVED);
     return $callback;
 }
 /**
  * Get PaynetEasy payment transaction object by Prestashop cart object.
  *
  * @param       Cart        $prestashop_cart        Prestashop cart.
  * @param       string      $return_url             Url for final payment processing.
  *
  * @return      PaynetTransaction       PaynetEasy payment transaction
  */
 protected function getPaynetTransaction(Cart $prestashop_cart, $return_url = null)
 {
     $paynet_transaction = new PaymentTransaction();
     $paynet_transaction->setPayment($this->getPaynetPayment($prestashop_cart))->setQueryConfig($this->getQueryConfig($return_url));
     return $paynet_transaction;
 }
 /**
  * Validate callback response control code
  *
  * @param       PaymentTransaction      $paymentTransaction     Payment transaction for control code checking
  * @param       CallbackResponse        $callbackResponse       Callback for control code checking
  *
  * @throws      ValidationException                             Invalid control code
  */
 protected function validateSignature(PaymentTransaction $paymentTransaction, CallbackResponse $callbackResponse)
 {
     // This is SHA-1 checksum of the concatenation
     // status + orderid + client_orderid + merchant-control.
     $expectedControlCode = sha1($callbackResponse->getStatus() . $callbackResponse->getPaymentPaynetId() . $callbackResponse->getPaymentClientId() . $paymentTransaction->getQueryConfig()->getSigningKey());
     if ($expectedControlCode !== $callbackResponse->getControlCode()) {
         throw new ValidationException("Actual control code '{$callbackResponse->getControlCode()}' does " . "not equal expected '{$expectedControlCode}'");
     }
 }
 /**
  * {@inheritdoc}
  */
 protected function updatePaymentTransactionOnSuccess(PaymentTransaction $paymentTransaction, Response $response)
 {
     $paymentTransaction->getPayment()->getRecurrentCardFrom()->setCardPrintedName($response['card-printed-name'])->setExpireYear($response['expire-year'])->setExpireMonth($response['expire-month'])->setBin($response['bin'])->setLastFourDigits($response['last-four-digits']);
 }
 /**
  * Set PaynetEasy payment id to payment transaction Payment
  *
  * @param       PaymentTransaction      $paymentTransaction     Payment transaction
  * @param       Response                $response               Query response
  */
 protected function setPaynetId(PaymentTransaction $paymentTransaction, Response $response)
 {
     $responsePaynetId = $response->getPaymentPaynetId();
     if (strlen($responsePaynetId) > 0) {
         $paymentTransaction->getPayment()->setPaynetId($responsePaynetId);
     }
 }
Пример #15
0
 /**
  * Add query config data to PaynetEasy payment transaction
  *
  * @param       PaynetTransaction       $paynetTransaction      PaynetEasy payment transaction
  * @param       string                  $redirectUrl            Url for final payment processing
  *
  * @return      PaynetTransaction                               PaynetEasy payment transaction
  */
 protected function addQueryConfigData(PaynetTransaction $paynetTransaction, $redirectUrl = null)
 {
     $paynetTransaction->getQueryConfig()->setEndPoint($this->getConfigData('endpoint_id'))->setLogin($this->getConfigData('merchant_login'))->setSigningKey($this->getConfigData('merchant_key'))->setGatewayMode($this->getConfigData('gateway_mode'))->setGatewayUrlSandbox($this->getConfigData('sandbox_api_url'))->setGatewayUrlProduction($this->getConfigData('production_api_url'));
     if (Validator::validateByRule($redirectUrl, Validator::URL, false)) {
         $paynetTransaction->getQueryConfig()->setRedirectUrl($redirectUrl)->setCallbackUrl($redirectUrl);
     }
 }
 /**
  * Updates joomla address by PaynetEasy order data
  *
  * @param       jshopOrder              $joomlaOrder            Joomla order
  * @param       PaymentTransaction      $paynetTransaction      PaynetEasy payment transaction
  */
 protected function updateOrder(jshopOrder $joomlaOrder, PaymentTransaction $paynetTransaction)
 {
     $payment = $paynetTransaction->getPayment();
     $joomlaOrder->paynet_order_id = $payment->getPaynetId();
     $joomlaOrder->transaction_status = $paynetTransaction->getStatus();
     $joomlaOrder->payment_status = $payment->getStatus();
 }
 /**
  * Updates joomla address by PaynetEasy order data
  *
  * @param       stdClass                $joomlaAddress          Joomla address
  * @param       PaymentTransaction      $paymentTransaction     PaynetEasy payment transaction
  */
 protected function updateAddress(stdClass $joomlaAddress, PaymentTransaction $paymentTransaction)
 {
     $payment = $paymentTransaction->getPayment();
     $joomlaAddress->paynet_order_id = $payment->getPaynetId();
     $joomlaAddress->transaction_status = $paymentTransaction->getStatus();
     $joomlaAddress->payment_status = $payment->getStatus();
 }