Flux d’activité

Flux d’activité de Messages

  1. ant0ny


    Bonjour, comme promis, je reviens avec des infos.

    Alors avec le code unset($_REQUEST['cluster']); j'ai plus de soucis, les commandes passe bien sur réglé.

    Voici la réponse de OVH par rapport a cela:

    Votre demande relève de l'installation du module de paiement Ogone, néanmoins nous n'avons pas la visibilité sur le code php et l'assistance pour le paramètrage de la solution de paiement est en dehors de notre périmètre.
    je vous invite à vous rapprocher du fournisseur de la solution de paiement pour avoir la bonne configuration.

    J'ai fait un test d'envoi de mail avec demande de paiement pour une commande par Ogone, le lien dans le mail ouvre la page Ogone mais il y a une erreur (voir photo)

    160822110915226270.png

    A votre avis quel pourrais être le soucis?

    Merci.

  2. Souloumiac


    Bonjour,

    Je viens de paramétrer les couleurs quasi à 80% de mon site et cela en intervenant dans le fichier screen.css (merci à peel.fr pour l'open source de leur application).

    Les modifications qui me restent sont suite au choix de ma couleur de fond de mon menu et de la partie haute du site, ces modifications sont donc nécessaires pour augmenter la visibilité des informations du menu.

    Il me me reste 3 points pour lesquels cela fait des heures que je plante (Grummm!) :

    - je n'arrive pas à modifier la couleur du petit triangle à coté d'un choix du menu (Version ordi et nomade (smartphone,tablette...))

    - je n'arrive pas à modifier la couleur des choix des sous menus (impact surtout en version nomade)

    - je n'arrive pas à modifier la couleur des barres dans le petit carré permettant d'accéder au menu en mode nomade bien évidemment

    J'ai essayé en utilisant le code couleur décodé à l'écran mais mes actions dans le css sont soit sans effet ou soit je ne retrouve pas le code couleur décodé dans le css pour intervenir dessus.

    Merci par avance de votre aide.

    Bonne journée.

  3. epok


    Bonjour Simon,

    j'avais eu de gros soucis avec la config de votre module paybox car au final il ne traduisait pas la monnaie CFP de Nouvelle-Calédonie pour mon client "coin du cuir" et à l'issue de nombreux échanges, vous m'avez fourni une ligne de code qui a changé la donne. Cependant, suite à des soucis personnels, le client n'avait jusqu'alors pas utilisé son site - je viens de me rendre compte d'un bug énorme en le réactivant : 

    Les francs cfp (francs pacifique) ne disposent pas de centimes, la virgule après les prix est donc obsolète. Je n'ai toutefois pas modifié quoi que ce soit au niveau du site car nous allons également ajouter d'autres moyens de paiement dans d'autres devises. J'ai remarqué que lorsque je veux payer un article 10 000,00 Francs cfp (affichés ainsi sur le site peel) le module paybox reçoit un ordre de paiement de 1 000 000 cfp soit 8000 euros au lieu de 80 euros ! Il parait donc évident que la virgule disparaît quelque part dans l'opération et incrémente le prix de deux zéros supplémentaires ... vous vous doutez qu'en attendant votre réponse je doive de nouveau désactiver ce moyen de paiement car la différence entre le prix des articles et la facturation réelle de ceux-ci risque de mettre plus d'une personne dans l'embarras :-)

    Vous m'aviez répondu à un post vous demandant de modifier la décimale des prix, j'ai donc parcouru la base de données dans la table prices_precision qui est =2

    Idem pour les variables dans l'admin, idem dans le code php de lib/fonctions.php ...

    Merci d'avance (ps : n'hésitez-pas à me demander les codes du ftp si besoin)

  4. ant0ny


    Bonjour,

    Merci, je vais mettre ceci dans le fichier ipn.php et vous tien informé suite à la prochaine transaction, ensuite je retiré les mail que je m'envoi a chaque étape car je suis débordé de mail a chaque transaction.

    Donc c'est mon hébergeur (OVH) qui ajoute CLUSTER aux autres paramètres envoyé par Ogone, donc finalement on peut chercher longtemps si on ne sais pas que c'est l’hébergeur qui fait ça...

    Par contre il me semble que si une commande n'est pas payé, si j'envoi un rappel par mail au client, le lien dans le mail ne fonctionne pas, enfin le lien oui, le client est envoyé vers Ogone mais Ogone dit qu'il y a une erreur mais à confirmé car j'avais pas approfondi plus la chose au début.

    En tous cas merci et je reviens dés que j'ai du nouveau ;)

  5. Gilles Boussin


    Bonjour,

    Il semble que vous ayiez trouvé ce qui ne va pas sur votre site : votre hébergement définit un $_REQUEST['cluster'] qui n'a pas lieu d'être, et donc en début de votre script ipn.php vous pouvez faire :

    unset($_REQUEST['cluster']);

    et vous pouvez discuter avec votre hébergeur sur la raison pour laquelle le serveur sur lequel vous êtes transmet cette variable cluster, probablement pour des besoins internes à eux.

    Gilles

  6. ant0ny


    Bonjour,

    Après réponse de Ogone, je suis arrivé a formé une clef correcte mais il y a des choses à modifier sur le code du module.

     

    J'ai retiré plein de paramètre sur Ogone, j'ai laissé que ceux obligatoire et essentiel (voir capture).

    mini_160811113627493372.png

     

    Par contre le module forme ceci juste avant le sha1:

    ACCEPTANCE=313576962487Mysecretsig1875!?AMOUNT=44.8Mysecretsig1875!?CLUSTER=R1649232117Mysecretsig1875!?NCERROR=0Mysecretsig1875!?ORDERID=5234Mysecretsig1875!?PAYID=3135769624Mysecretsig1875!?STATUS=9Mysecretsig1875!?

    Se qui donne:

    sha out new
    BF0163FA66875A0201CEEE32722A03E857CCCA18

    Mais Ogone:
    29FFD98A0E3BAF1E2791DFBBD1C97916E810DAB6

    Et dans ceci, il reste CLUSTER=R1649232117 et CLUSTER n'est pas dans la liste des paramètres à inclure dans le calcule de la clef.

    Si je retire ce paramètre, j'ai ceci:

    ACCEPTANCE=313576962487Mysecretsig1875!?AMOUNT=44.8Mysecretsig1875!?NCERROR=0Mysecretsig1875!?ORDERID=5234Mysecretsig1875!?PAYID=3135769624Mysecretsig1875!?STATUS=9Mysecretsig1875!?

    Passé en sha1 j'ai ceci: 29FFD98A0E3BAF1E2791DFBBD1C97916E810DAB6 Se qui correspond a la clef calculé par Ogone.

    Donc dans le module, il doit aussi vérifier que les paramètres utilisé sont dans la liste les paramètres à prendre en compte pour le calcule de la clef et exclure les autres.

    Malheureusement je ne sais pas comment faire cela.

    On doit surement modifier dans /modules/ogone/fonctions.php 

    function get_ogone_sha1($values, $new_sha_method = false, $sha_mode = 'in')
    {
    	If ($new_sha_method) {
    
    //send_email($GLOBALS['support'], 'Alerte : new sha method', 'informations $new_sha_method' . "\n\n" . print_r($new_sha_method, true));
    		/*
    		D'après les informations de https://secure.ogone.com/ncol/Ogone_e-Com-BAS_FR.pdf
    		- paramètres (dans l’ordre alphabétique)
    		amount : 15.00 -> 1500
    		currency : EUR
    		Operation : RES
    		orderID: 1234
    		PSPID : MyPSPID
    		- Clé SHA : Mysecretsig1875!?
    		- chaîne à hacher : AMOUNT=1500Mysecretsig1875!?CURRENCY=EURMysecretsig1875!?OPERATION=RESMysecretsig1875!?ORDERID=1234Mysecretsig1875!?PSPID=MyPSPIDMysecretsig1875!?
    		// Vous pouvez tester votre SHASign à l?adresse https://secure.ogone.com/ncol/test/testsha.asp
    		*/
    		$string_to_hash = '';
    		// Quand on veut appliquer ksort, c'est après avoir passé les clés en majuscules, sinon le tri n'est pas bon
    		// Par ailleurs, les champs vides ne doivent PAS être inclus
    		foreach($values as $this_key => $this_value) {
    			$upper_values[strtoupper($this_key)] = $this_value;
    		}
    		ksort($upper_values);
    //>>>SUREMENT ICI LA MODIFICATION <<<<
    		foreach($upper_values as $this_key => $this_value) {
    			if ($this_key != 'SHASIGN' && String::strlen($this_value) > 0) {
    				$string_to_hash .= $this_key . '=' . $this_value . $GLOBALS['site_parameters']['ogone_cle'];
    			}
    		}
    		// Il ne faut pas retirer la clé en fin de chaine
    		// $string_to_hash = String::substr($string_to_hash, 0, String::strlen($string_to_hash)-String::strlen($GLOBALS['site_parameters']['ogone_cle']));
    		$sha1 = strtoupper(sha1($string_to_hash));
    	} else {
    		if ($sha_mode == 'in') {
    			// Vieilles clés avant 2010 (quand Ogone a changé sa politique de calcul de clés SHA) :
    			$sha1 = strtoupper(sha1($values['orderID'] . $values['amount'] . $values['currency'] . $values['PSPID'] . vb($form_values['Alias']) . vb($form_values['AliasUsage']) . $GLOBALS['site_parameters']['ogone_cle']));
    		} else {
    			$sha1 = strtoupper(sha1($_REQUEST['orderID'] . vb($_REQUEST['currency']) . vb($_REQUEST['amount']) . vb($_REQUEST['PM']) . vb($_REQUEST['ACCEPTANCE']) . vb($_REQUEST['STATUS']) . vb($_REQUEST['CARDNO']) . vb($_REQUEST['PAYID']) . vb($_REQUEST['NCERROR']) . vb($_REQUEST['STR_BRAND']) . $GLOBALS['site_parameters']['ogone_cle']));
    		}
    	}
    	return $sha1;
    }

     

    Merci pour votre aide.

  7. ant0ny


    Bonjour, 

    Oui, généralement les réponse sont constructive mais pas ici... Me dire on peut faire une intervention payante ne m'aide pas... j'ai posté mes paramètres ogone, j'ai tout suivi a la lettre mais je sais pas si c'est correcte ou pas mais j'ai suivi les explications... 

    Ogone donne une liste de paramètre à inclure dans le calcule de le clef et le module inclus TOUS les paramètres transmis donc même ceux qui ne sont pas pris en compte pour le calcul de la clef, si cela se confirme, c'est normal que la clef ne soit pas identique a celle envoyé par Ogone.

    Pour la compatibilité ancienne et nouvelle clef, de mon coté ni l'une ou l'autre ne correspond a celle envoyé par Ogone. Donc oui c'est bien mais quand ça fonctionne, calculé deux clef et ne pas avoir de concordance ne sert a rien malheureusement...

    J'ai contacter ogone pour en savoir plus sur le calcule de la clef, j’espère avoir une réponse rapidement.

     

  8. Gilles Boussin


    Vous avez pu constater à de multiples reprises sur ce forum que nous répondons de manière détaillée sur de multiples sujets, et que par ailleurs nous avons fait évoluer PEEL Shopping de manière régulière sur des thématiques qui vous intéressaient.

    Concernant spécifiquement ce sujet sur Ogone : la configuration avec Ogone est effectivement plus compliquée que pour d'autres prestataires de paiement. Que ce soit sur notre module ou un module Ogone pour un autre logiciel, les configurations à faire sont du même ordre. En outre, comme vous l'aurez noté, le nôtre a pour spécificité notamment de permettre le fonctionnement avec un ancien calcul Ogone ou un nouveau alors que les autres modules ne permettaient pas cette compatibilité. Il est toujours possible qu'il y ait de nouvelles configurations possibles chez Ogone que nous n'ayions pas documenté, ce qui est à voir avec leur support si vous le souhaitez.

    Si vous voulez par ailleurs un accompagnement de notre part pour étudier votre cas précis et non pas une discussion d'ordre général sur le produit, cette prestation est payante comme je vous l'indiquais. Cela nécessite que nous ayons accès à votre FTP, administration et compte Ogone et que nous fassions une investigation sérieuse.

    En vous remerciant de votre confiance,

    Cordialement,

    Gilles

  9. ant0ny


    Bonjour,

    Avec vous il n'y a jamais de soucis jusqu'au moment ou je trouverai le problème.

    Depuis le codage du module, il y a probablement eu des modification chez ogone. 

    J'ai mis des capture d’écran de mes paramètres, j'ai suivi a la lettre toutes les indications pour l'installation, j'ai juste l'impression que le site calcule mal la clef sha-out et tous se que vous pouvez faire c'est me dire de me débrouillé ou de payé une intervention. En gros même si c'est un soucis de code, on est juste bon a payé des interventions.

    J'ai pas la possibilité de payé une intervention, je vais donc chercher l'erreur moi même, je regrette finalement l'achat du module, j'aurai du passé chez prestashop et avoir le module gratuitement et développé par Ogone. Payé et devoir se cassé le cul et passé sont temps pour faire fonctionné correctement les choses je trouve pas ça normal.

    Déjà sur mon ancienne version de peel shopping, les cheque cadeau ne fonctionné, pas, solution, changer de version. 
    Les stock même choses, après avoir envoyé 50 messages, il y a eu des modification à apporté.

    Maintenant si personne ne dit jamais rien, effectivement vous risquez pas d'avoir de retour négatif.

    Enfin soit, merci quand même.

  10. Gilles Boussin


    Bonjour,

    La manière dont fonctionne un site web récent est de ne jamais stocker des mots de passe, mais des traces de ces mots de passe, qu'on appelle des hash.

    PEEL utilise une fonction complexe de calcul de hash, qui manipule le mot de passe et s'appuie notamment sur sha256. Il est impossible de retrouver un mot de passe à partir de cette trace, c'est le but de la sécurisation de ce fonctionnement. En quand quelqu'un rentre son mot de passe, on calcule si sa trace peut correspondre à celle stockée en base de données avec un algorithme de comparaison, ce qui empêche de pouvoir retrouver un mot de passe à partir d'un catalogue de traces.

    En conclusion, vous devez générer de nouveaux mots de passe si vous souhaitez créer des comptes sur une nouvelle plateforme différente de PEEL, ou leur créer des comptes sans mots de passe en les invitant par email à faire un processus d'intialisation de mot de passe, ou éventuellement adapter votre nouvelle plateforme pour que la gestion des mots de passe soit identique à PEEL et pouvoir réutiliser la trace (ce qui est volontairement compliqué).

    Gilles

  11. ant0ny


    Je pense qu'il y a un soucis dans le code, au niveau du calcule du sha-out.

    Voici se que le code me donne avec le hashage:

    AAVCHECK=NOMysecretsig1875!?ACCEPTANCE=834715Mysecretsig1875!?AMOUNT=39.29Mysecretsig1875!?BRAND=VISAMysecretsig1875!?CARDNO=XXXXXXXXXXXX4231Mysecretsig1875!?CCCTY=BEMysecretsig1875!?CLUSTER=R2881386024Mysecretsig1875!?CN=Valérie PotvinMysecretsig1875!?CURRENCY=EURMysecretsig1875!?CVCCHECK=OKMysecretsig1875!?ECI=5Mysecretsig1875!?ED=0921Mysecretsig1875!?IP=81.242.172.213Mysecretsig1875!?IPCTY=BEMysecretsig1875!?LAST_VIEWS=a:5:{i:0;i:549;i:1;i:546;i:2;i:776;i:3;i:1276;i:4;i:1147;}Mysecretsig1875!?NCERROR=0Mysecretsig1875!?ORDERID=5208Mysecretsig1875!?PAYID=3131010606Mysecretsig1875!?PAYIDSUB=0Mysecretsig1875!?PM=CreditCardMysecretsig1875!?PROJEKKTORPLAYERTRACKING_PRKUSRUUID=B9C5ACBC-A85D-4F94-B522-7852991968D7Mysecretsig1875!?SCO_CATEGORY=OMysecretsig1875!?SID9C72A6FD=15eb41d891bed0958caca1d38cfcbaec6d77af44Mysecretsig1875!?STATUS=9Mysecretsig1875!?TRXDATE=08/08/16Mysecretsig1875!?VC=NOMysecretsig1875!?__ATSSC=facebook;1Mysecretsig1875!?__ATUVC=18|28,20|29,0|30,43|31,1|32Myse cretsig1875!?   

    Se qui donne ceci:

    8F19EDF6868272FD209E2BBFA0E79D7870223FC3   

    Alors que ogone transmet ceci:

    Array
    (
    [orderID] => 5208
    [currency] => EUR
    [amount] => 39.29
    [PM] => CreditCard
    [ACCEPTANCE] => 834715
    [STATUS] => 9
    [CARDNO] => XXXXXXXXXXXX4231
    [ED] => 0921
    [CN] => Valérie Potvin
    [TRXDATE] => 08/08/16
    [PAYID] => 3131010606
    [PAYIDSUB] => 0
    [NCERROR] => 0
    [BRAND] => VISA
    [IPCTY] => BE
    [CCCTY] => BE
    [ECI] => 5
    [CVCCheck] => OK
    [AAVCheck] => NO
    [VC] => NO
    [SCORING] =>
    [SCO_CATEGORY] => O
    [IP] => 81.242.172.213
    [SHASIGN] => 926427061D5F7322C522154500DC526B54A57119
    [cluster] => R2881386024
    [projekktorplayertracking_prkusruuid] => B9C5ACBC-A85D-4F94-B522-7852991968D7
    [__atssc] => facebook;1
    [last_views] => a:5:{i:0;i:549;i:1;i:546;i:2;i:776;i:3;i:1276;i:4;i:1147;}
    [__atuvc] => 18|28,20|29,0|30,43|31,1|32
    [sid9c72a6fd] => 15eb41d891bed0958caca1d38cfcbaec6d77af44
    [STR_BRAND] =>
    )

    Resultat, la clef SHA-OUT calculé par le site n'est pas égale a celle envoyé par ogone.

    sha out old
    30071F71BB34DC39B24237F8C6B1B921F64FEFAC

    sha out new
    8F19EDF6868272FD209E2BBFA0E79D7870223FC3

    test1
    8f19edf6868272fd209e2bbfa0e79d7870223fc3 egale 926427061d5f7322c522154500dc526b54a57119

    ou test2
    30071f71bb34dc39b24237f8c6b1b921f64fefac egale 926427061d5f7322c522154500dc526b54a57119

     

    Ogone nous dit ceci:

    Important Vous devez utiliser une signature SHA-OUT pour vérifier le contenu de la demande lorsque vous utilisez cette option pour empêcher que les clients falsifient les renseignements dans le champ URL et causent une mise à jour incorrecte de la base de données. Si vous ne configurez pas de signature SHA-OUT dans votre compte, la liste de paramètres ne sera pas transmise dans nos requêtes sur vos URL. La chaîne est créée en concaténant les valeurs des champs envoyés avec la commande (triés par ordre alphabétique, dans le format ‘paramètre =valeur’), séparés par une clé. Cette clé est définie dans les Informations techniques du marchand, sous l’onglet “Retour d’Information sur la transaction”, section “Tous les modes de soumission des transactions.” Pour obtenir la liste complète des paramètres à inclure dans le condensé SHA, veuillez vous reporter à l’Annexe 1. Veuillez noter que ces valeurs sont toutes sensibles à la casse. Tout comme nous récréons le condensé pour valider l’input de la transaction avec le SHA-IN, vous devez reconstruire le hachage, en utilisant cette fois la phrase passe SHA-OUT et les paramètres obtenus de notre système. Si le résultat n’est pas identique, il se pourrait que les paramètres de la demande aient été modifiés. Cette vérification permet de d’assurer de l’exactitude et de l’intégrité des valeurs de paramètre envoyées dans la requête. 

    Attention Tous les paramètres envoyés (et qui apparaissent dans la liste dans Annexe: Paramètres à inclure dans le calcul SHA), seront inclus dans la chaîne. Tous les paramètres doivent être classés en ordre alphabétique Les paramètres qui n'ont pas de valeur ne doivent PAS être inclus dans la chaîne Lorsque vous souhaitez transférer votre compte de Test vers l’environnement de production en utilisant le lien disponible dans le back-office, une signature SHA-OUT aléatoire sera automatiquement configurée dans votre compte de production Même si certains paramètres sont (partiellement) envoyés en minuscules par notre système, lors du calcul du SHA-OUT tous les paramètres doivent être mis en majuscules. Pour plus de sécurité, nous vous demandons d'utiliser des mots de passe SHA différents pour TEST et PROD. Remarquez que s'ils sont identiques, votre mot de passe TEST sera modifié par notre système (vous en serez évidemment averti)

     

    Et voici la liste des parametres a inclure dans le calcule du sha out selon ogone:

    SHA-OUT

    AAVADDRESS

    AAVCHECK

    AAVMAIL

    AAVNAME

    AAVPHONE

    AAVZIP

    ACCEPTANCE

    ALIAS

    AMOUNT

    BIC

    BIN

    BRAND

    CARDNO

    CCCTY

    CN

    COLLECTOR_BIC

    COLLECTOR_IBAN

    COMPLUS

    CREATION_STATUS

    CREDITDEBIT

    CURRENCY

    CVCCHECK

    DCC_COMMPERCENTAGE

    DCC_CONVAMOUNT

    DCC_CONVCCY

    DCC_EXCHRATE

    DCC_EXCHRATESOURCE

    DCC_EXCHRATETS

    DCC_INDICATOR

    DCC_MARGINPERCENTAGE

    DCC_VALIDHOURS

    DEVICEID

    DIGESTCARDNO

    ECI

    ED

    EMAIL

    ENCCARDNO

    FXAMOUNT

    FXCURRENCY

    IP

    IPCTY

    MANDATEID

    MOBILEMODE

    NBREMAILUSAGE

    NBRIPUSAGE

    NBRIPUSAGE_ALLTX

    NBRUSAGE

    NCERROR

    ORDERID

    PAYID

    PAYMENT_REFERENCE

    PM

    SCO_CATEGORY

    SCORING

    SEQUENCETYPE 

    SIGNDATE

    STATUS

    SUBBRAND

    SUBSCRIPTION_ID

    TRXDATE

    VC

    Il y a donc des parametre pris par le site qui ne sont pas dans cette liste.

    J'ai essayé plusieurs combinaison que j'ai encodé en sha1 mais je tombe jamais sur la meme clef que ogone...

    Merci de m'aidé car j'ai acheter le module et ça devrai être bon normalement...

    Merci.

  12. xeon


    J'ai trouvé pour le menu de gauche, fichier display_product : J'ai supprimé la clause where et c'est ok.

            $sql = 'SELECT c.id, c.parent_id, c.nom_' . $_SESSION['session_langue'] . ' as nom

                FROM peel_categories c

                /* WHERE c.etat = "1" */

                ORDER BY c.position ASC, nom ASC';

     

    Et pour les pages du front office, même fichier, avec AND etat="1" en commentaire

    function get_subcategories_table($parent_id, $nb_colonnes, $return_mode = false, $display_image = true)

        {

            $output = '';

                    $qid_c = query('SELECT id, nom_' . $_SESSION['session_langue'] . ', description_' . $_SESSION['session_langue'] . ', parent_id, image_' . $_SESSION['session_langue'] . ' AS image

                FROM peel_categories

                WHERE parent_id="' . intval($parent_id) . '" AND id>"0" /* AND etat="1" */

                ORDER BY nom_' . $_SESSION['session_langue']);

     

     

    Par contre quand vous parlez d'incohérence, de quoi s'agirait-il plus précisément ?

  13. Gilles Boussin


    Bonjour,

    J'imagine d'après ce message d'erreur :

    - soit un problème d'espace disque ou de droits en écriture du dossier cache/ => à vérifier par vous ou votre hébergeur

    - soit un autre problème : l'utilisation de firebug sur firefox peut peut-être vous donner des informations sur l'exécution du javascript qui appelle en ajax l'upload

  14. neomega


    bonjour,

    peel 8.0.3

    c'est la première fois que je me heurte a ce problème

    quant j'essayer de mettre une photo " n importe ou dans le site article rubrique produits etc" 

    j'ai ce message : fichier joint

     

     

    - site sur serveur espagnol install classique sans premium

     

    est ce que sa peut venir de l'installation qui s'est mal passé? ou du serveur ??

     

    merci par avance

    images.JPG

  15. Gilles Boussin


    Bonjour,

    Lorsqu'on est connecté en tant qu'administrateur, on peut voir la page d'une catégorie inactive, pour voir son rendu avant de l'activer. Sur la page d'édition de la catégorie dans l'administration, un lien est présent en haut de page vers la page de la catégorie en front-office.

    Concernant les autres pages qui pourraient pointer vers cette catégorie ailleurs sur le site en front-office, la catégorie inactive n'apparaît pas pour éviter des problèmes d'incohérence et de mise en cache éventuel.

    Gilles

Twitter Advisto ecommerce

Facebook PEEL Shopping