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