Catégories
wpcb

Mise à jour mineure 2.3.7

Bug notifié par Patrick : http://wordpress.org/support/topic/plugin-wpcb-warning-array_key_exists-ligne-25-atosmerchantphp
Corrigé.

Catégories
wpcb

Mise à Jour correction bug

Bonjour à tous,
J’ai corrigé un bug notifié par Patrick Sanchez sur : http://wordpress.org/support/topic/plugin-wpcb-incomplete-transaction-when-paying-with-credit-card
Merci à lui.
Vous pouvez mettre à jour vers la 2.3.6

Catégories
Dev

Trello

Trello est une application en ligne pour gérer des projets, des todo listes et de nombreux processus. Le concept dans cette nouvelle version de WPCB (2.3.4) est que chaque vente est ajouté à une liste trello. Vous pouvez ensuite imaginer deplacer les ventes de listes en listes en fonction de ce qu’il faut faire.

Exemple : Une vente est faîtes sur votre site de vente de pizza en ligne. Vous la déplacer dans la case fini quand cette pizza est prête et la personne reçoit un email ou un sms automatiquement !

Catégories
wpcb

Mise à Jour de WPCB

Bonjour, la version 2.3.3 n’est pas une mise à jour importante pour ceux chez qui cela fonctionne. Elle intègre un mode débug avancé pour ceux qui demande l’installation personnalisée.

Très prochainement, j’ajoute la possibilité que toutes vos ventes deviennent des trello card ! http://trello.com

Catégories
wpcb

Nouveau mode de livraison : Mini-Max (La Poste)

Bonjour, la version 2.3.2 contient un nouveau mode de livraison : le Mini-Max de la Poste . Cela permet d’envoyer des petits colis de manière economique au départ de la france vers la france et l’outre mer (zone 1).

Bonne mise à jour.

Thomas

Catégories
wpcb

Nouveaux mode de livraison

Bonjour à tous,
Une mise à jour (2.3) pour les détenteurs de clé api : deux nouveaux modes de livraison : Lettre Prioritaire et Lettre Verte. Tous les deux sont bien moins chers que le colis standart.
Bon week-end à tous.

Catégories
wpcb

Fin des plugins

Bonjour,

Les plugins de livraison et de paiement par paypal ont été transférés vers le plugin WPCB. C’est plus simple pour moi de maintenir à jour un unique plugin. Si ça marche chez vous, ne mettez pas à jour, car toutes les fonctions n’ont pas été transférées encore. Bon dimanche à tous.

Catégories
wpcb

Déplacement des forums

Le site wordpress.org s’améliore et propose un onglet support sur chaque page des plugins. Les forums sont donc déplacés la-bas. Merci à vous.

Catégories
Web

Envoi de newsletter HTML avec amazon ses

Petit snippet de script php utilisant le code de Anthone et Dan :

Free PHP Class for Sending Email Through Amazon SES

http://www.orderingdisorder.com/aws/ses/

<?php
require_once('ses.php');
$AccessKeyID='AKIAJT*******3XYQIWA';
$SecretKey='b8tTSghJqV*************y/HQ9';
$ses = new SimpleEmailService($AccessKeyID,$SecretKey);
$m = new SimpleEmailServiceMessage();
$m->setFrom('thomas@lyonsalsacongress.com');
$m->addTo('thomas@lyonsalsacongress.com');
$m->addBCC(array('salut@gmail.com', 'thomas@6www.net'));
$m->addReplyTo('thomas@lyonsalsacongress.com');
$m->setSubject('News du Lyon Salsa Congress');
$m->addRawMessageFromFile('html','news.html','text/html');
print_r($ses->sendEmail($m));
print_r($ses->getSendQuota());
print_r($ses->getSendStatistics());
?>

Il faut sauver la page en HTML depuis le navigateur et l’uploader sur le site.

Les functions : ses

Bon dimanche.

Catégories
Web

Paypal pour WordPress avec un formulaire personalisé

Bonjour,
Ci dessous un petit guide pour transformer votre site wordpress en e-boutique sans utiliser le plugin wp-e-commerce.
En plus de créer un boutton paypal, cela vous crée un formulaire pour demander plus d’informations à l’acheteur comme la taille, la couleur du produits, son signe astrologique, etc.

Fonctionnement général :

Vous placer un shortcode sur les pages de votre site ou vous voulez faire apparaitre un bouton paypal. Exemple, je vends une guitare en plastique à 8.35€, cela donne : [PaypalBuyNowButton item_name= »Guitare en plastique » amount= »8.35″]

Le code suivant est à placer dans le fichier functions.php :

function my_scripts_method() {
    wp_deregister_script( 'joinFields' );
    wp_register_script( 'joinFields', 'http://www.votre-site.fr/wp-content/themes/votre-theme/joinFields.js');
    wp_enqueue_script( 'joinFields' );
}    
add_action('wp_enqueue_scripts', 'my_scripts_method');

function PaypalBuyNowButton($atts){
  global $wpdb, $post;
  extract( shortcode_atts( array('item_name' => 'Prevision astrale','amount' => '0.10'), $atts));
  //$Output.='<a href="#" onclick="joinFields()">joinFields</a>';
  //print_r($atts);
  $Output.='<form action="https://www.paypal.com/cgi-bin/webscr" method="post" name="fmBuy" id="fmBuy" onSubmit="joinFields()">
  <input type="hidden" name="cmd" value="_xclick">
  <input type="hidden" name="business" value="votreemailebay@hotmail.com">
  <input type="hidden" name="lc" value="FR">
  <input type="hidden" name="item_name" value="'.$item_name.'">
  <input type="hidden" name="amount" value="'.$amount.'">
  <input type="hidden" name="currency_code" value="EUR">
  <INPUT TYPE="hidden" name="charset" value="utf-8">
  <input type="hidden" name="button_subtype" value="services">
  <input type="hidden" name="no_note" value="1">
  <input type="hidden" name="no_shipping" value="1">
  <input type="hidden" name="rm" value="1">
  <p>Votre nom<br />
  <input type="text" id="nom" name="nom" value="'.$keyarray['last_name'].'" size="40" /></span> </p>
  <p>Votre prénom<br />
  <input type="text" id="prenom" name="prenom" value="'.$keyarray['first_name'].'" size="40" /></span> </p>
  <p>Votre date de naissance<br />
  <input type="text" id="datedenaissance" name="datedenaissance" value="" size="40" /></span> </p>
  <p>Votre heure de naissance<br />
  <input type="text" id="heuredenaissance" name="heuredenaissance" value="" size="40" /></span> </p>
  <p>Votre lieu de naissance<br />
  <input type="text" id="lieudenaissance" name="lieudenaissance" value="" size="40" /></span> </p>
  <p>Votre email<br />
  <input type="text" id="email" name="email" value="'.$keyarray['payer_email'].'" size="40" /></span></p>
  <p>Votre numéro de téléphone<br />
  <input type="text" id="telephone" name="telephone" value="" size="40" /></span></p>
  <p>Votre adresse postale complète<br />
  <input type="text" id="adresse" name="adresse" value="" size="100" /></span></p>
  <input type="hidden" name="custom" id="custom" value="">
  <input type="hidden" name="return" value="http://www.votre-site.fr">
  <input type="hidden" name="cancel_return" value="http://www.votre-site.fr">
  <input type="hidden" name="notify_url" value="http://www.louisette-astro.fr/paypal_ipn.php">
  <input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted">
  <input type="image" src="https://www.paypalobjects.com/fr_FR/FR/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="PayPal - la solution de paiement en ligne la plus simple et la plus sécurisée !">
  <img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
  </form>';
  return $Output;
}
add_shortcode( 'PaypalBuyNowButton', 'PaypalBuyNowButton' );

Ensuite il faut créer le fichier javascript joinFields.js qui va concaténer les elements du formulaire :

function joinFields(){
 var nom = document.getElementById('nom').value;
 var prenom = document.getElementById('prenom').value;
 var datedenaissance = document.getElementById('datedenaissance').value;
 var heuredenaissance = document.getElementById('heuredenaissance').value;
 var lieudenaissance = document.getElementById('lieudenaissance').value;
 var email = document.getElementById('email').value;
 var telephone = document.getElementById('telephone').value;
 var adresse = document.getElementById('adresse').value;
 var req=nom+'&'+prenom+'&'+datedenaissance+'&'+heuredenaissance+'&'+lieudenaissance+'&'+email+'&'+telephone+'&'+adresse;
 var custom = document.getElementById('custom');
 custom.value=req;
  }

Le troisième fichier paypal_ipn.php est à placer à la racine de votre site :

<?php

error_reporting(E_ALL ^ E_NOTICE);
$emailtext = "";
// Read the post from PayPal and add 'cmd'
$req = 'cmd=_notify-validate';
if(function_exists('get_magic_quotes_gpc')){$get_magic_quotes_exits = true;}
foreach ($_POST as $key => $value)
// Handle escape characters, which depends on setting of magic quotes
    {
    if($get_magic_quotes_exists == true && get_magic_quotes_gpc() == 1)
        {$value = urlencode(stripslashes($value));}
    else {$value = urlencode($value);}
    $req .= "&$key=$value";
    }
// Post back to PayPal to validate
$header .= "POST /cgi-bin/webscr HTTP/1.0rn";
$header .= "Content-Type: application/x-www-form-urlencodedrn";
$header .= "Content-Length: " . strlen($req) . "rnrn";
$fp = fsockopen ('ssl://www.paypal.com', 443, $errno, $errstr, 30);

// Process validation from PayPal
if (!$fp)
    { // HTTP ERROR
    }
else
    {
    // NO HTTP ERROR
    fputs ($fp, $header . $req);
    while (!feof($fp))
        {
        $res = fgets ($fp, 1024);
        if (strcmp ($res, "VERIFIED") == 0)
            {
            // Check the payment_status is Completed
            if ($_POST['payment_status']=='Completed')
                {
                $emailtext.='Bonjour,'."n".'Nous avons reçu votre commande '."n".'Détails de votre demande :'."n";
                $emailtext.='Type de demande : '.$_POST['item_name']."n";
                $custom = explode("&",$_POST['custom']);
                $emailtext.='Nom : '.$custom[0]."n".'Prénom : '.$custom[1]."n";
                $emailtext.='Date de naissance :'.$custom[2]."n".'Heure de naissance :'.$custom[3]."n".'Lieu de naissance :'.$custom[4]."n";
                $email=$custom[5];
                $emailtext.='Email : '.$email."n".'Téléphone : '.$custom[6]."n";
                $emailtext.='Adresse : '.$custom[7]."nn";

                foreach ($_POST as $key => $value)
                    {
                    //$emailtext .= $key . " = " .$value ."nn";
                    }

                    $headers  = 'MIME-Version: 1.0' . "rn";
                    $headers .= 'Content-type: text/plain; charset=utf-8' . "rn";
                    $headers .= 'From: Vous <nepasrepondre@votre-site.fr>' . "rn";
                    $headers .= 'Bcc: votre-email@hotmail.com' . "rn";
                    mail($email, "Accusé de reception de votre commande", $emailtext,$headers);
                }//End if completed
            }
        else if (strcmp ($res, "INVALID") == 0)
            {
            foreach ($_POST as $key => $value){$emailtext .= $key . " = " .$value ."nn"; }
            mail('votre-email@hotmail.com', "Live-INVALID IPN at astro", $emailtext . "nn" . $req);
            }  
        }
        fclose ($fp);
    }
?>

Enfin il est important de bien régler vos options de paypal, notamment pour l’ipn :
Paypal -> Préférences -> Plus d’options -> Mes outils de vente -> Notifications instantanées de paiement
(ou directement : https://www.paypal.com/cgi-bin/customerprofileweb?cmd=_profile-ipn-notify)

Paypal Réglage IPN
Paypal Réglage IPN

Note : La somme des champs réponses (nom, prénoms, …) ne peut dépasser 256 caractères (limitation de cette technique). Si besoin de plus de caractères, utiliser une base de données ou wpec.

Todo :

  • intégrer dans un plugin.
  • le lier à un plugin type contact form 7 pour ne pas avoir a créer le formulaire en dur