Skip to content

Commit

Permalink
Merge pull request #38 from PAYONE-GmbH/development
Browse files Browse the repository at this point in the history
serveral optimizing regarding the handling for safe invoice
  • Loading branch information
T-Kuchel authored Oct 7, 2016
2 parents 7037553 + bdb7375 commit 3427faa
Show file tree
Hide file tree
Showing 29 changed files with 1,273 additions and 153 deletions.
2 changes: 2 additions & 0 deletions Frontend/MoptPaymentPayone/Bootstrap.php
Original file line number Diff line number Diff line change
Expand Up @@ -526,6 +526,8 @@ protected function createDatabase()
$this->getInstallHelper()->moptInsertEmptyConfigIfNotExists();

$this->getInstallHelper()->checkAndUpdateCreditcardModelIframeExtension();

$this->getInstallHelper()->checkAndUpdateConfigModelPayolutionInstallmentExtension();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,9 @@ public function processPaymentForm($paymentId, $formData, $paymentHelper)
if ($paymentHelper->isPayonePayolutionInvoice($paymentId)) {
return $this->proccessPayolutionInvoice($formData);
}
if ($paymentHelper->isPayonePayolutionInstallment($paymentId)) {
return $this->proccessPayolutionInstallment($formData);
}

return array();
}
Expand Down Expand Up @@ -227,7 +230,7 @@ protected function proccessDebitNote($formData)
$paymentData['formData']["mopt_payone__debit_iban"] = $formData["mopt_payone__debit_iban"];
}

if (!$formData["mopt_payone__debit_bic"] && !$formData["mopt_payone__debit_showbic"]==="") {
if (!$formData["mopt_payone__debit_bic"] && $formData["mopt_payone__debit_showbic"]=="1" ) {
$paymentData['sErrorFlag']["mopt_payone__debit_bic"] = true;
} else {
$paymentData['formData']["mopt_payone__debit_bic"] = $formData["mopt_payone__debit_bic"];
Expand Down Expand Up @@ -257,7 +260,7 @@ protected function proccessDebitNote($formData)
$paymentData['formData']["mopt_payone__debit_bankcountry"] = $formData["mopt_payone__debit_bankcountry"];
}

if ($paymentData['sErrorFlag']["mopt_payone__debit_iban"] && $paymentData['sErrorFlag']["mopt_payone__debit_bic"] && !$paymentData['sErrorFlag']["mopt_payone__debit_bankaccount"] && !$paymentData['sErrorFlag']["mopt_payone__debit_bankcode"]
if ($paymentData['sErrorFlag']["mopt_payone__debit_iban"] && ( $paymentData['sErrorFlag']["mopt_payone__debit_bic"] || $formData["mopt_payone__debit_showbic"]=="" ) && !$paymentData['sErrorFlag']["mopt_payone__debit_bankaccount"] && !$paymentData['sErrorFlag']["mopt_payone__debit_bankcode"]
) {
unset($paymentData['sErrorFlag']["mopt_payone__debit_iban"]);
unset($paymentData['sErrorFlag']["mopt_payone__debit_bic"]);
Expand Down Expand Up @@ -443,4 +446,59 @@ protected function proccessPayolutionInvoice($formData)

return $paymentData;
}

/**
* process form data
*
* @param array $formData
* @return array
*/
protected function proccessPayolutionInstallment($formData)
{
$paymentData = array();

if (!$formData["mopt_payone__payolution_installment_agreement"] || !in_array($formData["mopt_payone__payolution_installment_agreement"], array('on', true))) {
$paymentData['sErrorFlag']["mopt_payone__payolution_installment_agreement"] = true;
} else {
$paymentData['formData']["mopt_payone__payolution_installment_agreement"] = $formData["mopt_payone__payolution_installment_agreement"];
}

if ($formData[mopt_payone__payolution_installment_birthdaydate] !== "0000-00-00" && $formData[mopt_payone__payolution_b2bmode] !== "1") {
if (time() < strtotime('+18 years', strtotime($formData[mopt_payone__payolution_installment_birthdaydate]))) {
$paymentData['sErrorFlag']["mopt_payone__payolution_installment_birthday"] = true;
$paymentData['sErrorFlag']["mopt_payone__payolution_installment_birthmonth"] = true;
$paymentData['sErrorFlag']["mopt_payone__payolution_installment_birthyear"] = true;
$paymentData['formData']['mopt_save_birthday'] = false;
} else {
$paymentData['formData']["mopt_payone__payolution_birthdaydate"] = $formData["mopt_payone__payolution_installment_birthdaydate"];
$paymentData['formData']['mopt_save_birthday'] = true;
}
}

if ($formData[mopt_payone__payolution_b2bmode] === "1") {

if (!$formData["mopt_payone__installment_company_trade_registry_number"]) {
$paymentData['sErrorFlag']["mopt_payone__installment_company_trade_registry_number"] = true;
} else {
$paymentData['formData']["mopt_payone__installment_company_trade_registry_number"] = $formData["mopt_payone__installment_company_trade_registry_number"];
}

$paymentData['formData']["mopt_payone__payolution_b2bmode"] = $formData["mopt_payone__payolution_b2bmode"];
}

if ($formData['mopt_payone__payolution_installment_duration'] ==="") {
$paymentData['sErrorFlag']['mopt_payone__payolution_installment_duration'] = true;
} else {
$paymentData['formData']["mopt_payone__payolution_installment_duration"] = $formData["mopt_payone__payolution_installment_duration"];
}

if ($formData['mopt_payone__payolution_installment_workorderid'] ==="") {
$paymentData['sErrorFlag']['mopt_payone__payolution_installment_workorderid'] = true;
} else {
$paymentData['formData']["mopt_payone__payolution_installment_workorderid"] = $formData["mopt_payone__payolution_installment_workorderid"];
}

return $paymentData;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,12 @@ public function mopt_payone__getPaymentMethods()
'description' => 'PAYONE Payolution Lastschrift',
'template' => 'mopt_paymentmean_payolution_debitnote.tpl',
'position' => 27,),
);
array(
'name' => 'mopt_payone__fin_payolution_installment',
'description' => 'PAYONE Payolution Ratenzahlung',
'template' => 'mopt_paymentmean_payolution_installment.tpl',
'position' => 28,),
);
}

/**
Expand Down Expand Up @@ -429,6 +434,17 @@ public function moptInsertEmptyConfigIfNotExists()
";
Shopware()->Db()->query($sql);
}

// insert default values for creditcard config
$sql = 'SELECT id FROM s_plugin_mopt_payone_creditcard_config';
$result = Shopware()->Db()->query($sql);

if ($result->rowCount() === 0) {
$sql = "INSERT INTO `s_plugin_mopt_payone_creditcard_config` (`error_locale_id`, `shop_id`, `show_errors`, `is_default`, `integration_type`, `standard_input_css`, `standard_input_css_selected`, `standard_iframe_height`, `standard_iframe_width`, `cardno_input_chars`, `cardno_input_chars_max`, `cardno_input_css`, `cardno_custom_iframe`, `cardno_iframe_height`, `cardno_iframe_width`, `cardno_custom_style`, `cardno_field_type`, `cardcvc_input_chars`, `cardcvc_input_chars_max`, `cardcvc_input_css`, `cardcvc_custom_iframe`, `cardcvc_iframe_height`, `cardcvc_iframe_width`, `cardcvc_custom_style`, `cardcvc_field_type`, `cardmonth_input_chars`, `cardmonth_input_chars_max`, `cardmonth_input_css`, `cardmonth_custom_iframe`, `cardmonth_iframe_height`, `cardmonth_iframe_width`, `cardmonth_custom_style`, `cardmonth_field_type`, `cardyear_input_chars`, `cardyear_input_chars_max`, `cardyear_input_css`, `cardyear_custom_iframe`, `cardyear_iframe_height`, `cardyear_iframe_width`, `cardyear_custom_style`, `cardyear_field_type`, `merchant_id`, `portal_id`, `subaccount_id`, `api_key`, `live_mode`, `check_cc`, `creditcard_min_valid`) VALUES
(74, 1, 1, 1, 0, 'box-shadow:inset 0 1px 1px #dadae5;background:#f8f8fa;border:1px solid #dadae5;border-top-color:#cbcbdb;line-height:19px;font-size:.875rem;width:85%;padding:.625rem .625rem .5625rem .625rem;color:#8798a9;','box-shadow:inset 0 1px 1px #dadae5;background:#f8f8fa;border:1px solid #dadae5;border-top-color:#cbcbdb;line-height:19px;font-size:.875rem;width:85%;padding:.625rem .625rem .5625rem .625rem;color:#8798a9;', '20px', '80px', 20, 20, '', 0, '20px', '100px', 1, 'tel', 4, 4, '', 0, '20px', '100px', 1, 'tel', 4, 4, '', 0, '20px', '40px', 1, 'select', 4, 4, '', 0, '20px', '40px', 1, 'select', 0, 0, 0, '', 0, 1, 0);
";
Shopware()->Db()->query($sql);
}
}

/**
Expand Down Expand Up @@ -958,5 +974,24 @@ public function checkAndUpdateCreditcardModelIframeExtension()
. "ADD COLUMN default_translation_iframe_cvc VARCHAR(255) NULL;";
$db->exec($sql);
}
}

public function checkAndUpdateConfigModelPayolutionInstallmentExtension()
{
$db = Shopware()->Db();

$DBConfig = $db->getConfig();

$sql = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='s_plugin_mopt_payone_config'
AND TABLE_SCHEMA='" . $DBConfig['dbname'] . "'
AND COLUMN_NAME ='payolution_draft_user'";
$result = $db->query($sql);

if ($result->rowCount() === 0) {
$sql = "ALTER TABLE `s_plugin_mopt_payone_config` ADD `payolution_draft_user` VARCHAR(255) NULL AFTER `payolution_b2bmode`,
ADD `payolution_draft_password` VARCHAR(255) NULL AFTER `payolution_draft_user`;";
$db->exec($sql);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -171,12 +171,21 @@ public function buildCustomOrderCapture($order, $orderDetailParams, $finalize, $
*/
public function buildOrderDebit($order, $postionIds, $includeShipment = false)
{
$paymentName = $order->getPayment()->getName();

$params = $this->getAuthParameters($order->getPayment()->getId());
$params['txid'] = $order->getTransactionId();
$params['sequencenumber'] = $this->getParamSequencenumber($order);
$params['amount'] = $this->getParamDebitAmount($order, $postionIds, $includeShipment);
$params['currency'] = $order->getCurrency();

if ($paymentName == "mopt_payone__fin_payolution_invoice" || $paymentName == "mopt_payone__fin_payolution_debitnote") {
if ($order->getBilling()->getCompany()) {
$params['payolution_b2b'] = true;
$params['vatid'] = $order->getBilling()->getUstid();
}
}

return $params;
}

Expand Down Expand Up @@ -538,15 +547,54 @@ public function getPaymentPayolutionDebitNote($financeType, $paymentData, $worko
* @param string $financeType
* @return \Payone_Api_Request_Parameter_Authorization_PaymentMethod_Payolution
*/
public function getPaymentPayolutionDebitNotePreCheck($financeType, $paymentData)
{
public function getPaymentPayolutionInstallment($financeType, $paymentData, $workorderId) {
$params = array();
$userData = Shopware()->Modules()->Admin()->sGetUserData();
$params['api_version'] = '3.10';
$params['workorderid'] = $paymentData['mopt_payone__payolution_installment_workorderid'];
if (Shopware::VERSION === '___VERSION___' || version_compare(Shopware::VERSION, '5.2.0', '>=')) {
$params['birthday'] = implode(explode('-', $userData['additional']['user']['birthday']));
} else {
$params['birthday'] = implode(explode('-', $userData['billingaddress']['birthday']));
$params['birthday'] = implode(explode('-', $userData['billingaddress']['birthday']));
}
if ($params['birthday'] == "00000000") {
unset($params['birthday']);
}
$params['financingtype'] = $financeType;
$payment = new Payone_Api_Request_Parameter_Authorization_PaymentMethod_Payolution($params);

$paydata = new Payone_Api_Request_Parameter_Paydata_Paydata();
$paydata->addItem(new Payone_Api_Request_Parameter_Paydata_DataItem(
array('key' => 'installment_duration', 'data' => $paymentData['mopt_payone__payolution_installment_duration'])
));

if ($paymentData['mopt_payone__payolution_b2bmode']) {
$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' => $paymentData['mopt_payone__installment_company_trade_registry_number'])
));
}
$payment->setPaydata($paydata);

return $payment;
}

/**
* create payolution payment object
*
* @param string $financeType
* @return \Payone_Api_Request_Parameter_Authorization_PaymentMethod_Payolution
*/
public function getPaymentPayolutionDebitNotePreCheck($financeType, $paymentData) {
$params = array();
$userData = Shopware()->Modules()->Admin()->sGetUserData();
$params['api_version'] = '3.10';
if (Shopware::VERSION === '___VERSION___' || version_compare(Shopware::VERSION, '5.2.0', '>=')) {
$params['birthday'] = implode(explode('-', $userData['additional']['user']['birthday']));
} else {
$params['birthday'] = implode(explode('-', $userData['billingaddress']['birthday']));
}
if ($params['birthday'] == "00000000") {
unset($params['birthday']);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,21 @@ public function isPayonePayolutionInvoice($paymentName)
return false;
}
}

/**
* check if given payment name is payone payolution installment
*
* @param string $paymentName
* @return boolean
*/
public function isPayonePayolutionInstallment($paymentName)
{
if (preg_match('#mopt_payone__fin_payolution_installment#', $paymentName)) {
return true;
} else {
return false;
}
}

/**
* get online bank transfer type for api communication
Expand Down Expand Up @@ -736,7 +751,14 @@ public function moptGetPayolutionAdditionalInformation($country, $companyname)
. 'und einer Identitäts- und Bonitätsprüfung erforderlichen Daten an payolution bin ich einverstanden. '
. 'Meine <a href="#" style="float:none; margin:0;" onclick="displayOverlayInvoice();return false;">Einwilligung</a> '
. 'kann ich jederzeit mit Wirkung für die Zukunft widerrufen.';



$information['consentInstallment'] = 'Mit der Übermittlung der für die Abwicklung des Einkaufs '
. 'und einer Identitäts- und Bonitätsprüfung erforderlichen Daten an payolution bin ich einverstanden. '
. 'Meine <a href="#" style="float:none; margin:0;" onclick="displayOverlayInstallment();return false;">Einwilligung</a> '
. 'kann ich jederzeit mit Wirkung für die Zukunft widerrufen.';


$information['overlaycontent'] = $this->moptGetPayolutionAcceptanceText($companyname);


Expand Down Expand Up @@ -916,6 +938,9 @@ public function getActionFromPaymentName($paymentShortName)
if ($this->isPayonePayolutionInvoice($paymentShortName)) {
return 'payolutioninvoice';
}
if ($this->isPayonePayolutionInstallment($paymentShortName)) {
return 'payolutioninstallment';
}

if ($this->isPayoneFinance($paymentShortName)) {
return 'finance';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,6 @@ class Payone_Api_Enum_GenericpaymentAction
const PAYPAL_ECS_GET_EXPRESSCHECKOUTDETAILS='getexpresscheckoutdetails';

const PAYOLUTION_PRE_CHECK = 'pre_check';

const PAYOLUTION_CALCULATION = 'calculation';
}
20 changes: 20 additions & 0 deletions Frontend/MoptPaymentPayone/Components/Payone/Api/Request/Debit.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ class Payone_Api_Request_Debit extends Payone_Api_Request_Abstract
*/
protected $invoicing = null;

/**
* @var Payone_Api_Request_Parameter_Paydata_Paydata
*/
protected $paydata = null;

/**
* @var string
*/
Expand Down Expand Up @@ -236,4 +241,19 @@ public function setNarrativeText($narrative_text)
{
$this->narrative_text = $narrative_text;
}

/**
* @param Payone_Api_Request_Parameter_Paydata_Paydata $paydata
*/
public function setPaydata($paydata) {
$this->paydata = $paydata;
}

/**
*
* @return Payone_Api_Request_Parameter_Paydata_Paydata
*/
public function getPaydata() {
return $this->paydata;
}
}
Loading

0 comments on commit 3427faa

Please sign in to comment.