public function testNotFound() { \Paynl\Config::setApiToken('1234567894561234567'); $this->setDummyData(); $this->setExpectedException('\\Paynl\\Error\\NotFound'); \Paynl\Currency::getCurrencyId('ZZZ'); }
private function setDummyData($name) { $this->testApiResult = file_get_contents(dirname(__FILE__) . '/dummyData/Validate/' . $name . '.json'); $curl = new \Paynl\Curl\Dummy(); $curl->setResult($this->testApiResult); \Paynl\Config::setCurl($curl); }
public static function requireServiceId() { $serviceId = Config::getServiceId(); if (empty($serviceId)) { throw new Error\Required\ServiceId(); } }
public function initSettings() { $storeId = $this->getStore(); $apitoken = $this->_scopeConfig->getValue('payment/paynl/apitoken', \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); $serviceId = $this->_scopeConfig->getValue('payment/paynl/serviceid', \Magento\Store\Model\ScopeInterface::SCOPE_STORE, $storeId); \Paynl\Config::setApitoken($apitoken); \Paynl\Config::setServiceId($serviceId); }
public function doRequest($endpoint, $version = null) { $data = $this->getData(); $uri = Config::getApiUrl($endpoint, $version); $curl = new Curl(); $result = $curl->post($uri, $data); $output = self::processResult($result); return $output; }
public function testRefundAdd() { $this->setDummyData('refund'); \Paynl\Config::setApiToken('123456789012345678901234567890'); \Paynl\Config::setServiceId('SL-1234-5678'); $result = $this->refundAddFull(); $this->assertInstanceOf('\\Paynl\\Result\\Refund\\Add', $result); $this->assertStringStartsWith('RF-', $result->getRefundId()); }
public function doRequest($endpoint = null) { if (isset(self::$cache[Config::getServiceId()])) { return self::$cache[Config::getServiceId()]; } else { $result = parent::doRequest('transaction/getService'); self::$cache[Config::getServiceId()] = $result; return $result; } }
/** * Configures the sdk with the API token and serviceId * * @return bool TRUE when config loaded, FALSE when the apitoken or serviceId are empty */ public function configureSDK() { $apiToken = $this->getApiToken(); $serviceId = $this->getServiceId(); if (!empty($apiToken) && !empty($serviceId)) { \Paynl\Config::setApiToken($apiToken); \Paynl\Config::setServiceId($serviceId); return true; } return false; }
/** * Do the request * * @param null $endpoint * @param null $version * @return array The result */ public function doRequest($endpoint = null, $version = null) { if (isset(self::$cache[Config::getServiceId()])) { Helper::requireApiToken(); Helper::requireServiceId(); return self::$cache[Config::getServiceId()]; } else { $result = parent::doRequest('transaction/getService'); self::$cache[Config::getServiceId()] = $result; return $result; } }
public function execute() { \Paynl\Config::setApiToken($this->_config->getApiToken()); $transaction = \Paynl\Transaction::getForReturn(); if ($transaction->isPaid() || $transaction->isPending()) { $resultRedirect = $this->resultRedirectFactory->create(); return $resultRedirect->setPath('checkout/onepage/success'); } else { //canceled, reorder $this->messageManager->addNotice(__('Payment canceled')); return $this->_reorder($transaction->getDescription()); } }
public function execute() { $skipFraudDetection = false; \Paynl\Config::setApiToken($this->_config->getApiToken()); $params = $this->getRequest()->getParams(); if (!isset($params['order_id'])) { $this->_logger->critical('Exchange: order_id is not set in the request', $params); return $this->_result->setContents('FALSE| order_id is not set in the request'); } try { $transaction = \Paynl\Transaction::get($params['order_id']); } catch (\Exception $e) { $this->_logger->critical($e, $params); return $this->_result->setContents('FALSE| Error fetching transaction. ' . $e->getMessage()); } if ($transaction->isPending()) { return $this->_result->setContents("TRUE| Ignoring pending"); } $orderId = $transaction->getDescription(); $order = $this->_orderFactory->create()->loadByIncrementId($orderId); if (empty($order)) { $this->_logger->critical('Cannot load order: ' . $orderId); return $this->_result->setContents('FALSE| Cannot load order'); } if ($order->getTotalDue() <= 0) { $this->_logger->debug('Total due <= 0, so iam not touching the status of the order: ' . $orderId); return $this->_result->setContents('TRUE| Total due <= 0, so iam not touching the status of the order'); } if ($transaction->isPaid()) { $payment = $order->getPayment(); $payment->setTransactionId($transaction->getId()); $payment->setCurrencyCode($transaction->getPaidCurrency()); $payment->setIsTransactionClosed(0); $payment->registerCaptureNotification($transaction->getPaidCurrencyAmount(), $skipFraudDetection); $order->save(); // notify customer $invoice = $payment->getCreatedInvoice(); if ($invoice && !$order->getEmailSent()) { $this->_orderSender->send($order); $order->addStatusHistoryComment(__('New order email sent'))->setIsCustomerNotified(true)->save(); } if ($invoice && !$invoice->getEmailSent()) { $this->_invoiceSender->send($invoice); $order->addStatusHistoryComment(__('You notified customer about invoice #%1.', $invoice->getIncrementId()))->setIsCustomerNotified(true)->save(); } return $this->_result->setContents("TRUE| PAID"); } elseif ($transaction->isCanceled()) { $order->cancel()->save(); return $this->_result->setContents("TRUE| CANCELED"); } }
public function execute() { $skipFraudDetection = false; \Paynl\Config::setApiToken($this->_config->getApiToken()); $transaction = \Paynl\Transaction::getForExchange(); if ($transaction->isPending()) { die("TRUE| Ignoring pending"); } $orderId = $transaction->getDescription(); $order = $this->_orderFactory->create()->loadByIncrementId($orderId); if (empty($order)) { die('FALSE| Cannot load order'); } if ($order->getTotalDue() <= 0) { die('TRUE| Total due <= 0, so iam not touching the status if the order'); } if ($transaction->isPaid()) { if ($order->getOrderCurrencyCode() != 'EUR') { $skipFraudDetection = true; } $payment = $order->getPayment(); $payment->setTransactionId($transaction->getId()); $payment->setCurrencyCode($transaction->getPaidCurrency()); $payment->setIsTransactionClosed(0); $payment->registerCaptureNotification($transaction->getPaidAmount(), $skipFraudDetection); $order->save(); // notify customer $invoice = $payment->getCreatedInvoice(); if ($invoice && !$order->getEmailSent()) { $this->_orderSender->send($order); $order->addStatusHistoryComment(__('You notified customer about invoice #%1.', $invoice->getIncrementId()))->setIsCustomerNotified(true)->save(); } die("TRUE| PAID"); } elseif ($transaction->isCanceled()) { $order->cancel()->save(); die("TRUE| CANCELED"); } }
public function execute() { $resultRedirect = $this->resultRedirectFactory->create(); \Paynl\Config::setApiToken($this->_config->getApiToken()); $params = $this->getRequest()->getParams(); if (!isset($params['orderId'])) { $this->messageManager->addNoticeMessage(__('Invalid return, no transactionId specified')); $this->_logger->critical('Invalid return, no transactionId specified', $params); $resultRedirect->setPath('checkout/cart'); return $resultRedirect; } try { $transaction = \Paynl\Transaction::get($params['orderId']); } catch (\Exception $e) { $this->_logger->critical($e, $params); $this->messageManager->addExceptionMessage($e, __('There was an error checking the transaction status')); $resultRedirect->setPath('checkout/cart'); return $resultRedirect; } if ($transaction->isPaid() || $transaction->isPending()) { $this->_getCheckoutSession()->start(); $resultRedirect->setPath('checkout/onepage/success'); } else { //canceled, re-activate quote try { $this->_getCheckoutSession()->restoreQuote(); $this->messageManager->addNoticeMessage(__('Payment canceled')); } catch (\Magento\Framework\Exception\LocalizedException $e) { $this->_logger->error($e); $this->messageManager->addExceptionMessage($e, $e->getMessage()); } catch (\Exception $e) { $this->_logger->error($e); $this->messageManager->addExceptionMessage($e, __('Unable to cancel order')); } $resultRedirect->setPath('checkout/cart'); } return $resultRedirect; }
public function doRequest($endpoint, $version = null) { if (is_null($version)) { $version = $this->version; } $data = $this->getData(); $uri = Config::getApiUrl($endpoint, $version); $curl = Config::getCurl(); if (Config::getCAInfoLocation()) { // set a custom CAInfo file $curl->setOpt(CURLOPT_CAINFO, Config::getCAInfoLocation()); } $result = $curl->post($uri, $data); if ($curl->error) { if (!empty($result)) { if ($result->status == "FALSE") { throw new Error\Api($result->error); } } throw new Error\Error($curl->errorMessage); } $output = static::processResult($result); return $output; }
public function testGetCurlCustomString() { \Paynl\Config::setCurl('\\Paynl\\Curl\\Dummy'); $this->assertInstanceOf('\\Paynl\\Curl\\Dummy', \Paynl\Config::getCurl()); }
public function testRefundError() { \Paynl\Config::setApiToken('123456789012345678901234567890'); $this->setExpectedException('\\Paynl\\Error\\Api'); $this->setDummyData('Result/refundError'); \Paynl\Transaction::refund('645958819Xdd3ea1', 5, 'Description'); }
<?php /* * Copyright (C) 2015 Andy Pieters <*****@*****.**> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ require_once '../vendor/autoload.php'; \Paynl\Config::setApiToken('e41f83b246b706291ea9ad798ccfd9f0fee5e0ab'); $transactionId = $_GET['transactionId']; try { $result = \Paynl\Transaction::refund($transactionId, 5); } catch (\Paynl\Error\Api $e) { echo $e->getMessage(); }
public function testDeclineWithoutTransactionId() { \Paynl\Config::setApiToken('123456789012345678901234567890'); $this->setExpectedException('\\Paynl\\Error\\Required'); \Paynl\Transaction::decline(''); }
protected function getData() { // Checken of alle verplichte velden geset zijn Helper::requireServiceId(); $data['serviceId'] = Config::getServiceId(); if ($this->_testMode === true) { $data['testMode'] = '1'; } else { $data['testMode'] = '0'; } if (empty($this->_amount)) { throw new \ErrorRequired('Amount is niet geset', 1); } else { $data['amount'] = $this->_amount; } if (!empty($this->_paymentOptionId)) { $data['paymentOptionId'] = $this->_paymentOptionId; } if (empty($this->_finishUrl)) { throw new ErrorRequired('FinishUrl is niet geset', 1); } else { $data['finishUrl'] = $this->_finishUrl; } if (!empty($this->_exchangeUrl)) { $data['transaction']['orderExchangeUrl'] = $this->_exchangeUrl; } if (!empty($this->_description)) { $data['transaction']['description'] = $this->_description; } if (!empty($this->_paymentOptionSubId)) { $data['paymentOptionSubId'] = $this->_paymentOptionSubId; } //ip en browserdata setten browserdata set ik met dummydata $data['ipAddress'] = Helper::getIp(); if (!empty($this->_products)) { // $data['saleData']['invoiceDate'] = date('d-m-Y'); // $data['saleData']['deliveryDate'] = date('d-m-Y', strtotime('+1 day')); $data['saleData']['orderData'] = $this->_products; } if (!empty($this->_enduser)) { $data['enduser'] = $this->_enduser; } if (!empty($this->_extra1)) { $data['statsData']['extra1'] = $this->_extra1; } if (!empty($this->_extra2)) { $data['statsData']['extra2'] = $this->_extra2; } if (!empty($this->_extra3)) { $data['statsData']['extra3'] = $this->_extra3; } if (!empty($this->_promotorId)) { $data['statsData']['promotorId'] = $this->_promotorId; } if (!empty($this->_info)) { $data['statsData']['info'] = $this->_info; } if (!empty($this->_tool)) { $data['statsData']['tool'] = $this->_tool; } if (!empty($this->_object)) { $data['statsData']['object'] = $this->_object; } if (!empty($this->_domainId)) { $data['statsData']['domain_id'] = $this->_domainId; } if (!empty($this->_transferData)) { $data['statsData']['transferData'] = $this->_transferData; } $this->data = array_merge($data, $this->data); return parent::getData(); }
protected function getData() { // Checken of alle verplichte velden geset zijn Helper::requireServiceId(); $data['serviceId'] = Config::getServiceId(); if ($this->_testMode === true) { $data['testMode'] = '1'; } else { $data['testMode'] = '0'; } if (empty($this->_amount)) { throw new ErrorRequired('Amount is niet geset', 1); } else { $data['amount'] = $this->_amount; } if (!empty($this->_paymentOptionId)) { $data['paymentOptionId'] = $this->_paymentOptionId; } if (empty($this->_finishUrl)) { throw new ErrorRequired('FinishUrl is niet geset', 1); } else { $data['finishUrl'] = $this->_finishUrl; } if (!empty($this->_exchangeUrl)) { $data['transaction']['orderExchangeUrl'] = $this->_exchangeUrl; } if (!empty($this->_description)) { $data['transaction']['description'] = $this->_description; } if (isset($this->_currency)) { $data['transaction']['currency'] = $this->_currency; } if (isset($this->_expireDate)) { $data['transaction']['expireDate'] = $this->_expireDate->format('d-m-Y H:i:s'); } if (!empty($this->_paymentOptionSubId)) { $data['paymentOptionSubId'] = $this->_paymentOptionSubId; } if (isset($this->_ipaddress)) { $data['ipAddress'] = $this->_ipaddress; } else { $data['ipAddress'] = Helper::getIp(); } if (!empty($this->_products)) { $data['saleData']['orderData'] = $this->_products; } if (!empty($this->_deliveryDate)) { $data['saleData']['deliveryDate'] = $this->_deliveryDate->format('d-m-Y'); } if (!empty($this->_invoiceDate)) { $data['saleData']['invoiceDate'] = $this->_invoiceDate->format('d-m-Y'); } if (!empty($this->_enduser)) { $data['enduser'] = $this->_enduser; } if (!empty($this->_extra1)) { $data['statsData']['extra1'] = $this->_extra1; } if (!empty($this->_extra2)) { $data['statsData']['extra2'] = $this->_extra2; } if (!empty($this->_extra3)) { $data['statsData']['extra3'] = $this->_extra3; } if (!empty($this->_promotorId)) { $data['statsData']['promotorId'] = $this->_promotorId; } if (!empty($this->_info)) { $data['statsData']['info'] = $this->_info; } if (!empty($this->_tool)) { $data['statsData']['tool'] = $this->_tool; } if (!empty($this->_object)) { $data['statsData']['object'] = $this->_object; } if (!empty($this->_domainId)) { $data['statsData']['domain_id'] = $this->_domainId; } if (!empty($this->_transferData)) { $data['statsData']['transferData'] = $this->_transferData; } if (!empty($this->_transferType)) { $data['transferType'] = $this->_transferType; } if (!empty($this->_transferValue)) { $data['transferValue'] = $this->_transferValue; } $this->data = array_merge($data, $this->data); return parent::getData(); }
public function doRequest($endpoint, $version = null) { if (is_null($version)) { $version = $this->version; } $data = $this->getData(); $uri = Config::getApiUrl($endpoint, $version); $curl = Config::getCurl(); if (Config::getCAInfoLocation()) { // set a custom CAInfo file $curl->setOpt(CURLOPT_CAINFO, Config::getCAInfoLocation()); } $result = $curl->post($uri, $data); if ($curl->error) { // todo handle 400 errors properly, the SDK user needs to know what // went wrong $error = new Error\Error($curl->errorMessage); $error->setAdditionalData($result)->setServiceId(Config::getServiceId())->setApiToken(Config::getApiToken())->setApiEndpoint($endpoint)->setApiEndpointVersion($version); throw $error; } $output = static::processResult($result); return $output; }
/** * Get data to send to the api * * @return array * @throws ErrorRequired */ protected function getData() { Helper::requireServiceId(); $this->data['serviceId'] = Config::getServiceId(); if (empty($this->_amount)) { throw new ErrorRequired('Amount is not set', 1); } $this->data['amount'] = $this->_amount; if (empty($this->_bankAccountHolder)) { throw new ErrorRequired('bankAccountHolder is not set', 1); } $this->data['bankAccountHolder'] = $this->_bankAccountHolder; if (empty($this->_bankAccountNumber)) { throw new ErrorRequired('bankAccountNumber is not set', 1); } $this->data['bankAccountNumber'] = $this->_bankAccountNumber; if (!empty($this->_bankAccountBic)) { $this->data['bankAccountBic'] = $this->_bankAccountBic; } if (!empty($this->_description)) { $this->data['description'] = $this->_description; } if (!empty($this->_promotorId)) { $this->data['promotorId'] = $this->_promotorId; } if (!empty($this->_info)) { $this->data['info'] = $this->_info; } if (!empty($this->_tool)) { $this->data['tool'] = $this->_tool; } if (!empty($this->_object)) { $this->data['object'] = $this->_object; } if (!empty($this->_extra1)) { $this->data['extra1'] = $this->_extra1; } if (!empty($this->_extra2)) { $this->data['extra2'] = $this->_extra2; } if (!empty($this->_extra3)) { $this->data['extra3'] = $this->_extra3; } if (isset($this->_orderId)) { $this->data['orderId'] = $this->_orderId; } if (isset($this->_currency)) { $this->data['currency'] = $this->_currency; } if (!empty($this->_processDate)) { $this->data['processDate'] = $this->_processDate->format('d-m-Y'); } return parent::getData(); }
public function testGetBanksInvalidPaymentMethod() { $this->setDummyData(); \Paynl\Config::setServiceId('SL-1234-5678'); \Paynl\Config::setApiToken('123456789012345678901234567890'); $banks = \Paynl\Paymentmethods::getBanks(12345); //Non existent paymentmethod $this->assertInternalType('array', $banks); foreach ($banks as $bank) { $this->assertArrayHasKey('id', $bank); $this->assertArrayHasKey('name', $bank); $this->assertArrayHasKey('visibleName', $bank); } }
public function execute() { try { /** @var \Magento\Checkout\Model\Type\Onepage $onepage */ $onepage = $this->_objectManager->get('Magento\\Checkout\\Model\\Type\\Onepage'); /** @var \Magento\Quote\Model\Quote $quote */ $quote = $onepage->getQuote(); $quote->collectTotals(); $quote->reserveOrderId(); $orderId = $quote->getReservedOrderId(); $payment = $quote->getPayment()->getMethodInstance(); $total = $quote->getGrandTotal(); $items = $quote->getAllVisibleItems(); $currency = $quote->getQuoteCurrencyCode(); $returnUrl = $this->_url->getUrl('paynl/finish/'); $exchangeUrl = $this->_url->getUrl('paynl/exchange/'); $paymentOptionId = $payment->getPaymentOptionId(); $arrBillingAddress = $quote->getBillingAddress()->toArray(); $arrShippingAddress = $quote->getShippingAddress()->toArray(); $enduser = array('initials' => substr($arrBillingAddress['firstname'], 0, 1), 'lastName' => $arrBillingAddress['lastname'], 'phoneNumber' => $arrBillingAddress['telephone'], 'emailAddress' => $arrBillingAddress['email']); $address = array(); $arrAddress = \Paynl\Helper::splitAddress($arrBillingAddress['street']); $address['streetName'] = $arrAddress[0]; $address['houseNumber'] = $arrAddress[1]; $address['zipCode'] = $arrBillingAddress['postcode']; $address['city'] = $arrBillingAddress['city']; $address['country'] = $arrBillingAddress['country_id']; $shippingAddress = array(); $arrAddress2 = \Paynl\Helper::splitAddress($arrShippingAddress['street']); $shippingAddress['streetName'] = $arrAddress2[0]; $shippingAddress['houseNumber'] = $arrAddress2[1]; $shippingAddress['zipCode'] = $arrShippingAddress['postcode']; $shippingAddress['city'] = $arrShippingAddress['city']; $shippingAddress['country'] = $arrShippingAddress['country_id']; $data = array('amount' => $total, 'returnUrl' => $returnUrl, 'paymentMethod' => $paymentOptionId, 'description' => $orderId, 'extra1' => $orderId, 'extra1' => $quote->getId(), 'exchangeUrl' => $exchangeUrl, 'currency' => $currency); $data['address'] = $address; $data['shippingAddress'] = $shippingAddress; $data['enduser'] = $enduser; $arrProducts = array(); foreach ($items as $item) { $arrItem = $item->toArray(); if ($arrItem['price_incl_tax'] != null) { $product = array('id' => $arrItem['product_id'], 'name' => $arrItem['name'], 'price' => $arrItem['price_incl_tax'], 'qty' => $arrItem['qty'], 'tax' => $arrItem['tax_amount']); } $arrProducts[] = $product; } //shipping $shippingCost = $quote->getShippingAddress()->getShippingInclTax(); $shippingTax = $quote->getShippingAddress()->getShippingTaxAmount(); $shippingDescription = $quote->getShippingAddress()->getShippingDescription(); $arrProducts[] = array('id' => 'shipping', 'name' => $shippingDescription, 'price' => $shippingCost, 'qty' => 1, 'tax' => $shippingTax); // kortingen $discount = $quote->getSubtotal() - $quote->getSubtotalWithDiscount(); if ($discount > 0) { $arrProducts[] = array('id' => 'discount', 'name' => __('Discount'), 'price' => $discount * -1, 'qty' => 1, 'tax' => 0); } $data['products'] = $arrProducts; if ($this->_config->isTestMode()) { $data['testmode'] = 1; } $data['ipaddress'] = $quote->getRemoteIp(); \Paynl\Config::setApiToken($this->_config->getApiToken()); \Paynl\Config::setServiceId($this->_config->getServiceId()); $transaction = \Paynl\Transaction::start($data); $onepage->saveOrder(); $this->_redirect($transaction->getRedirectUrl()); } catch (\Exception $e) { $this->messageManager->addException($e, __('Something went wrong, please try again later')); $this->_redirect('checkout/cart'); } }
public function testRequireServiceIdException() { $this->setExpectedException('\\Paynl\\Error\\Required\\ServiceId'); \Paynl\Config::setServiceId(''); \Paynl\Helper::requireServiceId(); }
<?php \Paynl\Config::setApiToken('bf81d83f6f8ca32bca272dfdcaf2f14902ff41'); \Paynl\Config::setServiceId('SL-3490-4320'); //optional: you can download it on https://curl.haxx.se/ca/cacert.pem //\Paynl\Config::setCAInfoLocation('path/to/cacert.pem');
<?php require_once '../vendor/autoload.php'; require_once 'config.php'; // don't forget to set the serviceId // This is your service, where the transaction will be added to \Paynl\Config::setServiceId('SL-1234-1234'); try { $result = Paynl\Alliance\Invoice::add(array('merchantId' => 'M-1234-1234', 'invoiceId' => 'INV012345', 'amount' => 25.75, 'description' => 'Test invoice', 'invoiceUrl' => 'http://url.to.the/invoice.pdf', 'makeYesterday' => true)); echo $result->referenceId(); } catch (\Exception $e) { echo "Error occurred: " . $e->getMessage(); }
<?php \Paynl\Config::setApiToken('YOUR-API-TOKEN');