baseObject; if(has_value($that->request->post['default_pp_express_custom_bg_color'])){ $that->request->post['default_pp_express_custom_bg_color'] = ltrim($that->request->post['default_pp_express_custom_bg_color'], '#'); $is_valid = $this->_check_valid_colorhex($that->request->post['default_pp_express_custom_bg_color']); if(!$is_valid){ $that->loadLanguage('default_pp_express/default_pp_express'); $that->error['warning'] = $that->language->get('default_pp_express_error_bg_color'); } } } public function onControllerResponsesListingGridExtension_InitData(){ if($this->baseObject_method!='update'){ return null;} $that = $this->baseObject; if( $that->request->get['id'] != 'default_pp_express' ){ return false; } if( !has_value($that->request->post['default_pp_express_custom_bg_color']) ){ return false; } $that->request->post['default_pp_express_custom_bg_color'] = ltrim($that->request->post['default_pp_express_custom_bg_color'],'#'); $is_valid = $this->_check_valid_colorhex($that->request->post['default_pp_express_custom_bg_color']); if(!$is_valid){ $that->loadLanguage('default_pp_express/default_pp_express'); $error = new AError(''); return $error->toJSONResponse('NO_PERMISSIONS_402', array('error_text' => $that->language->get('default_pp_express_error_bg_color'), 'reset_value' => false )); } } private function _check_valid_colorhex($colorCode) { // If user accidentally passed along the # sign, strip it off $colorCode = ltrim($colorCode, '#'); if ( ctype_xdigit($colorCode) && (strlen($colorCode) == 6 || strlen($colorCode) == 3)){ return true; }else{ return false; } } public function onControllerCommonHead_InitData() { if(IS_ADMIN!==true){ $that = $this->baseObject; $that->document->addScript($that->view->templateResource('/javascript/paypal_ajax_buttons.js')); // clear ppexp session when currency changed. note: use $_GET! if( !has_value( $that->session->data['pp_express_checkout']['currency'] ) ){ $that->session->data['pp_express_checkout']['currency'] = $that->currency->getCode(); } if($that->session->data['pp_express_checkout']['currency'] != $that->currency->getCode()){ unset($that->session->data['pp_express_checkout']); // rebuild order data if currency changed $order = new AOrder( Registry::getInstance() ); $this->data = $order->buildOrderData( $that->session->data ); $order->saveOrder(); } } } public function onControllerPagesCheckoutCart_UpdateData() { $that = $this->baseObject; if ( $that->data['form']['checkout'] ) { $min = $that->config->get("default_pp_express_payment_minimum_total"); $max = $that->config->get("default_pp_express_payment_maximum_total"); $amount = $that->cart->getFinalTotal(); if ( (has_value( $min ) && $amount < $min ) || (has_value( $max ) && $amount > $max ) || !$that->config->get('config_guest_checkout')) { return null; } $language = $that->language->getCurrentLanguage(); $locale = explode(',',$language['locale']); $data['image_src'] = 'https://www.paypal.com/'.$locale[1].'/i/btn/btn_xpressCheckout.gif'; $data['href'] = $that->html->getSecureURL('r/extension/default_pp_express/set_pp'); $data['style'] = 'pull-right'; if ( $that->config->get('default_pp_express_billmelater') ) { $data['billmelater'] = array( 'image_src' => 'https://www.paypalobjects.com/webstatic/'.$locale[1].'/btn/btn_bml_SM.png', 'href' => $that->html->getSecureURL('r/extension/default_pp_express/set_pp', '&fundsource=bml'), 'style' => 'pull-right', ); $data['billmelater_txt'] = array( 'image_src' => 'https://www.paypalobjects.com/webstatic/'.$locale[1].'/btn/btn_bml_text.png' ); } $view = new AView(Registry::getInstance(), 0); $view->batchAssign($data); $that->view->addHookVar('post_cart_buttons', $view->fetch('blocks/default_pp_express_cart_button.tpl')); $data['style'] = 'pull-right ml10'; $view = new AView(Registry::getInstance(), 0); $view->batchAssign($data); $that->view->addHookVar('pre_top_cart_buttons', $view->fetch('blocks/default_pp_express_cart_button.tpl')); } } public function onControllerBlocksOrderSummary_UpdateData() { $that = $this->baseObject; $min = $that->config->get("default_pp_express_payment_minimum_total"); $max = $that->config->get("default_pp_express_payment_maximum_total"); $amount = $that->cart->getFinalTotal(); if ( (has_value( $min ) && $amount < $min ) || (has_value( $max ) && $amount > $max ) || !$that->config->get('config_guest_checkout')) { return null; } $language = $that->language->getCurrentLanguage(); $locale = explode(',',$language['locale']); $data['image_src'] = 'https://www.paypal.com/'.$locale[1].'/i/btn/btn_xpressCheckout.gif'; $data['href'] = $that->html->getSecureURL('r/extension/default_pp_express/set_pp'); if ( $that->config->get('default_pp_express_billmelater') ) { $data['billmelater'] = array( 'image_src' => 'https://www.paypalobjects.com/webstatic/en_US/btn/btn_bml_SM.png', 'href' => $that->html->getSecureURL('r/extension/default_pp_express/set_pp', '&fundsource=bml'), 'style' => 'pull-right', ); } $view = new AView(Registry::getInstance(), 0); $view->batchAssign($data); $that->view->addHookVar('post_cart_buttons', '

'. $view->fetch('blocks/default_pp_express_button.tpl')); } public function onControllerPagesCheckoutPayment_InitData() { $that = $this->baseObject; if ( $that->request->get['mode'] == 'edit' || has_value($that->request->post['coupon'] )) { unset($that->session->data['pp_express_checkout']); } } public function onControllerPagesCheckoutPayment_ProcessData() { $that = $this->baseObject; if ( $that->session->data[ 'payment_method' ]['id'] == 'default_pp_express' ) { // rebuild order data if coupon applied $order = new AOrder( Registry::getInstance() ); $this->data = $order->buildOrderData( $that->session->data ); $order->saveOrder(); $that->loadModel('checkout/order'); if ( has_value($that->session->data['order_id']) ) { $order_info = $that->model_checkout_order->getOrder($that->session->data['order_id']); } else if ( $that->cart->hasProducts() && $that->cart->hasStock() && ($amount = $that->cart->getFinalTotal()) ) { $order_info = array( 'total' => $amount, 'currency' => $that->session->data['currency'], 'value' => '', 'discount' => $amount-$that->cart->getSubTotal() ); } else { header('Location:' . $that->html->getSecureURL('checkout/cart')); die(); } if (!$that->config->get('default_pp_express_test')) { $api_endpoint = 'https://api-3t.paypal.com/nvp'; } else { $api_endpoint = 'https://api-3t.sandbox.paypal.com/nvp'; } if (!$that->config->get('default_pp_express_transaction')) { $paymentaction = 'authorization'; } else { $paymentaction = 'sale'; } $payment_data = array( 'METHOD' => 'SetExpressCheckout', 'VERSION' => '98.0', 'USER' => html_entity_decode($that->config->get('default_pp_express_username'), ENT_QUOTES, 'UTF-8'), 'PWD' => html_entity_decode($that->config->get('default_pp_express_password'), ENT_QUOTES, 'UTF-8'), 'SIGNATURE' => html_entity_decode($that->config->get('default_pp_express_signature'), ENT_QUOTES, 'UTF-8'), 'PAYMENTREQUEST_0_PAYMENTACTION' => $paymentaction, 'PAYMENTREQUEST_0_AMT' => $that->currency->format($order_info['total'], $order_info['currency'], $order_info['value'], FALSE), 'PAYMENTREQUEST_0_CURRENCYCODE' => $order_info['currency'], 'PAYMENTREQUEST_0_DISCOUNT' => $order_info['discount'], 'RETURNURL' => $that->html->getSecureURL('r/extension/default_pp_express/callback'), 'CANCELURL' => $that->request->server['HTTP_REFERER'], ); $that->loadLanguage('default_pp_express/default_pp_express'); $products_data = $this->_get_products_data(array( 'currency' => $order_info['currency'], 'value' => $order_info['value'] )); foreach ( $products_data as $key => $product ) { $payment_data['L_PAYMENTREQUEST_0_ITEMAMT'] += $product['price']; $payment_data['L_PAYMENTREQUEST_0_NAME' . $key] = $product['name']; $payment_data['L_PAYMENTREQUEST_0_AMT' . $key] = $product['price']; $payment_data['L_PAYMENTREQUEST_0_NUMBER' . $key] = $product['model']; $payment_data['L_PAYMENTREQUEST_0_QTY' . $key] = $product['quantity']; $payment_data['L_PAYMENTREQUEST_0_ITEMWEIGHTVALUE' . $key] = $product['weight']; $payment_data['L_PAYMENTREQUEST_0_ITEMWEGHTUNIT' . $key] = $product['weight_type']; } if ( has_value($order_info['shipping_method']) ) { $payment_data['PAYMENTREQUEST_0_SHIPTONAME'] = $order_info['shipping_firstname'] . ' ' . $order_info['shipping_lastname']; $payment_data['PAYMENTREQUEST_0_SHIPTOSTREET'] = $order_info['shipping_address_1']; $payment_data['PAYMENTREQUEST_0_SHIPTOSTREET2'] = $order_info['shipping_address_2']; $payment_data['PAYMENTREQUEST_0_SHIPTOCITY'] = $order_info['shipping_city']; $payment_data['PAYMENTREQUEST_0_SHIPTOSTATE'] = $order_info['shipping_zone']; $payment_data['PAYMENTREQUEST_0_SHIPTOZIP'] = $order_info['shipping_postcode']; $payment_data['PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE'] = $order_info['shipping_iso_code_2']; $payment_data['PAYMENTREQUEST_0_SHIPTOPHONENUM'] = $order_info['telephone']; } if ( $that->config->get('default_pp_express_credit_cards') ) { $payment_data['SOLUTIONTYPE'] = 'Sole'; $payment_data['LANDINGPAGE'] = 'Billing'; } if ( $that->config->get('default_pp_express_billmelater') && has_value($that->request->get['fundsource']) && strtolower($that->request->get['fundsource']) == 'bml' ) { $payment_data['SOLUTIONTYPE'] = 'Sole'; $payment_data['LANDINGPAGE'] = 'Billing'; $payment_data['USERSELECTEDFUNDINGSOURCE'] = 'BML'; } if ( has_value($that->config->get('default_pp_express_custom_logo')) ) { if ( strpos($that->config->get('default_pp_express_custom_logo'), 'http')===0 ) { $custom_logo = $that->config->get('default_pp_express_custom_logo'); } else { $custom_logo = HTTPS_SERVER . $that->config->get('default_pp_express_custom_logo'); } $payment_data['LOGOIMG'] = $custom_logo; } if ( has_value($that->config->get('default_pp_express_custom_bg_color')) ) { $payment_data['CARTBORDERCOLOR'] = $that->config->get('default_pp_express_custom_bg_color'); } $curl = curl_init($api_endpoint); curl_setopt($curl, CURLOPT_PORT, 443); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FORBID_REUSE, 1); curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($payment_data)); $response = curl_exec($curl); curl_close($curl); $ec_settings = $this->_parse_http_query($response); if ( isset($ec_settings['TOKEN']) ) { if ( !$that->config->get('default_pp_express_test') ) { header('Location: https://www.paypal.com/webscr?cmd=_express-checkout&token=' . urlencode($ec_settings['TOKEN']) . '&useraction=commit'); die(); } else { header('Location: https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=' . urlencode($ec_settings['TOKEN']) . '&useraction=commit'); die(); } } else { $warning = new AWarning('PayPal Express Checkout Error: ' . $ec_settings['L_LONGMESSAGE0'] . '. Test mode = ' . $that->config->get('default_pp_express_test') .'.'); $warning->toLog()->toDebug(); $that->loadLanguage('default_pp_express/default_pp_express'); $that->session->data['pp_express_checkout_error'] = $that->language->get('service_error'); header('Location: ' . $that->html->getSecureURL('extension/default_pp_express/error')); die(); } } } public function onControllerPagesCheckoutGuestStep2_InitData() { $error = false; $that = $this->baseObject; if (isset($that->request->post['shipping_method'])) { $shipping = explode('.', $that->request->post['shipping_method']); $that->session->data['shipping_method'] = $that->session->data['shipping_methods'][$shipping[0]]['quote'][$shipping[1]]; } if ( $that->request->get['mode'] == 'edit' ) { unset($that->session->data['pp_express_checkout']); } // if coupon code was submited if ( has_value($that->request->post['coupon'] )){ $promotion = new APromotion(); $coupon = $promotion->getCouponData($that->request->post['coupon']); // rebuild order data if coupon applied $order = new AOrder( Registry::getInstance() ); $this->data = $order->buildOrderData( $that->session->data ); $order->saveOrder(); if($coupon){ $that->session->data['coupon'] = $that->request->post['coupon']; }else{ $error=true; } } if( !$error && $that->request->server['REQUEST_METHOD']=='POST' && ($that->request->post['payment_method']=='default_pp_express' || $that->session->data[ 'payment_method' ]['id'] == 'default_pp_express') ){ if(!has_value($that->session->data['pp_express_checkout']['token']) || !has_value($that->session->data['pp_express_checkout']['PayerID'])){ // rebuild order data if coupon applied $order = new AOrder( Registry::getInstance() ); $this->data = $order->buildOrderData( $that->session->data ); $order->saveOrder(); $redirect_url = $that->html->getSecureURL('checkout/guest_step_3'); header ( 'Location: '.$that->html->getSecureURL('r/extension/default_pp_express/set_pp','&to_confirm=1&redirect_to='.urlencode($redirect_url))); exit; } } } public function onControllerPagesCheckoutGuestStep2_UpdateData() { $that = $this->baseObject; if ( has_value($that->session->data['pp_express_checkout']['token']) && $that->request->get['mode'] != 'edit' && $that->session->data['shipping_method']['id']) { $data = $that->view->getData(); $shipping = explode('.',$that->session->data['shipping_method']['id']); $that->view->assign('payment_methods', array($shipping[0] => array('default_pp_express' => $data['payment_methods'][$shipping[0]]['default_pp_express']))); } //deprecated part since 1.1.7 $action = $that->html->getSecureURL('checkout/guest_step_2', ($that->request->get['mode'] ? '&mode=' . $that->request->get['mode'] : ''), true); $form = new AForm(); $form->setForm(array('form_name' => 'coupon')); $data = $that->view->getData(); $data['form0']['form_open'] = $form->getFieldHtml( array('type' => 'form', 'name' => 'coupon', 'action' => $action)); $that->view->assign('form0', $data['form0']); } public function onControllerPagesCheckoutGuestStep2_ProcessData() { $that = $this->baseObject; if ( $that->session->data[ 'payment_method' ]['id'] == 'default_pp_express' && !has_value($that->session->data['pp_express_checkout']['token']) ) { $that->loadModel('checkout/order'); if ( has_value($that->session->data['order_id']) ) { $order_info = $that->model_checkout_order->getOrder($that->session->data['order_id']); } else if ( $that->cart->hasProducts() && $that->cart->hasStock() && ($amount = $that->cart->getFinalTotal()) ) { $order_info = array( 'total' => $amount, 'currency' => $that->session->data['currency'], 'value' => '' ); } else { header('Location:' . $that->html->getSecureURL('checkout/cart')); die(); } if (!$that->config->get('default_pp_express_test')) { $api_endpoint = 'https://api-3t.paypal.com/nvp'; } else { $api_endpoint = 'https://api-3t.sandbox.paypal.com/nvp'; } if (!$that->config->get('default_pp_express_transaction')) { $paymentaction = 'authorization'; } else { $paymentaction = 'sale'; } $order_total = $that->currency->format($order_info['total'], $order_info['currency'], $order_info['value'], FALSE); $payment_data = array( 'METHOD' => 'SetExpressCheckout', 'VERSION' => '98.0', 'USER' => html_entity_decode($that->config->get('default_pp_express_username'), ENT_QUOTES, 'UTF-8'), 'PWD' => html_entity_decode($that->config->get('default_pp_express_password'), ENT_QUOTES, 'UTF-8'), 'SIGNATURE' => html_entity_decode($that->config->get('default_pp_express_signature'), ENT_QUOTES, 'UTF-8'), 'PAYMENTREQUEST_0_PAYMENTACTION' => $paymentaction, 'PAYMENTREQUEST_0_AMT' => $order_total, 'PAYMENTREQUEST_0_CURRENCYCODE' => $order_info['currency'], 'RETURNURL' => $that->html->getSecureURL('r/extension/default_pp_express/callback'), 'CANCELURL' => $that->request->server['HTTP_REFERER'], ); $that->loadLanguage('default_pp_express/default_pp_express'); $products_data = $this->_get_products_data(array( 'currency' => $order_info['currency'], 'value' => $order_info['value'] )); if(($this->data['items_total'] - $order_total)!==0.0){ $payment_data['L_PAYMENTREQUEST_0_ITEMAMT'] = $order_total; $skip_item_list = true; } if(!$skip_item_list){ foreach ( $products_data as $key => $product ) { //$payment_data['L_PAYMENTREQUEST_0_ITEMAMT'] += $this->data['items_total']; $payment_data['L_PAYMENTREQUEST_0_NAME' . $key] = $product['name']; $payment_data['L_PAYMENTREQUEST_0_AMT' . $key] = (float)$product['price']; $payment_data['L_PAYMENTREQUEST_0_NUMBER' . $key] = $product['model']; $payment_data['L_PAYMENTREQUEST_0_QTY' . $key] = $product['quantity']; $payment_data['L_PAYMENTREQUEST_0_ITEMWEIGHTVALUE' . $key] = $product['weight']; $payment_data['L_PAYMENTREQUEST_0_ITEMWEGHTUNIT' . $key] = $product['weight_type']; } }else{ $payment_data['L_PAYMENTREQUEST_0_NAME0'] = $that->language->get('text_order_total_amount'); $payment_data['L_PAYMENTREQUEST_0_AMT0'] = $order_total; $payment_data['L_PAYMENTREQUEST_0_NUMBER0'] = ''; $payment_data['L_PAYMENTREQUEST_0_QTY0'] = 1; $payment_data['L_PAYMENTREQUEST_0_ITEMWEIGHTVALUE0'] = ''; $payment_data['L_PAYMENTREQUEST_0_ITEMWEGHTUNIT0'] = ''; } if ( has_value($order_info['shipping_method']) ) { $payment_data['PAYMENTREQUEST_0_SHIPTONAME'] = $order_info['shipping_firstname'] . ' ' . $order_info['shipping_lastname']; $payment_data['PAYMENTREQUEST_0_SHIPTOSTREET'] = $order_info['shipping_address_1']; $payment_data['PAYMENTREQUEST_0_SHIPTOSTREET2'] = $order_info['shipping_address_2']; $payment_data['PAYMENTREQUEST_0_SHIPTOCITY'] = $order_info['shipping_city']; $payment_data['PAYMENTREQUEST_0_SHIPTOSTATE'] = $order_info['shipping_zone']; $payment_data['PAYMENTREQUEST_0_SHIPTOZIP'] = $order_info['shipping_postcode']; $payment_data['PAYMENTREQUEST_0_SHIPTOCOUNTRYCODE'] = $order_info['shipping_iso_code_2']; $payment_data['PAYMENTREQUEST_0_SHIPTOPHONENUM'] = $order_info['telephone']; } if ( $that->config->get('default_pp_express_credit_cards') ) { $payment_data['SOLUTIONTYPE'] = 'Sole'; $payment_data['LANDINGPAGE'] = 'Billing'; } if ( $that->config->get('default_pp_express_billmelater') && has_value($that->request->get['fundsource']) && strtolower($that->request->get['fundsource']) == 'bml' ) { $payment_data['SOLUTIONTYPE'] = 'Sole'; $payment_data['LANDINGPAGE'] = 'Billing'; $payment_data['USERSELECTEDFUNDINGSOURCE'] = 'BML'; } if ( has_value($that->config->get('default_pp_express_custom_logo')) ) { if ( strpos($that->config->get('default_pp_express_custom_logo'), 'http')===0 ) { $custom_logo = $that->config->get('default_pp_express_custom_logo'); } else { $custom_logo = HTTPS_SERVER . $that->config->get('default_pp_express_custom_logo'); } $payment_data['LOGOIMG'] = $custom_logo; } if ( has_value($that->config->get('default_pp_express_custom_bg_color')) ) { $payment_data['CARTBORDERCOLOR'] = $that->config->get('default_pp_express_custom_bg_color'); } $curl = curl_init($api_endpoint); curl_setopt($curl, CURLOPT_PORT, 443); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_FORBID_REUSE, 1); curl_setopt($curl, CURLOPT_FRESH_CONNECT, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($payment_data)); $response = curl_exec($curl); curl_close($curl); $ec_settings = $this->_parse_http_query($response); if ( isset($ec_settings['TOKEN']) ) { if ( !$that->config->get('default_pp_express_test') ) { header('Location: https://www.paypal.com/webscr?cmd=_express-checkout&token=' . urlencode($ec_settings['TOKEN']) . '&useraction=commit'); die(); } else { header('Location: https://www.sandbox.paypal.com/webscr?cmd=_express-checkout&token=' . urlencode($ec_settings['TOKEN']) . '&useraction=commit'); die(); } } else { $warning = new AWarning('PayPal Express Checkout Error: ' . $ec_settings['L_LONGMESSAGE0'] . '. Test mode = ' . $that->config->get('default_pp_express_test') .'.'); $warning->toLog()->toDebug()->toMessages(); $that->loadLanguage('default_pp_express/default_pp_express'); $that->session->data['pp_express_checkout_error'] = $that->language->get('service_error'); header('Location: ' . $that->html->getSecureURL('extension/default_pp_express/error')); die(); } } } //ADMIN HOOKS //Hook to enable payment details tab in admin public function onControllerPagesSaleOrderTabs_UpdateData() { $that = $this->baseObject; $order_id = $that->data['order_id']; //are we logged in and in admin? if ( IS_ADMIN && $that->user->isLogged() ) { //check if tab is not yet enabled. if ( in_array('payment_details', $that->data['groups'])) { return null; } $that->data['groups'][] = 'payment_details'; $that->data['link_payment_details'] = $that->html->getSecureURL('sale/order/payment_details', '&order_id=' . $order_id.'&extension=default_pp_express'); //reload main view data with updated tab $that->view->batchAssign( $that->data ); } } public function onControllerPagesSaleOrder_InitData() { $this->baseObject->loadLanguage('default_pp_express/default_pp_express'); } public function onControllerPagesSaleOrder_UpdateData() { $that = $this->baseObject; if ( IS_ADMIN && $that->user->isLogged() && $this->baseObject_method == 'payment_details' && has_value($that->data['order_info']['payment_method_data'] == 'PayPal Express Checkout') ) { $payment_method_data = unserialize($that->data['order_info']['payment_method_data']); $payment_status = strtolower($payment_method_data['PAYMENTINFO_0_PAYMENTSTATUS']); $data = array(); $data['text_payment_status'] = $that->language->get('text_payment_status'); $data['payment_status'] = $payment_method_data['PAYMENTINFO_0_PAYMENTSTATUS']; if ( has_value($payment_method_data['PAYMENTINFO_0_PENDINGREASON']) ) { $data['pending_reason'] = $that->language->get('text_reason') . ' ' . $payment_method_data['PAYMENTINFO_0_PENDINGREASON'] ; } $data['error_service_unavailable'] = $that->language->get('error_service_unavailable'); if ( ($payment_status == 'pending' && $payment_method_data['PAYMENTINFO_0_PENDINGREASON'] == 'authorization') || has_value($payment_method_data['captured_transaction_id']) ) { // show "capture" form $tpl_data = $this->_get_capture_form($data, $payment_method_data); } elseif ( $payment_status == 'completed' ) { // show "refund" form/button $tpl_data = $this->_get_refund_form($data, $payment_method_data); } elseif ( $payment_status == 'partially refunded' ) { // show "refund" form/button $tpl_data = $this->_get_refund_form($data, $payment_method_data); } if($tpl_data){ $view = new AView(Registry::getInstance(), 0); $view->batchAssign($that->language->getASet('default_pp_express/default_pp_express')); $view->batchAssign($tpl_data); $that->view->addHookVar('extension_payment_details', $view->fetch('pages/sale/pp_express_payment_details.tpl')); } } } private function _get_capture_form($data = array(), $payment_method_data = array()) { $that = $this->baseObject; $captured_amount = has_value($payment_method_data['captured_amount']) ? (float) $payment_method_data['captured_amount'] : 0; if ( $captured_amount < $payment_method_data['PAYMENTINFO_0_AMT'] ) { $data['pp_capture_amount'] = $that->html->buildElement( array( 'type' => 'input', 'name' => 'pp_capture_amount', 'value' => $payment_method_data['PAYMENTINFO_0_AMT'] - $captured_amount, 'style' => 'no-save', 'attr' => 'disabled' ) ); $data['text_capture_funds'] = $that->language->get('text_capture_funds'); $data['pp_capture_submit'] = $that->html->buildElement(array( 'type' => 'button', 'text' => $that->language->get('text_capture'), 'name' => 'pp_capture_submit', 'style' => 'button3' )); $data['pp_capture_action'] = $that->html->getSecureURL( 'r/extension/default_pp_express/capture', '&order_id=' . (int) $that->data['order_info']['order_id'] . '¤cy=' . $that->data['currency']['code'] ); } if ( $captured_amount > 0 ) { return $this->_get_refund_form($data, $payment_method_data, $captured_amount); } else { return $data; } } private function _get_refund_form($data = array(), $payment_method_data = array(), $not_refunded = 0 ) { $that = $this->baseObject; $refunded_amount = has_value($payment_method_data['refunded_amount']) ? (float) $payment_method_data['refunded_amount'] : 0; if ( $not_refunded ) { $data['add_to_capture'] = true; $not_refunded = (float) $not_refunded; } else { $data['add_to_capture'] = false; $not_refunded = (float) $payment_method_data['PAYMENTINFO_0_AMT']; } if ( $refunded_amount < $not_refunded ) { $data['pp_refund_amount'] = $that->html->buildElement( array( 'type' => 'input', 'name' => 'pp_refund_amount', 'value' => $not_refunded - $refunded_amount, 'style' => 'no-save' ) ); $data['text_do_paypal_refund'] = $that->language->get('text_do_paypal_refund'); $data['pp_refund_submit'] = $that->html->buildElement(array( 'type' => 'button', 'text' => $that->language->get('text_refund'), 'name' => 'pp_refund_submit', 'style' => 'button3' )); $params = '&order_id=' . (int) $that->data['order_info']['order_id'] . '¤cy=' . $that->data['currency']['code']; if ( $data['add_to_capture'] ) { $params .= '&refund_captured=1'; } $data['pp_refund_action'] = $that->html->getSecureURL( 'r/extension/default_pp_express/refund', $params ); } $data['text_already_refunded'] = $that->language->get('text_already_refunded'); $data['error_wrong_amount'] = $that->language->get('error_wrong_amount'); if ( (float) $refunded_amount > 0 ) { $data['refunded_amount'] = $that->currency->format($refunded_amount, $that->data['currency']['code'], $that->data['order_info']['value']); } return $data; } private function _parse_http_query($query) { $parts = explode('&', $query); $results = array(); foreach ( $parts as $part ) { $item = explode('=', $part); $results[$item[0]] = urldecode($item[1]); } return $results; } private function _get_products_data($order_info) { $that = $this->baseObject; $that->load->library('encryption'); $encryption = new AEncryption($that->config->get('encryption_key')); $this->data['products'] = array(); $this->data['items_total'] = 0.0; $products = $that->cart->getProducts(); foreach ($products as $product) { $option_data = array(); foreach ($product['option'] as $option) { if ($option['type'] != 'file') { $value = $option['value']; } else { $filename = $encryption->decrypt($option['value']); $value = mb_substr($filename, 0, mb_strrpos($filename, '.')); } $option_data[] = array( 'name' => $option['name'], 'value' => (mb_strlen($value) > 20 ? mb_substr($value, 0, 20) . '..' : $value) ); } $price = $that->currency->format($product['price'], $order_info['currency'], $order_info['value'], FALSE); $this->data['products'][] = array( 'name' => $product['name'], 'model' => $product['model'], 'price' => $price, 'quantity' => $product['quantity'], 'option' => $option_data, 'weight' => $product['weight'], 'weight_type' => $product['weight_type'] ); $this->data['items_total'] += $price*$product['quantity']; } $this->data['discount_amount_cart'] = 0; $totals = $that->cart->buildTotalDisplay(); foreach($totals['total_data'] as $total){ if(in_array($total['id'],array('subtotal','total'))){ continue;} if(in_array($total['id'],array('promotion','coupon'))){ $total['value'] = $total['value']<0 ? $total['value']*-1 : $total['value']; $this->data['discount_amount_cart'] += $total['value']; }else{ $price = $that->currency->format($total['value'], $order_info['currency'], $order_info['value'], FALSE); $this->data['products'][] = array( 'name' => $total['title'], 'model' => '', 'price' => $price, 'quantity' => 1, 'option' => array(), 'weight' => 0 ); $this->data['items_total'] += $price; } } if($this->data['discount_amount_cart']>0){ $price = -1*$that->currency->format($this->data['discount_amount_cart'], $order_info['currency'], $order_info['value'], FALSE); $this->data['products'][] = array( 'name' => $that->language->get('text_discount'), 'model' => '', 'price' => $price, 'quantity' => 1, 'option' => array(), 'weight' => 0 ); $this->data['items_total'] += $price; } return $this->data['products']; } }