/**
  * @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;
 }
 public function fullApiRequest($payment)
 {
     $order = $payment->getOrder();
     $amount = $order->getGrandTotal();
     $customerEmail = $order->getCustomerEmail();
     $shopperIp = $order->getRemoteIp();
     $orderCurrencyCode = $order->getOrderCurrencyCode();
     $merchantAccount = $this->_adyenHelper->getAdyenAbstractConfigData("merchant_account");
     $request = array("action" => "Payment.authorise", "paymentRequest.merchantAccount" => $merchantAccount, "paymentRequest.amount.currency" => $orderCurrencyCode, "paymentRequest.amount.value" => $this->_adyenHelper->formatAmount($amount, $orderCurrencyCode), "paymentRequest.reference" => $order->getIncrementId(), "paymentRequest.shopperIP" => $shopperIp, "paymentRequest.shopperEmail" => $customerEmail, "paymentRequest.shopperReference" => $order->getIncrementId(), "paymentRequest.fraudOffset" => "0", "paymentRequest.browserInfo.userAgent" => $_SERVER['HTTP_USER_AGENT'], "paymentRequest.browserInfo.acceptHeader" => $_SERVER['HTTP_ACCEPT']);
     $billingAddress = $order->getBillingAddress();
     if ($billingAddress) {
         $addressArray = $this->_adyenHelper->getStreet($billingAddress);
         $requestBilling = array("paymentRequest.card.billingAddress.street" => $addressArray['name'], "paymentRequest.card.billingAddress.postalCode" => $billingAddress->getPostcode(), "paymentRequest.card.billingAddress.city" => $billingAddress->getCity(), "paymentRequest.card.billingAddress.houseNumberOrName" => $addressArray['house_number'], "paymentRequest.card.billingAddress.stateOrProvince" => $billingAddress->getRegionCode(), "paymentRequest.card.billingAddress.country" => $billingAddress->getCountryId());
         $request = array_merge($request, $requestBilling);
     }
     $deliveryAddress = $order->getDeliveryAddress();
     if ($deliveryAddress) {
         $addressArray = $this->_adyenHelper->getStreet($deliveryAddress);
         $requestDelivery = array("paymentRequest.card.deliveryAddress.street" => $addressArray['name'], "paymentRequest.card.deliveryAddress.postalCode" => $deliveryAddress->getPostcode(), "paymentRequest.card.deliveryAddress.city" => $deliveryAddress->getCity(), "paymentRequest.card.deliveryAddress.houseNumberOrName" => $addressArray['house_number'], "paymentRequest.card.deliveryAddress.stateOrProvince" => $deliveryAddress->getRegionCode(), "paymentRequest.card.deliveryAddress.country" => $deliveryAddress->getCountryId());
         $request = array_merge($request, $requestDelivery);
     }
     // If cse is enabled add encrypted card date into request
     if ($this->_adyenHelper->getAdyenCcConfigDataFlag('cse_enabled')) {
         $request['paymentRequest.additionalData.card.encrypted.json'] = $payment->getAdditionalInformation("encrypted_data");
     } else {
         $requestCreditCardDetails = array("paymentRequest.card.expiryMonth" => $payment->getCcExpMonth(), "paymentRequest.card.expiryYear" => $payment->getCcExpYear(), "paymentRequest.card.holderName" => $payment->getCcOwner(), "paymentRequest.card.number" => $payment->getCcNumber(), "paymentRequest.card.cvc" => $payment->getCcCid());
         $request = array_merge($request, $requestCreditCardDetails);
     }
     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');
     $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;
 }
 /**
  * @return array
  */
 public function getConfig()
 {
     // set to active
     $config = ['payment' => [self::CODE => ['isActive' => true, 'redirectUrl' => $this->_urlBuilder->getUrl('adyen/process/validate3d/', ['_secure' => $this->_getRequest()->isSecure()])]]];
     $methodCode = self::CODE;
     $config = array_merge_recursive($config, ['payment' => ['ccform' => ['availableTypes' => [$methodCode => $this->getCcAvailableTypes($methodCode)], 'months' => [$methodCode => $this->getCcMonths()], 'years' => [$methodCode => $this->getCcYears()], 'hasVerification' => [$methodCode => $this->hasVerification($methodCode)], 'cvvImageUrl' => [$methodCode => $this->getCvvImageUrl()]]]]);
     $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']['adyenOneclick']['cseKey'] = $cseKey;
     $config['payment']['adyenOneclick']['cseEnabled'] = $cseEnabled;
     $config['payment']['adyenOneclick']['cseEnabled'] = $cseEnabled;
     $config['payment']['adyenOneclick']['generationTime'] = date("c");
     $config['payment']['adyenOneclick']['canCreateBillingAgreement'] = $canCreateBillingAgreement;
     $recurringContractType = $this->_getRecurringContractType();
     $config['payment']['adyenOneclick']['billingAgreements'] = $this->getAdyenOneclickPaymentMethods();
     if ($recurringContractType == \Adyen\Payment\Model\RecurringType::ONECLICK) {
         $config['payment']['adyenOneclick']['hasCustomerInteraction'] = true;
     } else {
         $config['payment']['adyenOneclick']['hasCustomerInteraction'] = false;
     }
     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');
     $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;
 }
예제 #6
0
파일: Cc.php 프로젝트: Adyen/adyen-magento2
 /**
  * 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;
 }
예제 #7
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;
 }
예제 #8
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;
 }
예제 #9
0
 public function fullApiRequest($payment, $paymentMethodCode)
 {
     $order = $payment->getOrder();
     $amount = $order->getGrandTotal();
     $customerEmail = $order->getCustomerEmail();
     $shopperIp = $order->getRemoteIp();
     $orderCurrencyCode = $order->getOrderCurrencyCode();
     $merchantAccount = $this->_adyenHelper->getAdyenAbstractConfigData("merchant_account");
     $recurringType = $this->_adyenHelper->getAdyenAbstractConfigData('recurring_type');
     $realOrderId = $order->getRealOrderId();
     $customerId = $order->getCustomerId();
     $shopperReference = !empty($customerId) ? $customerId : self::GUEST_ID . $realOrderId;
     // call lib
     $service = new \Adyen\Service\Payment($this->_client);
     $amount = ['currency' => $orderCurrencyCode, 'value' => $this->_adyenHelper->formatAmount($amount, $orderCurrencyCode)];
     $browserInfo = ['userAgent' => $_SERVER['HTTP_USER_AGENT'], 'acceptHeader' => $_SERVER['HTTP_ACCEPT']];
     $request = array("merchantAccount" => $merchantAccount, "amount" => $amount, "reference" => $order->getIncrementId(), "shopperIP" => $shopperIp, "shopperEmail" => $customerEmail, "shopperReference" => $shopperReference, "fraudOffset" => "0", "browserInfo" => $browserInfo);
     // set the recurring type
     $recurringContractType = null;
     if ($recurringType) {
         if ($paymentMethodCode == \Adyen\Payment\Model\Method\Oneclick::METHOD_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\Method\Cc::METHOD_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 = array('contract' => $recurringContractType);
         $request['recurring'] = $recurring;
     }
     $this->_adyenLogger->error('storeCC?:' . $payment->getAdditionalInformation("store_cc"));
     $this->_adyenLogger->error('recuringtype' . $recurringType);
     $this->_adyenLogger->error('recurringcontractType' . $recurringContractType);
     $billingAddress = $order->getBillingAddress();
     if ($billingAddress) {
         $addressArray = $this->_adyenHelper->getStreet($billingAddress);
         $requestBilling = array("street" => $addressArray['name'], "postalCode" => $billingAddress->getPostcode(), "city" => $billingAddress->getCity(), "houseNumberOrName" => $addressArray['house_number'], "stateOrProvince" => $billingAddress->getRegionCode(), "country" => $billingAddress->getCountryId());
         // houseNumberOrName is mandatory
         if ($requestBilling['houseNumberOrName'] == "") {
             $requestBilling['houseNumberOrName'] = "NA";
         }
         $requestBilling['billingAddress'] = $requestBilling;
         $request = array_merge($request, $requestBilling);
     }
     $deliveryAddress = $order->getDeliveryAddress();
     if ($deliveryAddress) {
         $addressArray = $this->_adyenHelper->getStreet($deliveryAddress);
         $requestDelivery = array("street" => $addressArray['name'], "postalCode" => $deliveryAddress->getPostcode(), "city" => $deliveryAddress->getCity(), "houseNumberOrName" => $addressArray['house_number'], "stateOrProvince" => $deliveryAddress->getRegionCode(), "country" => $deliveryAddress->getCountryId());
         // houseNumberOrName is mandatory
         if ($requestDelivery['houseNumberOrName'] == "") {
             $requestDelivery['houseNumberOrName'] = "NA";
         }
         $requestDelivery['deliveryAddress'] = $requestDelivery;
         $request = array_merge($request, $requestDelivery);
     }
     // define the shopper interaction
     if ($paymentMethodCode == \Adyen\Payment\Model\Method\Oneclick::METHOD_CODE) {
         $recurringDetailReference = $payment->getAdditionalInformation("recurring_detail_reference");
         if ($payment->getAdditionalInformation('customer_interaction')) {
             $shopperInteraction = "Ecommerce";
         } else {
             $shopperInteraction = "ContAuth";
         }
         // For recurring Ideal and Sofort needs to be converted to SEPA for this it is mandatory to set selectBrand to sepadirectdebit
         if (!$payment->getAdditionalInformation('customer_interaction')) {
             if ($payment->getCcType() == "directEbanking" || $payment->getCcType() == "ideal") {
                 $this->selectedBrand = "sepadirectdebit";
             }
         }
     } else {
         $recurringDetailReference = null;
         $shopperInteraction = "Ecommerce";
     }
     if ($shopperInteraction) {
         $request['shopperInteraction'] = $shopperInteraction;
     }
     if ($recurringDetailReference && $recurringDetailReference != "") {
         $request['selectedRecurringDetailReference'] = $recurringDetailReference;
     }
     // If cse is enabled add encrypted card date into request
     if ($this->_adyenHelper->getAdyenCcConfigDataFlag('cse_enabled')) {
         $request['additionalData']['card.encrypted.json'] = $payment->getAdditionalInformation("encrypted_data");
     } else {
         $requestCreditCardDetails = array("expiryMonth" => $payment->getCcExpMonth(), "expiryYear" => $payment->getCcExpYear(), "holderName" => $payment->getCcOwner(), "number" => $payment->getCcNumber(), "cvc" => $payment->getCcCid());
         $cardDetails['card'] = $requestCreditCardDetails;
         $request = array_merge($request, $cardDetails);
     }
     $result = $service->authorise($request);
     return $result;
 }