Bonjour,
Pour ceux qui m'ont demandé comment j'ai fait je vous devoile tout ici.
Je suis désolé de répondre un peu tard mais j'était sur un autre projet (nouveau serveur !!!)
La précision importante pour tous, je suis en creloaded, donc ça change un peu, mais j'ai bien réussi à mettre des contrib oscommerce sur creloaded, vous arrivez bien à le faire dans l'autre sens... j'ai foi en vous
De plus, je fait du php seulement depuis 3 ans, alors le code n'est pas toujours 'propre' au dire de certains. Si certains on des suggestions, elles sont les bienvenues !!
1°) J'ai créer de nouveau champs dans ma table "orders"
delivery_so_nom varchar(255) latin1_swedish_ci Non
delivery_so_prenom varchar(255) latin1_swedish_ci Non
delivery_so_societe varchar(255) latin1_swedish_ci Non
delivery_so_portable varchar(255) latin1_swedish_ci Non
delivery_so_ad1 varchar(255) latin1_swedish_ci Non
delivery_so_ad2 varchar(255) latin1_swedish_ci Non
delivery_so_ad3 varchar(255) latin1_swedish_ci Non
delivery_so_ad4 varchar(255) latin1_swedish_ci Non
delivery_so_cp varchar(255) latin1_swedish_ci Non
delivery_so_ville varchar(255) latin1_swedish_ci Non
delivery_so_p1 varchar(255) latin1_swedish_ci Non
delivery_so_p2 varchar(255) latin1_swedish_ci Non
delivery_so_inter varchar(255) latin1_swedish_ci Non
delivery_so_comments varchar(255) latin1_swedish_ci Non
j'ai tout pris en varchar ou éviter tout problème avec des variables en nombre réel. (j'ai oublié le terme... j'ai pas de mémoire

)
2°) j'ai modifié les fichiers suivants : checkout_shipping.php, checkout_payment.php, checkout_process.php, checkout_confirmation.tpl.php, account_history_info.tpl.php, print_order.php puis dans l'admin orders.php
le fichier tpl.php est spéciale à la creloaded mais en oscommerce c'est le même fichier sans tpl.
J'ai créer 2 fichiers : so_colissimo_checkout.php et so_colissimo_error.php
3°) checkout_shipping.php
incorporer le script suivant après la ligne :
'cost' => $quote[0]['methods'][0]['cost']);
// ajout pour so_collisimo
if (tep_session_is_registered('deliverymode')) tep_session_unregister('deliverymode'); //reset le mode de livraison (DOM,, RDV, BPR, A2P, MRL, CIT, ACP, CDI)
if (tep_session_is_registered('delivery_socolissimo_address')) tep_session_unregister('delivery_socolissimo_address'); //reset l'adresse renvoyé par le site so colissimo
if (tep_session_is_registered('delivery_so_nom')) {
tep_session_unregister('delivery_so_nom');
tep_session_unregister('delivery_so_prenom');
tep_session_unregister('delivery_so_societe');
tep_session_unregister('delivery_so_ad1');
tep_session_unregister('delivery_so_ad2');
tep_session_unregister('delivery_so_ad3');
tep_session_unregister('delivery_so_ad4');
tep_session_unregister('delivery_so_cp');
tep_session_unregister('delivery_so_ville');
tep_session_unregister('delivery_so_portable');
tep_session_unregister('delivery_so_p1');
tep_session_unregister('delivery_so_p2');
tep_session_unregister('delivery_so_inter');
tep_session_unregister('delivery_so_comments');
}
if ( (strpos($quote[0]['id'],'colissimo') !== false || $shipping['id'] == 'free_free') && $order->delivery['country']['iso_code_2'] == 'FR' ) {
$_SESSION['flag_colissimo'] = 1;
echo tep_draw_form('formcolissimocall', 'http://www.votresite.com/so_colissimo_checkout.php', 'get'); //METHODE GET OBLIGATOIRE pour EVITER DES ERREUR DE RETOUR (button back)
echo '<font color="#FFFFFF">Redirect</font>';
echo '</form>';
echo '<script>document.formcolissimocall.submit();</script>';
}else{
// fin pour so_colissimo
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}
4°) checkout_payment.php
après le code suivant :
require(DIR_WS_CLASSES . 'order.php');
$order = new order;
inséré
// validation et traitement so_colissimo
if ($_POST['PUDOFOID'] == '05463752275857') {
$_SESSION['delivery_so_nom'] = strtoupper($_POST['CENAME']);
$_SESSION['delivery_so_prenom'] = $_POST['CEFIRSTNAME'];
if ($_POST['DELIVERYMODE'] == 'DOM' || $_POST['DELIVERYMODE'] == 'RDV') {
$_SESSION['delivery_so_societe'] = $_POST['CECOMPANYNAME'];
$_SESSION['delivery_so_ad1'] = $_POST['CEADRESS1'];
$_SESSION['delivery_so_ad2'] = $_POST['CEADRESS2'];
$_SESSION['delivery_so_ad3'] = $_POST['CEADRESS3'];
$_SESSION['delivery_so_ad4'] = $_POST['CEADRESS4'];
$_SESSION['delivery_so_cp'] = $_POST['CEZIPCODE'];
$_SESSION['delivery_so_ville'] = $_POST['CETOWN'];
if ($_POST['DELIVERYMODE'] == 'RDV') $_SESSION['deliverymode'] = $_POST['DYFORWARDINGCHARGES'];
}else{
$_SESSION['delivery_so_societe'] = $_POST['PRNAME'] . ' (' . $_POST['PRID'] . ')';
$_SESSION['delivery_so_ad2'] = $_POST['PRCOMPLADRESS'];
$_SESSION['delivery_so_ad3'] = $_POST['PRADRESS1'];
$_SESSION['delivery_so_ad4'] = $_POST['PRADRESS2'];
$_SESSION['delivery_so_cp'] = $_POST['PRZIPCODE'];
$_SESSION['delivery_so_ville'] = $_POST['PRTOWN'];
}
$_SESSION['delivery_so_portable'] = $_POST['CEPHONENUMBER'];
$_SESSION['delivery_so_p1'] = $_POST['CEDOORCODE1'];
$_SESSION['delivery_so_p2'] = $_POST['CEDOORCODE2'];
$_SESSION['delivery_so_inter'] = $_POST['CEENTRYPHONE'];
$_SESSION['delivery_so_comments'] = $_POST['CEDELIVERYINFORMATION'];
}
// fin du traitement so_colissimo
5°) checkout_confirmation.tpl.php
après la ligne suivante :
if ($sendto != false) {
modifié comme suit (selon la disposition de votre site)
<?php
if ($sendto != false) {
?>
<td width="30%" valign="top"><table border="0" width="100%" cellspacing="0" cellpadding="2">
<tr>
<td class="main"><?php echo '<b>' . HEADING_DELIVERY_ADDRESS . '</b>';
if (tep_session_is_registered('delivery_socolissimo_address')) {
echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL') . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>';
}else{
echo '<a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING_ADDRESS, '', 'SSL') . '"><span class="orderEdit">(' . TEXT_EDIT . ')</span></a>';
} ?></td>
</tr>
<tr>
<td class="main">
<?php
if (tep_session_is_registered('delivery_so_nom')) {
echo $_SESSION['delivery_so_nom'] . ' ' . $_SESSION['delivery_so_prenom'] . '<br>';
echo $_SESSION['delivery_so_societe'] . '<br>';
if ($_SESSION['delivery_so_ad3']) echo $_SESSION['delivery_so_ad3'] . '<br>';
if ($_SESSION['delivery_so_ad4']) echo $_SESSION['delivery_so_ad4'] . '<br>';
if ($_SESSION['delivery_so_ad1']) echo $_SESSION['delivery_so_ad1'] . '<br>';
if ($_SESSION['delivery_so_ad2']) echo $_SESSION['delivery_so_ad2'] . '<br>';
echo $_SESSION['delivery_so_cp'] . ' ' . $_SESSION['delivery_so_ville'] . '<br>';
if ($_SESSION['delivery_so_p1']) echo $_SESSION['delivery_so_p1'] . '<br>';
if ($_SESSION['delivery_so_p2']) echo $_SESSION['delivery_so_p2'] . '<br>';
if ($_SESSION['delivery_so_inter']) echo $_SESSION['delivery_so_inter'] . '<br>';
if ($_SESSION['delivery_so_comments']) echo $_SESSION['delivery_so_comments'];
}else{
echo tep_address_format($order->delivery['format_id'], $order->delivery, 1, ' ', '<br>');
}
?>
</td>
</tr>
6°) checkout_process.php (et votre fichier de banque aussi, pour le paiement par CB)
après :
'customers_address_format_id' => $order->customer['format_id'],
inséré
'delivery_name' => $order->delivery['firstname'] . ' ' . $order->delivery['lastname'],
'delivery_company' => $order->delivery['company'],
'delivery_street_address' => $order->delivery['street_address'],
'delivery_suburb' => $order->delivery['suburb'],
'delivery_city' => $order->delivery['city'],
'delivery_postcode' => $order->delivery['postcode'],
'delivery_state' => $order->delivery['state'],
'delivery_country' => $order->delivery['country']['title'],
'delivery_address_format_id' => $order->delivery['format_id'],
'delivery_so_nom' => $_SESSION['delivery_so_nom'],
'delivery_so_prenom' => $_SESSION['delivery_so_prenom'],
'delivery_so_societe' => $_SESSION['delivery_so_societe'],
'delivery_so_portable' => $_SESSION['delivery_so_portable'],
'delivery_so_ad1' => $_SESSION['delivery_so_ad1'],
'delivery_so_ad2' => $_SESSION['delivery_so_ad2'],
'delivery_so_ad3' => $_SESSION['delivery_so_ad3'],
'delivery_so_ad3' => $_SESSION['delivery_so_ad3'],
'delivery_so_cp' => $_SESSION['delivery_so_cp'],
'delivery_so_ville' => $_SESSION['delivery_so_ville'],
'delivery_so_p1' => $_SESSION['delivery_so_p1'],
'delivery_so_p2' => $_SESSION['delivery_so_p2'],
'delivery_so_inter' => $_SESSION['delivery_so_inter'],
'delivery_so_comments' => $_SESSION['delivery_so_comments'],
7°) les autres fichiers account_hitory_info.tlp.php et print_order.php sont à modifier pour avoir l'affichage so colissimo (voir checkout_confirmation.tpl.php)
8°) so_colissimo_checkout.php
<?php
require('includes/application_top.php');
// require('includes/classes/http_client.php');
//print_r($_SESSION['shipping']);
//break;
// EOF: WebMakers.com Added: Downloads Controller - Free Shipping
// if the customer is not logged on, redirect them to the login page
if (!tep_session_is_registered('customer_id')) {
$navigation->set_snapshot();
tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
}
//flag de retour so_colissimo (button back)
if ($_SESSION['flag_colissimo'] == '1') {
$_SESSION['flag_colissimo'] = '0';
}else{
tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING));
}
echo '<font color="#FFFFFF">so_colissimo</font>';
// if there is nothing in the customers cart, redirect them to the shopping cart page
if ($cart->count_contents() < 1) {
tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
}
// BOF: WebMakers.com Added: Attributes Sorter and Copier and Quantity Controller
// Validate Cart for checkout
$valid_to_checkout= true;
$cart->get_products(true);
if (!$valid_to_checkout) {
//$messageStack->add_session('header', 'Please update your order ...', 'error');
$messageStack->add_session('header', ERROR_VALID_TO_CHECKOUT, 'error');
tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
}
// EOF: WebMakers.com Added: Attributes Sorter and Copier and Quantity Controller
// if no shipping destination address was selected, use the customers own address as default
if (!tep_session_is_registered('sendto')) {
tep_session_register('sendto');
if ($customer_default_address_delivery_id != 0) {
$sendto = $customer_default_address_delivery_id;
}else{
$sendto = $customer_default_address_id;
}
} else {
// verify the selected shipping address
$check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$sendto . "'");
$check_address = tep_db_fetch_array($check_address_query);
if ($check_address['total'] != '1') {
if ($customer_default_address_delivery_id != 0) {
$sendto = $customer_default_address_delivery_id;
}else{
$sendto = $customer_default_address_id;
}
if (tep_session_is_registered('shipping')) tep_session_unregister('shipping');
}
}
require(DIR_WS_CLASSES . 'order.php');
$order = new order;
// register a random ID in the session to check throughout the checkout procedure
// against alterations in the shopping cart contents
if (!tep_session_is_registered('cartID')) tep_session_register('cartID');
$cartID = $cart->cartID;
// if the order contains only virtual products, forward the customer to the billing page as
// a shipping address is not needed
// ICW CREDIT CLASS GV AMENDE LINE BELOW
// if ($order->content_type == 'virtual') {
if (($order->content_type == 'virtual') || ($order->content_type == 'virtual_weight') ) {
if (!tep_session_is_registered('shipping')) tep_session_register('shipping');
$shipping = false;
$sendto = false;
tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
}
$total_weight = $cart->show_weight();
$total_count = $cart->count_contents();
// load all enabled shipping modules
require(DIR_WS_CLASSES . 'shipping.php');
$shipping_modules = new shipping;
if ( defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') ) {
$pass = false;
switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
case 'national':
if ($order->delivery['country_id'] == STORE_COUNTRY) {
$pass = true;
}
break;
case 'international':
if ($order->delivery['country_id'] != STORE_COUNTRY) {
$pass = true;
}
break;
case 'both':
$pass = true;
break;
}
$free_shipping = false;
if ( ($pass == true) && ($order->info['subtotal'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) { //modif $order->info['total'] en $order->info['subtotal'] suite erreur freeshipping lors du retour checkout_confimation vers checkout_shipping
$free_shipping = true;
include(DIR_WS_LANGUAGES . $language . '/modules/order_total/ot_shipping.php');
}
} else {
$free_shipping = false;
}
echo tep_draw_form('formpudocall', 'http://ws.colissimo.fr/pudo-fo/storeCall.do?trReturnUrlKo=http://www.votre site.com/so_colissimo_error.php');
$tableau = (array)$order;
$pudofoid = 'votre id so colissimo-voir votre reponsable la poste';
$cename = strtolower($tableau['delivery']['lastname']);
$dypreparationtime = '1';
$dyforwardingcharges = $_SESSION['shipping']['cost']; //'7.5';
$orderid = time();
$cle = 'votre cle-voir votre responsable la poste';//
$string_converter = $pudofoid . $cename . $dypreparationtime . $dyforwardingcharges . $orderid . $cle;
$cle_hash = sha1($string_converter);
if ($_SESSION['customer_gender'] == 'm') {
$civility = 'MR';
}else{
$civility = 'MME';
}
if ( !empty($tableau['customer']['mobile']) ) {
$tel = $tableau['customer']['mobile'];
}elseif( substr($tableau['customer']['telephone'], 0,2) == '06' || substr($tableau['customer']['telephone'], 0,2) == '07' ) {
$tel = $tableau['customer']['telephone'];
}else{
$tel = '';
}
echo tep_draw_hidden_field('pudoFOId', $pudofoid);
echo tep_draw_hidden_field('CeName', $cename); //$tableau['delivery']['lastname']);
echo tep_draw_hidden_field('dyPreparationTime', $dypreparationtime);
echo tep_draw_hidden_field('dyForwardingCharges', $dyforwardingcharges);
echo tep_draw_hidden_field('orderId', $orderid);
echo tep_draw_hidden_field('signature', $cle_hash);
echo tep_draw_hidden_field('ceCivility', $civility);
echo tep_draw_hidden_field('ceFirstName', $tableau['delivery']['firstname']);
echo tep_draw_hidden_field('ceCompanyName', $tableau['delivery']['company']);
echo tep_draw_hidden_field('ceAdress3', $tableau['delivery']['street_address']);
echo tep_draw_hidden_field('ceAdress4', $tableau['delivery']['suburb']);
echo tep_draw_hidden_field('ceZipCode', $tableau['delivery']['postcode']);
echo tep_draw_hidden_field('ceTown', $tableau['delivery']['city']);
echo tep_draw_hidden_field('ceEmail', $tableau['customer']['email_address']);
echo tep_draw_hidden_field('cePhoneNumber', $tel);
echo tep_draw_hidden_field('dyWeight', floatval($quote[0]['methods'][0]['title']));
echo tep_draw_hidden_field('trReturnUrlOk', 'http://www.votre site.com/checkout_payment.php'); //checkout_payment so_colissimo_error
echo '</form>';
echo '<script>document.formpudocall.submit();</script>';
?>
Il faut surement l'épurer, mais j'ai pas encore eu le temps.
pour le paramètrage voir la page 31-32 de la doc d'intégration
9°) so_colissimo_error.php
<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
echo '<br>Merci de nous contacter au xx xx xx xx xx.'
?>
Voilà je crois n'avoir rien oublié sinon j'ajouterais plus tard.
N'hésitez pas si vous avez des questions, j'essayerais d'y répondre le plus rapidement possible.
Benjamin