/** * Return review information for last page of checkout * @return string */ public function review() { $objAddress = Isotope::getCart()->getShippingAddress(); if ($objAddress->id == Isotope::getCart()->getBillingAddress()->id) { return false; } return array('shipping_address' => array('headline' => $GLOBALS['TL_LANG']['MSC']['shipping_address'], 'info' => $objAddress->generateHtml(Isotope::getConfig()->getShippingFieldsConfig()), 'edit' => \Isotope\Module\Checkout::generateUrlForStep('address'))); }
/** * Return review information for last page of checkout * @return string */ public function review() { $blnRequiresPayment = Isotope::getCart()->requiresPayment(); $blnRequiresShipping = Isotope::getCart()->requiresShipping(); $objBillingAddress = Isotope::getCart()->getBillingAddress(); $objShippingAddress = Isotope::getCart()->getShippingAddress(); $strHeadline = $GLOBALS['TL_LANG']['MSC']['billing_address']; if ($blnRequiresPayment && $blnRequiresShipping && $objBillingAddress->id == $objShippingAddress->id) { $strHeadline = $GLOBALS['TL_LANG']['MSC']['billing_shipping_address']; } elseif ($blnRequiresShipping && $objBillingAddress->id == $objShippingAddress->id) { $strHeadline = $GLOBALS['TL_LANG']['MSC']['shipping_address']; } elseif (!$blnRequiresPayment && !$blnRequiresShipping) { $strHeadline = $GLOBALS['TL_LANG']['MSC']['customer_address']; } return array('billing_address' => array('headline' => $strHeadline, 'info' => $objBillingAddress->generateHtml(Isotope::getConfig()->getBillingFieldsConfig()), 'edit' => \Isotope\Module\Checkout::generateUrlForStep('address'))); }
/** * Return review information for last page of checkout * @return string */ public function review() { return array('payment_method' => array('headline' => $GLOBALS['TL_LANG']['MSC']['payment_method'], 'info' => Isotope::getCart()->getDraftOrder()->getPaymentMethod()->checkoutReview(), 'note' => Isotope::getCart()->getDraftOrder()->getPaymentMethod()->note, 'edit' => \Isotope\Module\Checkout::generateUrlForStep('payment'))); }
/** * Redirect the Sparkasse server to our error page * @param array */ private function redirectError($arrData) { $strUrl = Checkout::generateUrlForStep('failed', null, \PageModel::findWithDetails((int) $arrData['sessionid'])); // 200 OK $objResponse = new Response('redirecturlf=' . \Environment::get('base') . $strUrl . '?reason=' . $arrData['directPosErrorMessage']); $objResponse->send(); }
/** * Redirect client on WorldPay site to the confirmation page * @param IsotopeProductCollection */ protected function postsaleSuccess($objOrder) { $objPage = \PageModel::findWithDetails((int) \Input::post('M_pageId')); $strUrl = \Environment::get('base') . Checkout::generateUrlForStep('complete', $objOrder, $objPage); // Output a HTML page to redirect the client from WorldPay back to the shop echo ' <!DOCTYPE html> <html lang="de"> <head> <meta charset="utf-8"> <title>The Tulle Factory</title> <meta http-equiv="refresh" content="0; url=' . $strUrl . '"> </head> <body> Redirecting back to shop... </body> </html> '; exit; }
/** * Return review information for last page of checkout * @return string */ public function review() { return array('shipping_method' => array('headline' => $GLOBALS['TL_LANG']['MSC']['shipping_method'], 'info' => Isotope::getCart()->getShippingMethod()->checkoutReview(), 'note' => Isotope::getCart()->getShippingMethod()->note, 'edit' => \Isotope\Module\Checkout::generateUrlForStep('shipping'))); }
/** * Prepare PSP params * * @param Order $objOrder * @param \Isotope\Module\Checkout $objModule * * @return array */ protected function preparePSPParams($objOrder, $objModule) { $objBillingAddress = $objOrder->getBillingAddress(); return array('PSPID' => $this->psp_pspid, 'ORDERID' => $objOrder->id, 'AMOUNT' => round($objOrder->getTotal() * 100), 'CURRENCY' => $objOrder->currency, 'LANGUAGE' => $GLOBALS['TL_LANGUAGE'] . '_' . strtoupper($GLOBALS['TL_LANGUAGE']), 'CN' => $objBillingAddress->firstname . ' ' . $objBillingAddress->lastname, 'EMAIL' => $objBillingAddress->email, 'OWNERZIP' => $objBillingAddress->postal, 'OWNERADDRESS' => $objBillingAddress->street_1, 'OWNERADDRESS2' => $objBillingAddress->street_2, 'OWNERCTY' => strtoupper($objBillingAddress->country), 'OWNERTOWN' => $objBillingAddress->city, 'OWNERTELNO' => $objBillingAddress->phone, 'ACCEPTURL' => \Environment::get('base') . $objModule->generateUrlForStep('complete', $objOrder), 'DECLINEURL' => \Environment::get('base') . $objModule->generateUrlForStep('failed'), 'BACKURL' => \Environment::get('base') . $objModule->generateUrlForStep('review'), 'PARAMPLUS' => 'mod=pay&id=' . $this->id, 'TP' => $this->psp_dynamic_template ?: ''); }
/** * Process post-sale requestion from the PSP payment server. * @param IsotopeProductCollection */ public function processPostsale(IsotopeProductCollection $objOrder) { if ($this->debug) { $this->paybyway_private_key = 'private_key'; } $strChecksum = strtoupper(md5($this->paybyway_private_key . '|' . \Input::post('RETURN_CODE') . '|' . \Input::post('ORDER_NUMBER') . (\Input::post('SETTLED') ? '|' . \Input::post('SETTLED') : '') . (\Input::post('INCIDENT_ID') ? '|' . \Input::post('INCIDENT_ID') : ''))); if (\Input::post('AUTHCODE') != $strChecksum) { \System::log('Postsale manipulation for order ID ' . $objOrder->id, __METHOD__, TL_ERROR); \Isotope\Module\Checkout::redirectToStep('failed'); } switch (\Input::post('RETURN_CODE')) { case 0: // Payment completed successfully. if ($objOrder->checkout()) { $objOrder->date_paid = time(); $objOrder->updateOrderStatus($this->new_order_status); \Isotope\Module\Checkout::redirectToStep('complete', $objOrder); } break; case 4: // Transaction status could not be updated after customer returned from the web page of a bank. Please use the merchant UI to resolve the payment status. if (($objConfig = $objOrder->getRelated('config_id')) === null) { \System::log('Config for Order ID ' . $objOrder->id . ' not found', __METHOD__, TL_ERROR); } elseif ($objOrder->checkout()) { $objOrder->updateOrderStatus($objConfig->orderstatus_error); \Isotope\Module\Checkout::redirectToStep('complete', $objOrder); } break; case 1: // Payment failed. Customer did not successfully finish the payment. // Payment failed. Customer did not successfully finish the payment. case 2: // Duplicate order number. You have reused an order number. Make sure that your order numbers are unique, and are not reused in any case. // Duplicate order number. You have reused an order number. Make sure that your order numbers are unique, and are not reused in any case. case 3: // User disabled. Either your Paybyway account has been temporarily disabled for security reasons, or your sub-merchant is disabled. // User disabled. Either your Paybyway account has been temporarily disabled for security reasons, or your sub-merchant is disabled. case 10: // Maintenance break. The transaction is not created and the user has been notified and transferred back to the cancel address. // Do nothing here, we redirect to "failed" by default break; } \System::log('Paybyway checkout failed for order ID ' . $objOrder->id, __METHOD__, TL_ERROR); \Isotope\Module\Checkout::redirectToStep('failed'); }