Ejemplo n.º 1
0
 /**
  * @param Mage_Sales_Model_Order_Payment $payment
  * @return Payone_Api_Request_Capture
  */
 public function mapFromPayment(Mage_Sales_Model_Order_Payment $payment)
 {
     $this->init($payment);
     $request = $this->getRequest();
     $this->mapDefaultParameters($request);
     $this->mapDefaultCaptureParameters($request);
     $business = $this->mapBusinessParameters();
     $request->setBusiness($business);
     /** Set Invoiceing-Parameter only if enabled in Config */
     if ($this->mustTransmitInvoiceData()) {
         $invoicing = $this->mapInvoicingParameters();
         if (!empty($invoicing)) {
             $request->setInvoicing($invoicing);
         }
     }
     $paymentMethod = $this->getPaymentMethod();
     if ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Ratepay) {
         $info = $paymentMethod->getInfoInstance();
         $payData = new Payone_Api_Request_Parameter_Paydata_Paydata();
         $payData->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'shop_id', 'data' => $info->getPayoneRatepayShopId())));
         $request->setPaydata($payData);
         $request->setApiVersion('3.10');
     }
     $this->dispatchEvent($this->getEventName(), array('request' => $request, 'invoice' => $this->getInvoice()));
     $this->dispatchEvent($this->getEventPrefix() . '_all', array('request' => $request));
     return $request;
 }
 /**
  * @param Mage_Sales_Model_Quote $quote
  */
 public function mapExpressCheckoutParameters($quote, $workOrderId = null)
 {
     $request = $this->getRequest();
     $this->mapDefaultParameters($request);
     $paydata = new Payone_Api_Request_Parameter_Paydata_Paydata();
     if (null === $workOrderId) {
         $paydata->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'action', 'data' => Payone_Api_Enum_GenericpaymentAction::PAYPAL_ECS_SET_EXPRESSCHECKOUT)));
     } else {
         $paydata->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'action', 'data' => Payone_Api_Enum_GenericpaymentAction::PAYPAL_ECS_GET_EXPRESSCHECKOUTDETAILS)));
         $request->setWorkorderId($workOrderId);
     }
     $request->setPaydata($paydata);
     $request->setAid($this->getConfigPayment()->getAid());
     $request->setClearingtype(Payone_Enum_ClearingType::WALLET);
     $request->setAmount($quote->getGrandTotal());
     $request->setCurrency($quote->getQuoteCurrencyCode());
     $request->setWallet(new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Wallet(array('wallettype' => Payone_Api_Enum_WalletType::PAYPAL_EXPRESS, 'successurl' => Mage::helper('payone_core/url')->getMagentoUrl('*/*/return'), 'errorurl' => Mage::helper('payone_core/url')->getMagentoUrl('*/*/error'), 'backurl' => Mage::helper('payone_core/url')->getMagentoUrl('*/*/cancel'))));
     return $request;
 }
Ejemplo n.º 3
0
 /**
  * @return Payone_Api_Request_Parameter_Authorization_PaymentMethod_Abstract
  */
 protected function mapPaymentParameters()
 {
     $payment = null;
     $paymentMethod = $this->getPaymentMethod();
     $info = $paymentMethod->getInfoInstance();
     $isRedirect = false;
     if ($paymentMethod instanceof Payone_Core_Model_Payment_Method_CashOnDelivery) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_CashOnDelivery();
         $payment->setShippingprovider(Payone_Api_Enum_Shippingprovider::DHL);
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Creditcard) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_CreditCard();
         // check if it is an adminorder and set ecommercemode to moto
         if ($this->getIsAdmin()) {
             $payment->setEcommercemode('moto');
         }
         $payment->setPseudocardpan($info->getPayonePseudocardpan());
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_OnlineBankTransfer) {
         $country = $this->getOrder()->getBillingAddress()->getCountry();
         $payoneOnlinebanktransferType = $info->getPayoneOnlinebanktransferType();
         $iban = $info->getPayoneSepaIban();
         $bic = $info->getPayoneSepaBic();
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_OnlineBankTransfer();
         $payment->setBankcountry($country);
         $payment->setOnlinebanktransfertype($payoneOnlinebanktransferType);
         switch ($payoneOnlinebanktransferType) {
             case Payone_Api_Enum_OnlinebanktransferType::INSTANT_MONEY_TRANSFER:
             case Payone_Api_Enum_OnlinebanktransferType::GIROPAY:
                 if (!empty($iban) and !empty($bic)) {
                     $payment->setIban(strtoupper($iban));
                     $payment->setBic(strtoupper($bic));
                     // ensure bic and iban are sent uppercase
                 } else {
                     $payment->setBankaccount($info->getPayoneAccountNumber());
                     $payment->setBankcode($info->getPayoneBankCode());
                 }
                 break;
             case Payone_Api_Enum_OnlinebanktransferType::IDEAL:
             case Payone_Api_Enum_OnlinebanktransferType::EPS_ONLINE_BANK_TRANSFER:
                 $payment->setBankgrouptype($info->getPayoneBankGroup());
                 break;
             case Payone_Api_Enum_OnlinebanktransferType::POSTFINANCE_EFINANCE:
                 break;
             case Payone_Api_Enum_OnlinebanktransferType::POSTFINANCE_CARD:
                 break;
         }
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Financing) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Financing();
         $payment->setFinancingtype($info->getPayoneFinancingType());
         if ($info->getPayoneFinancingType() == Payone_Api_Enum_FinancingType::KLS) {
             $configPaymentMethodId = $info->getPayoneConfigPaymentMethodId();
             $paymentConfig = $paymentMethod->getConfigPayment();
             $payData = new Payone_Api_Request_Parameter_Paydata_Paydata();
             $payData->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'klsid', 'data' => $info->getPayoneKlarnaCampaignCode())));
             $payment->setPaydata($payData);
         }
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_SafeInvoice) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Financing();
         $payment->setFinancingtype($info->getPayoneSafeInvoiceType());
         if ($info->getPayoneSafeInvoiceType() == Payone_Api_Enum_FinancingType::BSV) {
             // BillSAFE is a redirect payment method, Klarna not
             $isRedirect = true;
         }
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Wallet) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Wallet();
         $sType = false;
         $aPostPayment = Mage::app()->getRequest()->getPost('payment');
         if ($aPostPayment && array_key_exists('payone_wallet_type', $aPostPayment)) {
             $sType = $aPostPayment['payone_wallet_type'];
         } else {
             $sType = Payone_Api_Enum_WalletType::PAYPAL_EXPRESS;
         }
         $payment->setWallettype($sType);
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_DebitPayment) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_DebitPayment();
         $payment->setBankcountry($info->getPayoneBankCountry());
         $iban = $info->getPayoneSepaIban();
         $bic = $info->getPayoneSepaBic();
         if (!empty($iban) and !empty($bic)) {
             $payment->setIban(strtoupper($iban));
             $payment->setBic(strtoupper($bic));
             // ensure bic and iban are sent uppercase
         } else {
             $payment->setBankaccount($info->getPayoneAccountNumber());
             $payment->setBankcode($info->getPayoneBankCode());
         }
         $payment->setBankaccountholder($info->getPayoneAccountOwner());
         // for frontend orders set mandate identification if data provided in checkout session:
         if (!$this->getIsAdmin()) {
             $checkoutSession = $this->getFactory()->getSingletonCheckoutSession();
             $mandateStatus = $checkoutSession->getPayoneSepaMandateStatus();
             $mandateIdentification = $checkoutSession->getPayoneSepaMandateIdentification();
             if ($mandateStatus == Payone_Core_Model_Service_Management_ManageMandate::STATUS_PENDING and !empty($mandateIdentification)) {
                 $payment->setMandateIdentification($mandateIdentification);
             }
         }
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_CreditcardIframe) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_CreditCardIframe();
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Barzahlen) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Barzahlen();
         $payment->setApiVersion();
         $payment->setCashtype();
     }
     if ($isRedirect === true) {
         $successurl = $this->helperUrl()->getSuccessUrl();
         $errorurl = $this->helperUrl()->getErrorUrl();
         $backurl = $this->helperUrl()->getBackUrl();
         $payment->setSuccessurl($successurl);
         $payment->setErrorurl($errorurl);
         $payment->setBackurl($backurl);
     }
     return $payment;
 }
Ejemplo n.º 4
0
 /**
  * @return Payone_Api_Request_Parameter_Authorization_PaymentMethod_Abstract
  */
 protected function mapPaymentParameters()
 {
     $payment = null;
     $paymentMethod = $this->getPaymentMethod();
     $info = $paymentMethod->getInfoInstance();
     $isRedirect = false;
     if ($paymentMethod instanceof Payone_Core_Model_Payment_Method_CashOnDelivery) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_CashOnDelivery();
         $payment->setShippingprovider(Payone_Api_Enum_Shippingprovider::DHL);
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Creditcard) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_CreditCard();
         // check if it is an adminorder and set ecommercemode to moto
         if ($this->getIsAdmin()) {
             $payment->setEcommercemode('moto');
         }
         $payment->setPseudocardpan($info->getPayonePseudocardpan());
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_OnlineBankTransfer) {
         $country = $this->getOrder()->getBillingAddress()->getCountry();
         $payoneOnlinebanktransferType = $info->getPayoneOnlinebanktransferType();
         $iban = $info->getPayoneSepaIban();
         $bic = $info->getPayoneSepaBic();
         $bankaccount = $info->getPayoneAccountNumber();
         $bankcode = $info->getPayoneBankCode();
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_OnlineBankTransfer();
         $payment->setBankcountry($country);
         $payment->setOnlinebanktransfertype($payoneOnlinebanktransferType);
         switch ($payoneOnlinebanktransferType) {
             case Payone_Api_Enum_OnlinebanktransferType::INSTANT_MONEY_TRANSFER:
             case Payone_Api_Enum_OnlinebanktransferType::GIROPAY:
                 if (!empty($iban) && !empty($bic)) {
                     $payment->setIban(strtoupper($iban));
                     $payment->setBic(strtoupper($bic));
                     // ensure bic and iban are sent uppercase
                 } elseif (!empty($bankaccount) && !empty($bankcode)) {
                     $payment->setBankaccount($bankaccount);
                     $payment->setBankcode($bankcode);
                 }
                 break;
             case Payone_Api_Enum_OnlinebanktransferType::IDEAL:
             case Payone_Api_Enum_OnlinebanktransferType::EPS_ONLINE_BANK_TRANSFER:
                 $payment->setBankgrouptype($info->getPayoneBankGroup());
                 break;
             case Payone_Api_Enum_OnlinebanktransferType::POSTFINANCE_EFINANCE:
                 break;
             case Payone_Api_Enum_OnlinebanktransferType::POSTFINANCE_CARD:
                 break;
         }
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_SafeInvoice) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Financing();
         $payment->setFinancingtype($info->getPayoneSafeInvoiceType());
         if ($info->getPayoneSafeInvoiceType() == Payone_Api_Enum_FinancingType::BSV) {
             // BillSAFE is a redirect payment method, Klarna not
             $isRedirect = true;
         }
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Wallet) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Wallet();
         $payment->setWallettype($this->_getWalletType());
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_DebitPayment) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_DebitPayment();
         $payment->setBankcountry($info->getPayoneBankCountry());
         $iban = $info->getPayoneSepaIban();
         $bic = $info->getPayoneSepaBic();
         if (!empty($iban)) {
             $payment->setIban(strtoupper($iban));
             if (!empty($bic)) {
                 $payment->setBic(strtoupper($bic));
                 // ensure bic and iban are sent uppercase
             }
         } else {
             $payment->setBankaccount($info->getPayoneAccountNumber());
             $payment->setBankcode($info->getPayoneBankCode());
         }
         $payment->setBankaccountholder($info->getPayoneAccountOwner());
         // for frontend orders set mandate identification if data provided in checkout session:
         if (!$this->getIsAdmin()) {
             $checkoutSession = $this->getFactory()->getSingletonCheckoutSession();
             $mandateStatus = $checkoutSession->getPayoneSepaMandateStatus();
             $mandateIdentification = $checkoutSession->getPayoneSepaMandateIdentification();
             if ($mandateStatus == Payone_Core_Model_Service_Management_ManageMandate::STATUS_PENDING and !empty($mandateIdentification)) {
                 $payment->setMandateIdentification($mandateIdentification);
             }
         }
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_CreditcardIframe) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_CreditCardIframe();
         $isRedirect = true;
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Barzahlen) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Barzahlen();
         $payment->setApiVersion();
         $payment->setCashtype();
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Ratepay) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_RatePay();
         $payment->setFinancingtype();
         $payment->setApiVersion();
         $checkoutSession = $this->getFactory()->getSingletonCheckoutSession();
         $mandateStatus = $checkoutSession->getRatePayFingerprint();
         $payData = new Payone_Api_Request_Parameter_Paydata_Paydata();
         $payData->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'customer_allow_credit_inquiry', 'data' => 'yes')));
         $payData->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'device_token', 'data' => $checkoutSession->getRatePayFingerprint())));
         $payData->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'shop_id', 'data' => $info->getPayoneRatepayShopId())));
         $payment->setPaydata($payData);
         $birthdayDate = $info->getPayoneCustomerDob();
         if (empty($birthdayDate)) {
             $birthdayDate = $this->getOrder()->getCustomerDob();
         }
         $payment->setBirthday($this->formatBirthday($birthdayDate));
         $telephone = $info->getPayoneCustomerTelephone();
         if (empty($telephone)) {
             $telephone = $this->getOrder()->getBillingAddress()->getTelephone();
         }
         $payment->setTelephonenumber($telephone);
     } elseif ($paymentMethod instanceof Payone_Core_Model_Payment_Method_Payolution) {
         $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Payolution();
         $payment->setApiVersion();
         $payment->setFinancingtype($info->getPayonePayolutionType());
         $payment->setWorkorderid($info->getPayoneWorkorderid());
         $payment->setIban(strtoupper($info->getPayonePayolutionIban()));
         $payment->setBic(strtoupper($info->getPayonePayolutionBic()));
         $checkoutSession = $this->getFactory()->getSingletonCheckoutSession();
         $payment->setWorkorderid($checkoutSession->getPayoneWorkorderId());
         $info->setPayoneWorkorderId($checkoutSession->getPayoneWorkorderId());
         if ((bool) $info->getPayoneIsb2b() === true) {
             $payData = new Payone_Api_Request_Parameter_Paydata_Paydata();
             $payData->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'b2b', 'data' => 'yes')));
             $payData->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'company_trade_registry_number', 'data' => $info->getPayoneTradeRegistryNumber())));
             $payment->setPaydata($payData);
         } else {
             $birthdayDate = $info->getPayoneCustomerDob();
             if (empty($birthdayDate)) {
                 $birthdayDate = $this->getOrder()->getCustomerDob();
             }
             if ($birthdayDate) {
                 $payment->setBirthday($this->formatBirthday($birthdayDate));
             }
         }
     }
     if ($isRedirect === true) {
         $successurl = $this->helperUrl()->getSuccessUrl();
         $errorurl = $this->helperUrl()->getErrorUrl();
         $backurl = $this->helperUrl()->getBackUrl();
         $payment->setSuccessurl($successurl);
         $payment->setErrorurl($errorurl);
         $payment->setBackurl($backurl);
     }
     return $payment;
 }
Ejemplo n.º 5
0
 /**
  * create klarna payment object
  *
  * @param string $financeType
  * @param string $campaignId
  * @return \Payone_Api_Request_Parameter_Authorization_PaymentMethod_Financing 
  */
 public function getPaymentKlarna($financeType, $campaignId = false)
 {
     $params = array();
     if ($campaignId) {
         $paydata = new Payone_Api_Request_Parameter_Paydata_Paydata();
         $paydata->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'klsid', 'data' => $campaignId)));
         $params['paydata'] = $paydata;
     }
     $params['financingtype'] = $financeType;
     $payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Financing($params);
     return $payment;
 }
 public function addPayolutionPreCheckParameters($oQuote, $aRequestParams)
 {
     $request = $this->getRequest();
     $this->mapDefaultParameters($request);
     $oAddress = $oQuote->getBillingAddress();
     if ($oAddress->getCompany()) {
         $request->setCompany($oAddress->getCompany());
     }
     $request->setFirstname($oAddress->getFirstname());
     $request->setLastname($oAddress->getLastname());
     $request->setStreet($this->helper()->normalizeStreet($oAddress->getStreet()));
     $request->setZip($oAddress->getPostcode());
     $request->setCity($oAddress->getCity());
     $request->setCountry($oAddress->getCountry());
     $request->setAmount($oQuote->getGrandTotal());
     $request->setApiVersion('3.10');
     if (isset($aRequestParams['payone_customer_dob'])) {
         $request->setBirthday($this->formatBirthday($aRequestParams['payone_customer_dob']));
     } elseif ($oQuote->getCustomerDob()) {
         $request->setBirthday($this->formatBirthday($oQuote->getCustomerDob()));
     }
     $request->setEmail($oQuote->getCustomerEmail());
     $request->setIp(Mage::helper('core/http')->getRemoteAddr());
     $request->setLanguage($this->helper()->getDefaultLanguage());
     $paydata = new Payone_Api_Request_Parameter_Paydata_Paydata();
     $paydata->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'action', 'data' => Payone_Api_Enum_GenericpaymentAction::PAYOLUTION_PRE_CHECK)));
     $paydata->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'payment_type', 'data' => Payone_Api_Enum_PayolutionType::getLongType($aRequestParams['payone_payolution_type']))));
     if (isset($aRequestParams['payone_trade_registry_number'])) {
         $paydata->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'b2b', 'data' => 'yes')));
         $paydata->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(array('key' => 'company_trade_registry_number', 'data' => $aRequestParams['payone_trade_registry_number'])));
     }
     $request->setPaydata($paydata);
     $request->setAid($this->getConfigPayment()->getAid());
     $request->setCurrency($oQuote->getQuoteCurrencyCode());
     $request->setClearingtype(Payone_Enum_ClearingType::FINANCING);
     $request->setFinancingType($aRequestParams['payone_payolution_type']);
     return $request;
 }