/**
  * @return array
  */
 public function getConfig()
 {
     // set to active
     $config = ['payment' => [self::CODE => ['isActive' => true, 'redirectUrl' => $this->_urlBuilder->getUrl('checkout/onepage/success/', ['_secure' => $this->_getRequest()->isSecure()])]]];
     $config['payment']['adyenSepa']['countries'] = $this->_adyenHelper->getSepaCountries();
     return $config;
 }
 /**
  * @param array $buildSubject
  * @return mixed
  */
 public function build(array $buildSubject)
 {
     /** @var \Magento\Payment\Gateway\Data\PaymentDataObject $paymentDataObject */
     $paymentDataObject = \Magento\Payment\Gateway\Helper\SubjectReader::readPayment($buildSubject);
     $payment = $paymentDataObject->getPayment();
     $order = $paymentDataObject->getOrder();
     $storeId = $order->getStoreId();
     $request = [];
     if ($this->adyenHelper->getAdyenCcConfigDataFlag('cse_enabled', $storeId)) {
         $request['additionalData']['card.encrypted.json'] = $payment->getAdditionalInformation("encrypted_data");
     } else {
         $requestCreditCardDetails = ["expiryMonth" => $payment->getCcExpMonth(), "expiryYear" => $payment->getCcExpYear(), "holderName" => $payment->getCcOwner(), "number" => $payment->getCcNumber(), "cvc" => $payment->getCcCid()];
         $cardDetails['card'] = $requestCreditCardDetails;
         $request = array_merge($request, $cardDetails);
     }
     /**
      * if MOTO for backend is enabled use MOTO as shopper interaction type
      */
     $enableMoto = $this->adyenHelper->getAdyenCcConfigDataFlag('enable_moto', $storeId);
     if ($this->appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE && $enableMoto) {
         $request['shopperInteraction'] = "Moto";
     }
     // if installments is set add it into the request
     if ($payment->getAdditionalInformation('number_of_installments') && $payment->getAdditionalInformation('number_of_installments') > 0) {
         $request['installments']['value'] = $payment->getAdditionalInformation('number_of_installments');
     }
     return $request;
 }
示例#3
0
 public function parseRecurringContractData($data)
 {
     $this->setMethodCode('adyen_oneclick')->setReferenceId($data['recurringDetailReference'])->setCreatedAt($data['creationDate']);
     $creationDate = str_replace(' ', '-', $data['creationDate']);
     $this->setCreatedAt($creationDate);
     //Billing agreement SEPA
     if (isset($data['bank_iban'])) {
         $this->setAgreementLabel(__('%1, %2', $data['bank_iban'], $data['bank_ownerName']));
     }
     // Billing agreement is CC
     if (isset($data['card']['number'])) {
         $ccType = $data['variant'];
         $ccTypes = $this->_adyenHelper->getCcTypesAltData();
         if (isset($ccTypes[$ccType])) {
             $ccType = $ccTypes[$ccType]['name'];
         }
         $label = __('%1, %2, **** %3', $ccType, $data['card']['holderName'], $data['card']['number'], $data['card']['expiryMonth'], $data['card']['expiryYear']);
         $this->setAgreementLabel($label);
     }
     if ($data['variant'] == 'paypal') {
         $label = __('PayPal %1', $data['lastKnownShopperEmail']);
         $this->setAgreementLabel($label);
     }
     $this->setAgreementData($data);
     return $this;
 }
示例#4
0
 /**
  * @return array
  */
 public function toOptionArray()
 {
     $recurringTypes = $this->_adyenHelper->getPaymentRoutines();
     foreach ($recurringTypes as $code => $label) {
         $options[] = ['value' => $code, 'label' => $label];
     }
     return $options;
 }
 /**
  * @return bool
  */
 protected function _showLogos()
 {
     $showLogos = $this->_adyenHelper->getAdyenAbstractConfigData('title_renderer');
     if ($showLogos == \Adyen\Payment\Model\Config\Source\RenderMode::MODE_TITLE_IMAGE) {
         return true;
     }
     return false;
 }
示例#6
0
 /**
  * @return array
  */
 public function getBoletoTypes()
 {
     $boletoTypes = $this->_adyenHelper->getBoletoTypes();
     $types = [];
     foreach ($boletoTypes as $boletoType) {
         $types[$boletoType['value']] = $boletoType['label'];
     }
     return $types;
 }
示例#7
0
 /**
  * @return array
  */
 public function toOptionArray()
 {
     $recurringTypes = $this->_adyenHelper->getRecurringTypes();
     $options = [['value' => '', 'label' => __(self::UNDEFINED_OPTION_LABEL)]];
     foreach ($recurringTypes as $code => $label) {
         $options[] = ['value' => $code, 'label' => $label];
     }
     return $options;
 }
 /**
  * @param array $buildSubject
  * @return array
  */
 public function build(array $buildSubject)
 {
     /** @var \Magento\Payment\Gateway\Data\PaymentDataObject $paymentDataObject */
     $paymentDataObject = \Magento\Payment\Gateway\Helper\SubjectReader::readPayment($buildSubject);
     $order = $paymentDataObject->getOrder();
     $storeId = $order->getStoreId();
     $merchantAccount = $this->adyenHelper->getAdyenAbstractConfigData("merchant_account", $storeId);
     return ["merchantAccount" => $merchantAccount];
 }
 /**
  * @return array
  */
 public function toOptionArray()
 {
     $recurringTypes = $this->_adyenHelper->getRecurringTypes();
     foreach ($recurringTypes as $code => $label) {
         if ($code == \Adyen\Payment\Model\RecurringType::ONECLICK || $code == \Adyen\Payment\Model\RecurringType::RECURRING) {
             $options[] = ['value' => $code, 'label' => $label];
         }
     }
     return $options;
 }
示例#10
0
 /**
  * @param array $buildSubject
  * @return array
  */
 public function build(array $buildSubject)
 {
     /** @var \Magento\Payment\Gateway\Data\PaymentDataObject $paymentDataObject */
     $paymentDataObject = \Magento\Payment\Gateway\Helper\SubjectReader::readPayment($buildSubject);
     $order = $paymentDataObject->getOrder();
     $payment = $paymentDataObject->getPayment();
     $fullOrder = $payment->getOrder();
     $currencyCode = $fullOrder->getOrderCurrencyCode();
     $amount = $fullOrder->getGrandTotal();
     $amount = ['currency' => $currencyCode, 'value' => $this->adyenHelper->formatAmount($amount, $currencyCode)];
     return ["amount" => $amount, "reference" => $order->getOrderIncrementId(), "fraudOffset" => "0"];
 }
示例#11
0
 /**
  * @param array $commandSubject
  * @return $this
  */
 public function execute(array $commandSubject)
 {
     $payment = \Magento\Payment\Gateway\Helper\SubjectReader::readPayment($commandSubject);
     $stateObject = \Magento\Payment\Gateway\Helper\SubjectReader::readStateObject($commandSubject);
     // do not send email
     $payment = $payment->getPayment();
     $payment->getOrder()->setCanSendNewEmailFlag(false);
     // update status and state
     $stateObject->setState(\Magento\Sales\Model\Order::STATE_NEW);
     $stateObject->setStatus($this->_adyenHelper->getAdyenAbstractConfigData('order_status'));
     $stateObject->setIsNotified(false);
     return $this;
 }
示例#12
0
 /**
  * Create capture request
  * 
  * @param array $buildSubject
  * @return array
  */
 public function build(array $buildSubject)
 {
     /** @var \Magento\Payment\Gateway\Data\PaymentDataObject $paymentDataObject */
     $paymentDataObject = \Magento\Payment\Gateway\Helper\SubjectReader::readPayment($buildSubject);
     $amount = \Magento\Payment\Gateway\Helper\SubjectReader::readAmount($buildSubject);
     $payment = $paymentDataObject->getPayment();
     $pspReference = $payment->getCcTransId();
     $currency = $payment->getOrder()->getOrderCurrencyCode();
     //format the amount to minor units
     $amount = $this->adyenHelper->formatAmount($amount, $currency);
     $modificationAmount = ['currency' => $currency, 'value' => $amount];
     return ["modificationAmount" => $modificationAmount, "reference" => $payment->getOrder()->getIncrementId(), "originalReference" => $pspReference];
 }
示例#13
0
 /**
  * Authenticate using sha1 Merchant signature
  *
  * @param $response
  * @return bool
  */
 protected function _authenticate($response)
 {
     $hmacKey = $this->_adyenHelper->getHmac();
     $merchantSigNotification = $response['merchantSig'];
     // do it like this because $_GET is converting dot to underscore
     $queryString = $_SERVER['QUERY_STRING'];
     $result = [];
     $pairs = explode("&", $queryString);
     foreach ($pairs as $pair) {
         $nv = explode("=", $pair);
         $name = urldecode($nv[0]);
         $value = urldecode($nv[1]);
         $result[$name] = $value;
     }
     // do not include the merchantSig in the merchantSig calculation
     unset($result['merchantSig']);
     // Sort the array by key using SORT_STRING order
     ksort($result, SORT_STRING);
     // Generate the signing data string
     $signData = implode(":", array_map([$this, 'escapeString'], array_merge(array_keys($result), array_values($result))));
     $merchantSig = base64_encode(hash_hmac('sha256', $signData, pack("H*", $hmacKey), true));
     if (strcmp($merchantSig, $merchantSigNotification) === 0) {
         return true;
     }
     return false;
 }
示例#14
0
 public function getCsePublicKey()
 {
     // get storeId for admin
     if (!$this->_appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) {
         $storeId = $this->_storeManager->getStore()->getId();
     } else {
         $storeId = null;
     }
     $demoMode = $this->_adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode', $storeId);
     if ($demoMode) {
         $cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_test', $storeId);
     } else {
         $cseKey = $this->_adyenHelper->getAdyenCcConfigData('cse_publickey_live', $storeId);
     }
     return $cseKey;
 }
示例#15
0
 /**
  * @param $formFields
  * @return mixed
  */
 protected function setOpenInvoiceData($formFields)
 {
     $count = 0;
     $currency = $this->_order->getOrderCurrencyCode();
     foreach ($this->_order->getAllVisibleItems() as $item) {
         ++$count;
         $linename = "line" . $count;
         $formFields['openinvoicedata.' . $linename . '.currencyCode'] = $currency;
         $formFields['openinvoicedata.' . $linename . '.description'] = str_replace("\n", '', trim($item->getName()));
         $formFields['openinvoicedata.' . $linename . '.itemAmount'] = $this->_adyenHelper->formatAmount($item->getPrice(), $currency);
         $formFields['openinvoicedata.' . $linename . '.itemVatAmount'] = $item->getTaxAmount() > 0 && $item->getPriceInclTax() > 0 ? $this->_adyenHelper->formatAmount($item->getPriceInclTax(), $currency) - $this->_adyenHelper->formatAmount($item->getPrice(), $currency) : $this->_adyenHelper->formatAmount($item->getTaxAmount(), $currency);
         // $product = $item->getProduct();
         // Calculate vat percentage
         $percentageMinorUnits = $this->_adyenHelper->getMinorUnitTaxPercent($item->getTaxPercent());
         $formFields['openinvoicedata.' . $linename . '.itemVatPercentage'] = $percentageMinorUnits;
         $formFields['openinvoicedata.' . $linename . '.numberOfItems'] = (int) $item->getQtyOrdered();
         if ($this->_order->getPayment()->getAdditionalInformation(\Adyen\Payment\Observer\AdyenHppDataAssignObserver::BRAND_CODE) == "klarna") {
             $formFields['openinvoicedata.' . $linename . '.vatCategory'] = "High";
         } else {
             $formFields['openinvoicedata.' . $linename . '.vatCategory'] = "None";
         }
     }
     $formFields['openinvoicedata.refundDescription'] = "Refund / Correction for " . $formFields['merchantReference'];
     $formFields['openinvoicedata.numberOfLines'] = $count;
     return $formFields;
 }
示例#16
0
 /**
  * @param $requestParams
  * @param $store
  * @return array
  * @throws \Adyen\AdyenException
  */
 protected function _getDirectoryLookupResponse($requestParams, $store)
 {
     $cacheKey = $this->_getCacheKeyForRequest($requestParams, $store);
     // initialize the adyen client
     $client = new \Adyen\Client();
     if ($this->_adyenHelper->isDemoMode()) {
         $client->setEnvironment(\Adyen\Environment::TEST);
     } else {
         $client->setEnvironment(\Adyen\Environment::LIVE);
     }
     // connect to magento log
     $client->setLogger($this->_adyenLogger);
     $hmacKey = $this->_adyenHelper->getHmac();
     // create and add signature
     try {
         $requestParams["merchantSig"] = \Adyen\Util\Util::calculateSha256Signature($hmacKey, $requestParams);
     } catch (\Adyen\AdyenException $e) {
         $this->_adyenLogger->error($e->getMessage());
         // return empty result
         return [];
     }
     // initialize service
     $service = new \Adyen\Service\DirectoryLookup($client);
     try {
         $responseData = $service->directoryLookup($requestParams);
     } catch (\Adyen\AdyenException $e) {
         $this->_adyenLogger->error("The Directory Lookup response is empty check your Adyen configuration in Magento.");
         // return empty result
         return [];
     }
     return $responseData;
 }
 /**
  * Set configuration for AdyenHPP payemnt method
  *
  * @return array
  */
 public function getConfig()
 {
     // set to active
     $config = ['payment' => [self::CODE => ['isActive' => true, 'redirectUrl' => $this->_urlBuilder->getUrl('adyen/process/redirect', ['_secure' => $this->_getRequest()->isSecure()])]]];
     // get customer
     if ($this->_customerSession->isLoggedIn()) {
         $gender = \Adyen\Payment\Model\Gender::getAdyenGenderFromMagentoGender($this->_customerSession->getCustomerData()->getGender());
         // format to calendar date
         $dob = $this->_customerSession->getCustomerData()->getDob();
         $dob = strtotime($dob);
         $dob = date('m/d/Y', $dob);
     } else {
         $gender = "";
         $dob = "";
     }
     // add to config
     $config['payment']['adyenHpp']['gender'] = $gender;
     $config['payment']['adyenHpp']['dob'] = $dob;
     // gender types
     $config['payment']['adyenHpp']['genderTypes'] = \Adyen\Payment\Model\Gender::getGenderTypes();
     $paymentMethodSelectionOnAdyen = $this->_adyenHelper->getAdyenHppConfigDataFlag('payment_selection_on_adyen');
     $config['payment']['adyenHpp']['isPaymentMethodSelectionOnAdyen'] = $paymentMethodSelectionOnAdyen;
     $config['payment']['adyenHpp']['showGender'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_gender');
     $config['payment']['adyenHpp']['showDob'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_dob');
     $config['payment']['adyenHpp']['showTelephone'] = $this->_adyenHelper->getAdyenHppConfigDataFlag('show_telephone');
     return $config;
 }
示例#18
0
 public function getFormFields()
 {
     $paymentInfo = $this->getInfoInstance();
     $order = $paymentInfo->getOrder();
     $realOrderId = $order->getRealOrderId();
     $orderCurrencyCode = $order->getOrderCurrencyCode();
     $skinCode = trim($this->getConfigData('skin_code'));
     $amount = $this->_adyenHelper->formatAmount($order->getGrandTotal(), $orderCurrencyCode);
     $merchantAccount = trim($this->_adyenHelper->getAdyenAbstractConfigData('merchant_account'));
     $shopperEmail = $order->getCustomerEmail();
     $customerId = $order->getCustomerId();
     $shopperIP = $order->getRemoteIp();
     $browserInfo = $_SERVER['HTTP_USER_AGENT'];
     $deliveryDays = $this->getConfigData('delivery_days');
     $shopperLocale = trim($this->getConfigData('shopper_locale'));
     $shopperLocale = !empty($shopperLocale) ? $shopperLocale : $this->resolver->getLocale();
     $countryCode = trim($this->getConfigData('country_code'));
     $countryCode = !empty($countryCode) ? $countryCode : false;
     // if directory lookup is enabled use the billingadress as countrycode
     if ($countryCode == false) {
         if ($order->getBillingAddress() && $order->getBillingAddress()->getCountryId() != "") {
             $countryCode = $order->getBillingAddress()->getCountryId();
         }
     }
     $formFields = array();
     $formFields['merchantAccount'] = $merchantAccount;
     $formFields['merchantReference'] = $realOrderId;
     $formFields['paymentAmount'] = (int) $amount;
     $formFields['currencyCode'] = $orderCurrencyCode;
     $formFields['shipBeforeDate'] = date("Y-m-d", mktime(date("H"), date("i"), date("s"), date("m"), date("j") + $deliveryDays, date("Y")));
     $formFields['skinCode'] = $skinCode;
     $formFields['shopperLocale'] = $shopperLocale;
     $formFields['countryCode'] = $countryCode;
     $formFields['shopperIP'] = $shopperIP;
     $formFields['browserInfo'] = $browserInfo;
     $formFields['sessionValidity'] = date(DATE_ATOM, mktime(date("H") + 1, date("i"), date("s"), date("m"), date("j"), date("Y")));
     $formFields['shopperEmail'] = $shopperEmail;
     // recurring
     $recurringType = trim($this->_adyenHelper->getAdyenAbstractConfigData('recurring_type'));
     $formFields['recurringContract'] = $recurringType;
     $formFields['shopperReference'] = !empty($customerId) ? $customerId : self::GUEST_ID . $realOrderId;
     //blocked methods
     $formFields['blockedMethods'] = "";
     $baseUrl = $this->storeManager->getStore($this->getStore())->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_LINK);
     $formFields['resURL'] = $baseUrl . 'adyen/process/result';
     $hmacKey = $this->_adyenHelper->getHmac();
     $brandCode = $this->getInfoInstance()->getCcType();
     if ($brandCode) {
         $formFields['brandCode'] = $brandCode;
     }
     // Sort the array by key using SORT_STRING order
     ksort($formFields, SORT_STRING);
     // Generate the signing data string
     $signData = implode(":", array_map(array($this, 'escapeString'), array_merge(array_keys($formFields), array_values($formFields))));
     $merchantSig = base64_encode(hash_hmac('sha256', $signData, pack("H*", $hmacKey), true));
     $formFields['merchantSig'] = $merchantSig;
     $this->_adyenLogger->info(print_r($formFields, true));
     return $formFields;
 }
 /**
  * For admin use RECURRING contract for front-end get it from configuration
  *
  * @return mixed|string
  * @throws \Magento\Framework\Exception\LocalizedException
  */
 public function getRecurringPaymentType()
 {
     // For admin always use Recurring
     if ($this->appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) {
         return \Adyen\Payment\Model\RecurringType::RECURRING;
     } else {
         return $this->adyenHelper->getAdyenOneclickConfigData('recurring_payment_type');
     }
 }
示例#20
0
 public function execute()
 {
     $active = null;
     // check if 3d is active
     $order = $this->_getOrder();
     if ($order->getPayment()) {
         $active = $order->getPayment()->getAdditionalInformation('3dActive');
     }
     // check if 3D secure is active. If not just go to success page
     if ($active) {
         $this->_adyenLogger->addAdyenResult("3D secure is active");
         // check if it is already processed
         if ($this->getRequest()->isPost()) {
             $this->_adyenLogger->addAdyenResult("Process 3D secure payment");
             $requestMD = $this->getRequest()->getPost('MD');
             $requestPaRes = $this->getRequest()->getPost('PaRes');
             $md = $order->getPayment()->getAdditionalInformation('md');
             if ($requestMD == $md) {
                 $order->getPayment()->setAdditionalInformation('paResponse', $requestPaRes);
                 try {
                     $result = $order->getPayment()->getMethodInstance()->authorise3d($order->getPayment());
                 } catch (Exception $e) {
                     $result = 'Refused';
                 }
                 // check if authorise3d was successful
                 if ($result == 'Authorised') {
                     $order->addStatusHistoryComment(__('3D-secure validation was successful'))->save();
                     $this->_redirect('checkout/onepage/success');
                 } else {
                     $order->addStatusHistoryComment(__('3D-secure validation was unsuccessful.'))->save();
                     $this->_adyenHelper->cancelOrder($order);
                 }
             }
         } else {
             $this->_adyenLogger->addAdyenResult("Customer was redirected to bank for 3D-secure validation.");
             $order->addStatusHistoryComment(__('Customer was redirected to bank for 3D-secure validation.'))->save();
             $this->_view->loadLayout();
             $this->_view->getLayout()->initMessages();
             $this->_view->renderLayout();
         }
     } else {
         $this->_redirect('checkout/onepage/success/');
     }
 }
 /**
  * @param array $buildSubject
  * @return array
  */
 public function build(array $buildSubject)
 {
     $result = [];
     /** @var \Magento\Payment\Gateway\Data\PaymentDataObject $paymentDataObject */
     $paymentDataObject = \Magento\Payment\Gateway\Helper\SubjectReader::readPayment($buildSubject);
     $payment = $paymentDataObject->getPayment();
     // Needs to change when oneclick,cc using facade impl.
     $paymentMethodCode = $payment->getMethodInstance()->getCode();
     $storeId = null;
     if ($this->appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) {
         $storeId = $payment->getOrder()->getStoreId();
     }
     $recurringType = $this->adyenHelper->getAdyenAbstractConfigData('recurring_type', $storeId);
     // set the recurring type
     $recurringContractType = null;
     if ($recurringType) {
         if ($paymentMethodCode == \Adyen\Payment\Model\Ui\AdyenOneclickConfigProvider::CODE) {
             /*
              * For ONECLICK look at the recurringPaymentType that the merchant
              * has selected in Adyen ONECLICK settings
              */
             if ($payment->getAdditionalInformation('customer_interaction')) {
                 $recurringContractType = \Adyen\Payment\Model\RecurringType::ONECLICK;
             } else {
                 $recurringContractType = \Adyen\Payment\Model\RecurringType::RECURRING;
             }
         } else {
             if ($paymentMethodCode == \Adyen\Payment\Model\Ui\AdyenCcConfigProvider::CODE) {
                 if ($payment->getAdditionalInformation("store_cc") == "" && ($recurringType == "ONECLICK,RECURRING" || $recurringType == "RECURRING")) {
                     $recurringContractType = \Adyen\Payment\Model\RecurringType::RECURRING;
                 } elseif ($payment->getAdditionalInformation("store_cc") == "1") {
                     $recurringContractType = $recurringType;
                 }
             } else {
                 $recurringContractType = $recurringType;
             }
         }
     }
     if ($recurringContractType) {
         $recurring = ['contract' => $recurringContractType];
         $result['recurring'] = $recurring;
     }
     return $result;
 }
 /**
  * @param array $buildSubject
  * @return mixed
  */
 public function build(array $buildSubject)
 {
     /** @var \Magento\Payment\Gateway\Data\PaymentDataObject $paymentDataObject */
     /** @var \Magento\Payment\Gateway\Data\PaymentDataObject $paymentDataObject */
     $paymentDataObject = \Magento\Payment\Gateway\Helper\SubjectReader::readPayment($buildSubject);
     $payment = $paymentDataObject->getPayment();
     $order = $paymentDataObject->getOrder();
     $storeId = $order->getStoreId();
     $request = [];
     $request['socialSecurityNumber'] = $payment->getAdditionalInformation("social_security_number");
     $request['selectedBrand'] = $payment->getAdditionalInformation("boleto_type");
     $shopperName = ['firstName' => $payment->getAdditionalInformation("firstname"), 'lastName' => $payment->getAdditionalInformation("lastname")];
     $request['shopperName'] = $shopperName;
     $deliveryDays = (int) $this->adyenHelper->getAdyenBoletoConfigData("delivery_days", $storeId);
     $deliveryDays = !empty($deliveryDays) ? $deliveryDays : 5;
     $deliveryDate = date("Y-m-d\\TH:i:s ", mktime(date("H"), date("i"), date("s"), date("m"), date("j") + $deliveryDays, date("Y")));
     $request['deliveryDate'] = $deliveryDate;
     return $request;
 }
 public function authorise3d($payment)
 {
     $order = $payment->getOrder();
     $merchantAccount = $this->_adyenHelper->getAdyenAbstractConfigData("merchant_account");
     $shopperIp = $order->getRemoteIp();
     $md = $payment->getAdditionalInformation('md');
     $paResponse = $payment->getAdditionalInformation('paResponse');
     $request = array("action" => "Payment.authorise3d", "paymentRequest3d.merchantAccount" => $merchantAccount, "paymentRequest3d.browserInfo.userAgent" => $_SERVER['HTTP_USER_AGENT'], "paymentRequest3d.browserInfo.acceptHeader" => $_SERVER['HTTP_ACCEPT'], "paymentRequest3d.md" => $md, "paymentRequest3d.paResponse" => $paResponse, "paymentRequest3d.shopperIP" => $shopperIp);
     return $this->_apiRequest($request);
 }
 public function getConfig()
 {
     $config = parent::getConfig();
     $demoMode = $this->adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode');
     if ($demoMode) {
         $cseKey = $this->adyenHelper->getAdyenCcConfigData('cse_publickey_test');
     } else {
         $cseKey = $this->adyenHelper->getAdyenCcConfigData('cse_publickey_live');
     }
     $cseEnabled = $this->adyenHelper->getAdyenCcConfigDataFlag('cse_enabled');
     $config['payment']['adyenCc']['cseKey'] = $cseKey;
     $config['payment']['adyenCc']['cseEnabled'] = $cseEnabled;
     $config['payment']['adyenCc']['cseEnabled'] = $cseEnabled;
     $config['payment']['adyenCc']['generationTime'] = date("c");
     foreach ($this->methodCodes as $code) {
         if ($this->methods[$code]->isAvailable()) {
             $config['payment']['adyenCc']['redirectUrl'][$code] = $this->getMethodRedirectUrl($code);
         }
     }
     return $config;
 }
 public function getConfig()
 {
     $config = parent::getConfig();
     $demoMode = $this->adyenHelper->getAdyenAbstractConfigDataFlag('demo_mode');
     if ($demoMode) {
         $cseKey = $this->adyenHelper->getAdyenCcConfigData('cse_publickey_test');
     } else {
         $cseKey = $this->adyenHelper->getAdyenCcConfigData('cse_publickey_live');
     }
     $cseEnabled = $this->adyenHelper->getAdyenCcConfigDataFlag('cse_enabled');
     $recurringType = $this->adyenHelper->getAdyenAbstractConfigData('recurring_type');
     $canCreateBillingAgreement = false;
     if ($recurringType == "ONECLICK" || $recurringType == "ONECLICK,RECURRING") {
         $canCreateBillingAgreement = true;
     }
     $config['payment']['adyenCc']['cseKey'] = $cseKey;
     $config['payment']['adyenCc']['cseEnabled'] = $cseEnabled;
     $config['payment']['adyenCc']['cseEnabled'] = $cseEnabled;
     $config['payment']['adyenCc']['generationTime'] = date("c");
     $config['payment']['adyenCc']['canCreateBillingAgreement'] = $canCreateBillingAgreement;
     foreach ($this->methodCodes as $code) {
         if ($this->methods[$code]->isAvailable()) {
             $config['payment']['adyenCc']['redirectUrl'][$code] = $this->getMethodRedirectUrl($code);
         }
     }
     return $config;
 }
示例#26
0
 /**
  * Assign data to info model instance
  *
  * @param \Magento\Framework\Object|mixed $data
  * @return $this
  */
 public function assignData($data)
 {
     parent::assignData($data);
     $infoInstance = $this->getInfoInstance();
     if ($this->_adyenHelper->getAdyenCcConfigDataFlag('cse_enabled')) {
         if (isset($data['encrypted_data'])) {
             $infoInstance->setAdditionalInformation('encrypted_data', $data['encrypted_data']);
         } else {
             throw new \Magento\Framework\Exception\LocalizedException(__('Card encryption failed'));
         }
     }
     return $this;
 }
示例#27
0
 /**
  * Retrieve has verification configuration
  *
  * @return bool
  */
 public function hasVerification()
 {
     // if backend order and moto payments is turned on don't show cvc
     if ($this->_appState->getAreaCode() === \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) {
         $this->getCheckoutSession();
         $store = $this->_checkoutSession->getQuote()->getStore();
         $enableMoto = $this->_adyenHelper->getAdyenCcConfigDataFlag('enable_moto', $store->getId());
         if ($enableMoto) {
             return false;
         }
     }
     return true;
 }
示例#28
0
 /**
  * @param array $commandSubject
  * @return $this
  */
 public function execute(array $commandSubject)
 {
     $payment = \Magento\Payment\Gateway\Helper\SubjectReader::readPayment($commandSubject);
     $stateObject = \Magento\Payment\Gateway\Helper\SubjectReader::readStateObject($commandSubject);
     // do not send email
     $payment = $payment->getPayment();
     $order = $payment->getOrder();
     $order->setCanSendNewEmailFlag(false);
     // update customer based on additionalFields
     if ($payment->getAdditionalInformation("gender")) {
         $order->setCustomerGender(\Adyen\Payment\Model\Gender::getMagentoGenderFromAdyenGender($payment->getAdditionalInformation("gender")));
     }
     if ($payment->getAdditionalInformation("dob")) {
         $order->setCustomerDob($payment->getAdditionalInformation("dob"));
     }
     if ($payment->getAdditionalInformation("telephone")) {
         $order->getBillingAddress()->setTelephone($payment->getAdditionalInformation("telephone"));
     }
     // update status and state
     $stateObject->setState(\Magento\Sales\Model\Order::STATE_NEW);
     $stateObject->setStatus($this->_adyenHelper->getAdyenAbstractConfigData('order_status'));
     $stateObject->setIsNotified(false);
     return $this;
 }
示例#29
0
 /**
  * @param $response
  */
 protected function _cancel($response)
 {
     $session = $this->_session;
     // restore the quote
     $session->restoreQuote();
     $order = $this->_order;
     if ($order) {
         $this->_adyenHelper->cancelOrder($order);
         if (isset($response['authResult']) && $response['authResult'] == \Adyen\Payment\Model\Notification::CANCELLED) {
             $this->messageManager->addError(__('You have cancelled the order. Please try again'));
         } else {
             $this->messageManager->addError(__('Your payment failed, Please try again later'));
         }
     }
 }
示例#30
0
 /**
  * Assign data to info model instance
  *
  * @param \Magento\Framework\DataObject|mixed $data
  * @return $this
  * @throws \Magento\Framework\Exception\LocalizedException
  */
 public function assignData(\Magento\Framework\DataObject $data)
 {
     parent::assignData($data);
     $infoInstance = $this->getInfoInstance();
     $infoInstance->setCcType($data['cc_type']);
     if ($this->_adyenHelper->getAdyenCcConfigDataFlag('cse_enabled')) {
         if (isset($data['encrypted_data'])) {
             $infoInstance->setAdditionalInformation('encrypted_data', $data['encrypted_data']);
         } else {
             throw new \Magento\Framework\Exception\LocalizedException(__('Card encryption failed'));
         }
     }
     // save value remember details checkbox
     $infoInstance->setAdditionalInformation('store_cc', $data['store_cc']);
     return $this;
 }