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); } }
/** * 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(); }