Exemple #1
0
function fn_generate_rss($items_data, $additional_data = array())
{
    if (empty($additional_data['title']) || empty($additional_data['description']) || empty($additional_data['link'])) {
        return '';
    }
    $default_additional_data = array('copyright' => fn_date_format(time(), '%Y') != Registry::get('settings.Company.company_start_year') ? Registry::get('settings.Company.company_start_year') . ' - ' . fn_date_format(time(), '%Y') . ' ' . Registry::get('settings.Company.company_name') : '', 'language' => CART_LANGUAGE, 'managingEditor' => Registry::get('settings.rss_feed.general.managing_editor'), 'ttl' => 30, 'image' => fn_get_company_logo_url($additional_data), 'lastBuildDate' => time());
    $channel_data = array_merge($default_additional_data, $additional_data);
    $channel_data['lastBuildDate'] = fn_format_rss_time($channel_data['lastBuildDate']);
    $rss = '<?xml version="1.0" encoding="utf-8" ?>' . "\n";
    $rss .= '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">' . "\n";
    $rss .= '<channel>' . "\n";
    $rss .= '<atom:link href="' . Registry::get('config.current_location') . '/' . urlencode(Registry::get('config.current_url')) . '" rel="self" type="application/rss+xml" />' . "\n";
    $rss .= fn_array_to_xml($channel_data) . "\n";
    if (!empty($items_data)) {
        foreach ($items_data as $item) {
            $rss .= '<item>' . "\n";
            $rss .= fn_array_to_xml($item);
            $rss .= '</item>' . "\n";
        }
    } else {
        $rss .= '<item>' . "\n";
        $rss .= '<title>' . __('no_data_found', '', $channel_data['language']) . '</title>';
        $rss .= '<description>' . __('no_data_found', '', $channel_data['language']) . '</description>';
        $rss .= '</item>' . "\n";
    }
    $rss .= '</channel>' . "\n";
    $rss .= '</rss>';
    return $rss;
}
Exemple #2
0
function fn_array_to_xml(&$array, $name)
{
    $xml = "<{$name}>";
    $subname = 'item';
    foreach ($array as $k => $v) {
        if (!is_array($v)) {
            $param = is_int($k) ? $subname : $k;
            $id = is_int($k) ? " id=\"{$k}\"" : '';
            $xml .= "<{$param}{$id}>";
            $xml .= htmlspecialchars($v);
            $xml .= "</{$param}>";
        } else {
            $param = is_int($k) ? $subname : $k;
            $xml .= fn_array_to_xml($v, $param);
        }
    }
    $xml .= "</{$name}>\n";
    return $xml;
}
        } else {
            $tax_table_id = 'tax_default';
        }
        $item = array('CallbackOrderItemId' => $sku, 'TaxTableId' => $tax_table_id, 'ShippingMethodIds' => $items_shipping);
        $callback_response['Response']['CallbackOrders']['CallbackOrder']['CallbackOrderItems']['CallbackOrderItem'][] = $item;
    }
    $callback_response['CartPromotionId'] = 'cart-discount';
    // Update the tax info
    if ($tax_calculation_type == 'default' && $tax_subtotal > 0) {
        $tax = array('SKU' => 'taxes', 'MerchantId' => $processor_data['processor_params']['merchant_id'], 'Title' => substr($tax_description, 0, 250), 'Price' => array('Amount' => fn_format_price($tax_subtotal), 'CurrencyCode' => $processor_data['processor_params']['currency']), 'Quantity' => 1, 'UpdateType' => 'REMOVE');
        $callback_response['Response']['CallbackOrders']['CallbackOrder']['UpdatedCartItems']['UpdatedCartItem'][] = $tax;
        $tax = array('SKU' => 'taxes', 'MerchantId' => $processor_data['processor_params']['merchant_id'], 'Title' => __('taxes') . ': ' . substr($tax_description, 0, 240), 'Price' => array('Amount' => fn_format_price($tax_subtotal), 'CurrencyCode' => $processor_data['processor_params']['currency']), 'Quantity' => 1, 'ShippingMethodIds' => $items_shipping, 'UpdateType' => 'ADD');
        $callback_response['Response']['CallbackOrders']['CallbackOrder']['UpdatedCartItems']['UpdatedCartItem'][] = $tax;
    }
    // Generate the full XML response
    $callback_response = '<?xml version="1.0" encoding="UTF-8"?>' . '<OrderCalculationsResponse xmlns="http://payments.amazon.com/checkout/2009-05-15/">' . fn_array_to_xml($callback_response) . '</OrderCalculationsResponse>';
    $_return = 'order-calculations-response=' . urlencode($callback_response);
    if ($processor_data['processor_params']['aws_access_public_key']) {
        $sign = urlencode(fn_amazon_calculate_signature($callback_response, $processor_data['processor_params']['aws_secret_access_key']));
        $aws_access_key = urlencode($processor_data['processor_params']['aws_access_public_key']);
        $_return .= '&Signature=' . $sign;
        $_return .= '&aws-access-key-id=' . $aws_access_key;
    }
    echo $_return;
    exit;
} elseif ($message_recognizer == 'NewOrderNotification') {
    // Order was placed by Amazon checkout. We need to proceed the callback.
    list($amazon_sess_id, $payment_id) = explode(';', base64_decode((string) $xml->ProcessedOrder->ProcessedOrderItems->ProcessedOrderItem->CartCustomData->ClientRequestId));
    $processor_data = fn_get_payment_method_data($payment_id);
    // If we use the signed cart, validate the request
    if (!fn_amazon_validate_request($processor_data, $_POST)) {
Exemple #4
0
 public static function registerLicense($license_data)
 {
     $request = array('Request@action=registerLicense@api=2' => array('product_type' => PRODUCT_EDITION, 'domain' => Registry::get('config.http_host'), 'first_name' => $license_data['first_name'], 'last_name' => $license_data['last_name'], 'email' => $license_data['email']));
     $request = '<?xml version="1.0" encoding="UTF-8"?>' . fn_array_to_xml($request);
     $data = Http::get(Registry::get('config.resources.updates_server') . '/index.php?dispatch=licenses_remote.add', array('request' => $request), array('timeout' => 10));
     if (empty($data)) {
         $data = fn_get_contents(Registry::get('config.resources.updates_server') . '/index.php?dispatch=licenses_remote.create&request=' . urlencode($request));
     }
     $result = $messages = $license = '';
     if (!empty($data)) {
         // Check if we can parse server response
         if (strpos($data, '<?xml') !== false) {
             $xml = simplexml_load_string($data);
             $result = (string) $xml->Result;
             $messages = $xml->Messages;
             $license = (array) $xml->License;
         }
     }
     self::processMessages($messages, true);
     return array($result, $license, $messages);
 }
Exemple #5
0
        $pp_response["reason_text"] = __('text_transaction_cancelled');
        if (fn_check_payment_script('piraeus.php', $order_id)) {
            fn_finish_payment($order_id, $pp_response, false);
        }
        fn_order_placement_routines('route', $order_id);
    }
} else {
    $ticketing_data = array('AcquirerId' => $processor_data['processor_params']['acquirerid'], 'MerchantId' => $processor_data['processor_params']['merchantid'], 'PosId' => $processor_data['processor_params']['posid'], 'Username' => $processor_data['processor_params']['username'], 'Password' => md5($processor_data['processor_params']['password']), 'RequestType' => $processor_data['processor_params']['requesttype'], 'CurrencyCode' => $processor_data['processor_params']['currencycode'], 'MerchantReference' => $order_info['repaid'] ? $order_id . '_' . $order_info['repaid'] : $order_id, 'Amount' => $order_info['total'], 'Installments' => 0, 'Bnpl' => 0, 'ExpirePreauth' => $processor_data['processor_params']['requesttype'] == '00' ? $processor_data['processor_params']['expirepreauth'] : '0', 'Parameters' => '');
    $str = <<<EOT
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<IssueNewTicket xmlns="http://piraeusbank.gr/paycenter/redirection">
<Request>
EOT;
    $str .= fn_array_to_xml($ticketing_data);
    $str .= <<<EOT
</Request>
</IssueNewTicket>
</soap:Body>
</soap:Envelope>
EOT;
    $str = str_replace(array("\t", "\n", "\r"), '', $str);
    $response_data = Http::post("https://paycenter.piraeusbank.gr/services/tickets/issuer.asmx", $str, array('headers' => array('Content-type: text/xml; charset=utf-8', 'SOAPAction: http://piraeusbank.gr/paycenter/redirection/IssueNewTicket')));
    $resultcode = true;
    $pp_response = array();
    if (strpos($response_data, '<ResultCode') !== false) {
        if (preg_match('!<ResultCode[^>]*>([^>]+)</ResultCode>!', $response_data, $matches)) {
            $resultcode = $matches[1];
        }
    }
Exemple #6
0
function fn_array_to_xml($data)
{
    if (!is_array($data)) {
        return fn_html_escape($data);
    }
    $return = '';
    foreach ($data as $key => $value) {
        $attr = '';
        if (is_array($value) && is_numeric(key($value))) {
            foreach ($value as $k => $v) {
                $arr = array($key => $v);
                $return .= fn_array_to_xml($arr);
                unset($value[$k]);
            }
            unset($data[$key]);
            continue;
        }
        if (strpos($key, '@') !== false) {
            $data = explode('@', $key);
            $key = $data[0];
            unset($data[0]);
            if (count($data) > 0) {
                foreach ($data as $prop) {
                    if (strpos($prop, '=') !== false) {
                        $prop = explode('=', $prop);
                        $attr .= ' ' . $prop[0] . '="' . $prop[1] . '"';
                    } else {
                        $attr .= ' ' . $prop . '=""';
                    }
                }
            }
        }
        $return .= '<' . $key . $attr . '>' . fn_array_to_xml($value) . '</' . $key . '>';
    }
    return $return;
}
     if (!empty($product['product_options'])) {
         $_options = fn_get_selected_product_options_info($cart['products'][$key]['product_options']);
         foreach ($_options as $opt) {
             $item_options .= $opt['option_name'] . ': ' . $opt['variant_name'] . '; ';
         }
         $item_options = ' [' . trim($item_options, '; ') . ']';
     }
     $amazon_order['Cart']['Items']['Item'][] = array('SKU' => empty($product['product_code']) ? 'pid_' . $product['product_id'] : substr(strip_tags($product['product_code']), 0, 250), 'MerchantId' => $processor_data['processor_params']['merchant_id'], 'Title' => substr(strip_tags($product['product']), 0, 250) . $item_options, 'Price' => array('Amount' => fn_format_price($product['price']), 'CurrencyCode' => $_currency), 'Quantity' => $product['amount'], 'ItemCustomData' => array('CartID' => $key));
 }
 $amazon_order['Cart']['CartCustomData'] = array('ClientRequestId' => base64_encode(Tygh::$app['session']->getID() . ';' . $_payment_id));
 // Activate the Amazon callbacks functionality
 $amazon_order['ReturnUrl'] = Registry::get('config.http_location') . '/' . Registry::get('config.customer_index') . '?dispatch=payment_notification.placement&payment=amazon_checkout';
 $amazon_order['CancelUrl'] = fn_url('checkout.cart');
 $amazon_order['OrderCalculationCallbacks'] = array('CalculateTaxRates' => 'true', 'CalculatePromotions' => 'true', 'CalculateShippingRates' => 'true', 'OrderCallbackEndpoint' => Registry::get('config.origin_http_location') . '/app/payments/amazon_checkout.php', 'ProcessOrderOnCallbackFailure' => $processor_data['processor_params']['process_on_failure'] == 'Y' ? 'true' : 'false');
 $amazon_order['DisablePromotionCode'] = 'true';
 $amazon_cart = '<?xml version="1.0" encoding="UTF-8"?>' . '<Order xmlns="http://payments.amazon.com/checkout/2009-05-15/">' . fn_array_to_xml($amazon_order) . '</Order>';
 // Calculate cart signature
 if (!empty($processor_data['processor_params']['aws_access_public_key'])) {
     $sign = fn_amazon_calculate_signature($amazon_cart, $processor_data['processor_params']['aws_secret_access_key']);
     $sign = ';signature:' . $sign . ';aws-access-key-id:' . $processor_data['processor_params']['aws_access_public_key'];
     $order_type = 'merchant-signed-order/aws-accesskey/1';
 } else {
     $sign = '';
     $order_type = 'unsigned-order';
 }
 $base64cart = base64_encode($amazon_cart);
 // The necessary Amazon scripts
 if ($processor_data['processor_params']['test'] == 'Y') {
     if ($processor_data['processor_params']['currency'] == 'USD') {
         $scripts = '<script type="text/javascript" src="https://static-na.payments-amazon.com/cba/js/us/sandbox/PaymentWidgets.js"></script>';
     } elseif ($processor_data['processor_params']['currency'] == 'EUR') {
Exemple #8
0
function fn_yml_array_to_yml($data, $level = 0)
{
    if (!is_array($data)) {
        return $data;
    }
    $return = '';
    foreach ($data as $key => $value) {
        $attr = '';
        if (is_array($value) && is_numeric(key($value))) {
            foreach ($value as $k => $v) {
                $arr = array($key => $v);
                $return .= fn_array_to_xml($arr);
                unset($value[$k]);
            }
            unset($data[$key]);
            continue;
        }
        if (strpos($key, '@') !== false) {
            $data = explode('@', $key);
            $key = $data[0];
            unset($data[0]);
            if (count($data) > 0) {
                foreach ($data as $prop) {
                    if (strpos($prop, '=') !== false) {
                        $prop = explode('=', $prop);
                        $attr .= ' ' . $prop[0] . '="' . $prop[1] . '"';
                    } else {
                        $attr .= ' ' . $prop . '=""';
                    }
                }
            }
        }
        if (strpos($key, '+') !== false) {
            list($key) = explode('+', $key, 2);
        }
        $tab = str_repeat('    ', $level);
        if (empty($value)) {
            $return .= $tab . "<" . $key . $attr . "/>\n";
        } elseif (is_array($value)) {
            $return .= $tab . "<" . $key . $attr . ">\n" . fn_yml_array_to_yml($value, $level + 1) . '</' . $key . ">\n";
        } else {
            $return .= $tab . "<" . $key . $attr . '>' . fn_yml_array_to_yml($value, $level + 1) . '</' . $key . ">\n";
        }
    }
    return $return;
}
Exemple #9
0
    foreach ($order_info['products'] as $v) {
        $payment_description .= preg_replace('/[^\\w\\s]/i', '', $v['product']) . "; amount=" . $v['amount'] . ";";
    }
}
// Gift Certificates
if (!empty($order_info['gift_certificates'])) {
    foreach ($order_info['gift_certificates'] as $v) {
        $payment_description .= $v['gift_cert_code'] . "; amount=1;";
    }
}
$post = array('ewaygateway' => array('ewayCustomerID' => $processor_data['processor_params']['client_id'], 'ewayTotalAmount' => 100 * $order_info['total'], 'ewayCustomerFirstName' => $order_info['b_firstname'], 'ewayCustomerLastName' => $order_info['b_lastname'], 'ewayCustomerEmail' => $order_info['email'], 'ewayCustomerAddress' => $order_info['b_address'], 'ewayCustomerPostcode' => $order_info['b_zipcode'], 'ewayCustomerInvoiceDescription' => $payment_description, 'ewayCustomerInvoiceRef' => $_order_id, 'ewayCardHoldersName' => $order_info['payment_info']['cardholder_name'], 'ewayCardNumber' => $order_info['payment_info']['card_number'], 'ewayCardExpiryMonth' => $order_info['payment_info']['expiry_month'], 'ewayCardExpiryYear' => $order_info['payment_info']['expiry_year'], 'ewayTrxnNumber' => '', 'ewayOption1' => '', 'ewayOption2' => '', 'ewayOption3' => $test_mode));
if ($processor_data['processor_params']['include_cvn'] == 'true' && !empty($order_info['payment_info']['cvv2'])) {
    $post['ewaygateway']['ewayCVN'] = $order_info['payment_info']['cvv2'];
}
Registry::set('log_cut_data', array('ewayCardNumber', 'ewayCardExpiryMonth', 'ewayCardExpiryYear'));
$return = Http::post("https://www.eway.com.au/" . $request_script, fn_array_to_xml($post), array('headers' => array('Content-type: text/xml')));
preg_match("/<ewayTrxnStatus>(.*)<\\/ewayTrxnStatus>/", $return, $result);
preg_match("/<ewayReturnAmount>(.*)<\\/ewayReturnAmount>/", $return, $amount);
if ($result[1] == "True" && fn_format_price($amount[1]) == fn_format_price($order_info['total'] * 100)) {
    $pp_response['order_status'] = 'P';
    preg_match("/<ewayAuthCode>(.*)<\\/ewayAuthCode>/", $return, $authno);
    $pp_response["reason_text"] = "AuthNo: " . $authno[1];
} else {
    $pp_response['order_status'] = 'F';
    preg_match("/<ewayTrxnError>(.*)<\\/ewayTrxnError>/", $return, $error);
    if (!empty($error[1])) {
        $pp_response["reason_text"] = "Error:" . $error[1];
    }
}
preg_match("/<ewayTrxnNumber>(.*)<\\/ewayTrxnNumber>/", $return, $transaction_id);
if (!empty($transaction_id[1])) {
Exemple #10
0
    $xml .= fn_array_to_xml($products, 'products');
}
//
// View product details
//
if ($mode == 'get_product') {
    $_REQUEST['product_id'] = empty($_REQUEST['product_id']) ? 0 : $_REQUEST['product_id'];
    $product = fn_get_product_data($_REQUEST['product_id'], $auth, CART_LANGUAGE);
    if (!empty($product)) {
        if (!empty($_REQUEST['combination'])) {
            $product['combination'] = $combination;
        }
        fn_gather_additional_product_data($product, true, true);
        $xml .= fn_array_to_xml($product, 'product_data');
    }
}
if ($mode == 'get_categories') {
    $_REQUEST['category_id'] = empty($_REQUEST['category_id']) ? 0 : $_REQUEST['category_id'];
    $params = array('category_id' => $_REQUEST['category_id'], 'visible' => false, 'plain' => !empty($_REQUEST['format']) && $_REQUEST['format'] == 'plain' ? true : false);
    list($categories, ) = fn_get_categories($params, CART_LANGUAGE);
    $xml .= fn_array_to_xml($categories, 'categories');
}
if ($mode == 'get_category') {
    $_REQUEST['category_id'] = empty($_REQUEST['category_id']) ? 0 : $_REQUEST['category_id'];
    $category_data = fn_get_category_data($_REQUEST['category_id'], CART_LANGUAGE, '*');
    if (!empty($category_data)) {
        $xml .= fn_array_to_xml($category_data, 'category_data');
    }
}
echo $xml;
exit;