Problème PAYPAL en PHP

Résolu/Fermé
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 - 16 févr. 2020 à 04:53
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 - 16 févr. 2020 à 17:04
Bonjour/Bonsoir,

J'ai un petit problème au niveau de paypal.

Paypal créer un tableau array auquel il y a toutes les données dedans sur la commande que le client passe mais le problème c'est que je souhaiterai récupérer juste certaine valeur de ce tableau comme par exemple l'adresse de facturation les articles le montant ainsi de-suite je vais vous mettre l'exemple du tableau de paypal

a:47:{s:8:"mc_gross";s:4:"3.60";s:22:"protection_eligibility";s:8:"Eligible";s:14:"address_status";s:9:"confirmed";s:12:"item_number1";s:1:"1";s:12:"item_number2";s:1:"2";s:8:"payer_id";s:13:"FM8AQW2D6PY";s:14:"address_street";s:36:"Adresse postale";s:12:"payment_date";s:25:"17:02:14 Feb 15, 2020 PST";s:14:"payment_status";s:9:"Completed";s:7:"charset";s:12:"windows-1252";s:11:"address_zip";s:5:"34350";s:10:"first_name";s:6:"Ga?tan";s:6:"mc_fee";s:4:"0.45";s:20:"address_country_code";s:2:"FR";s:12:"address_name";s:13:"Ga?tan NOM";s:14:"notify_version";s:3:"3.9";s:6:"custom";s:9:"user_id=1";s:12:"payer_status";s:8:"verified";s:8:"business";s:23:"test@test.test";s:15:"address_country";s:6:"France";s:14:"num_cart_items";s:1:"2";s:12:"address_city";s:12:"VILLE";s:11:"verify_sign";s:56:"Alwptk5ifJFI7pjeuAf-u7ifb3KRFye2Ru";s:11:"payer_email";s:26:"mail.mail@mail.mail";s:6:"txn_id";s:17:"7Y28210T";s:12:"payment_type";s:7:"instant";s:9:"last_name";s:6:"NOM";s:13:"address_state";s:0:"";s:10:"item_name1";s:17:"ECRAN ASUS VK193D";s:14:"receiver_email";s:23:"test@test.test";s:10:"item_name2";s:17:"Acer aspire M1100";s:11:"payment_fee";s:0:"";s:17:"shipping_discount";s:4:"0.00";s:9:"quantity1";s:1:"2";s:16:"insurance_amount";s:4:"0.00";s:9:"quantity2";s:1:"1";s:11:"receiver_id";s:13:"PDL8AEN";s:8:"txn_type";s:4:"cart";s:8:"discount";s:4:"0.00";s:10:"mc_gross_1";s:4:"2.40";s:11:"mc_currency";s:3:"EUR";s:10:"mc_gross_2";s:4:"1.20";s:17:"residence_country";s:2:"FR";s:15:"shipping_method";s:7:"Default";s:19:"transaction_subject";s:0:"";s:13:"payment_gross";s:0:"";s:12:"ipn_track_id";s:13:"4beadb475a1e4";}


voila ce qui ce met dans ma base de données c'est vraiment pas clair tout ce texte.

Comment on pourrait faire pour récupérer juste que les valeurs que je souhaite s'il vous plaît ?

Cordialement.
A voir également:

4 réponses

jordane45 Messages postés 38216 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 juin 2024 4 679
Modifié le 16 févr. 2020 à 08:54
Bonjour
Les données sont serialisees
Il suffit donc de faire un
$result = unserialize($lesdatas); 
 


Ensuite, result sera un array... Tu pourras donc facilement recuperer les données voulues


1
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 7
16 févr. 2020 à 11:54
Bonjour merci infiniment mais comment savoir le nom du champs adresse postale par exemple
et faut il que je le mette dans une boucle au cas ou le client commende deux articles ou cela vas se faire automatiquement ?

Exemple : quand on achète deux articles dans ma boutique cela créer item_name1 = ordinateur ACER et item_name2 = Ecran.

Du coup je suppose que dans ma base de données pour que les deux items se récupère il faut que je les mette dans un while mais je dois avouer que je ne sais pas par ou commencer.

Cordialement.
0
jordane45 Messages postés 38216 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 juin 2024 4 679
16 févr. 2020 à 11:57
Oulaaaa....
Tu connais les array en php ?
Si je te parle d'array associatif..ça ne te dit rien ?

Par exempe
$arr = array("a"=>"test","x"=>"rere");

$valeur_de_x = !empty($arr['x']) ? $arr['x'] : NULL;
echo " La valeur de x est donc :" . $valeur_de_x;

0
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 7 > jordane45 Messages postés 38216 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 juin 2024
16 févr. 2020 à 12:17
Très sincèrement j'ai déjà entendu les array mais non je sais pas vraiment m'en servir merci en tout cas de ton aide je vais essayer de me débrouiller avec ça sinon je reviendrais vers toi.

En tout cas merci beaucoup.
0
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 7
Modifié le 16 févr. 2020 à 14:32
Rebonjour,
Alors après plusieurs essaie que j'ai fais je pense que j'emploie mal les arrays :(

Voila ce que j'aimerai mettre dans ma base de données :

id, user_id, prenom, nom, payer_email, article, quantiter, prix_ttc, devise, status_paiement, adresse_name, adresse_postale, ville, pays, date_paiement, moyen_paiement.

J'ai un fichier qui comprend un exemple de ce que paypal récupère :

Array
(
    [mc_gross] => 29.99
    [protection_eligibility] => Ineligible
    [address_status] => unconfirmed
    [item_number1] => 45
    [payer_id] => 49XBH7E2Q
    [tax] => 0.00
    [address_street] => Adresse 5oi
    [payment_date] => 12:02:03 Dec 15, 2012 PST
    [payment_status] => Completed
    [charset] => windows
    [address_zip] => 750
    [mc_shipping] => 0.00
    [mc_handling] => 0.00
    [first_name] => LUCAS
    [mc_fee] => 1.27
    [address_country_code] => FR
    [address_name] => ADresse
    [notify_version] => 3.7
    [custom] => user_id=
    [payer_status] => verified
    [business] => mail@mail.mail
    [address_country] => France
    [num_cart_items] => 1
    [mc_handling1] => 0.00
    [address_city] => VS
    [verify_sign] => Akwf23o1KcTWiLEk-uTGkX46vlJ
    [payer_email] => clients@clients.clients
    [mc_shipping1] => 0.00
    [tax1] => 0.00
    [txn_id] => 96282240217
    [payment_type] => instant
    [last_name] => DELC
    [address_state] => Franca
    [item_name1] => Magic mouse
    [receiver_email] => mail@mail.mail
    [payment_fee] => 
    [quantity1] => 1
    [receiver_id] => ZWUP4QK6
    [txn_type] => cart
    [mc_gross_1] => 29.99
    [mc_currency] => EUR
    [residence_country] => FR
    [test_ipn] => 1
    [transaction_subject] => user_id=
    [payment_gross] => 
    [ipn_track_id] => ff0b2730
)




Ma question est la suivante : comment adapter le array que tu m'as donner ?

Si je résume je dois faire un truc du genre :


$prenom = $_POST['first_name'];
$nom = $_POST['last_name'];
$payer_email = $_POST['payer_email'];
$item_name = $_POST['item_name'];
$item_number = $_POST['item_number'];
$payment_amount = $_POST['mc_gross'];
$payment_currency = $_POST['mc_currency'];
$payment_status = $_POST['payment_status'];
$adresse_name = $_POST['address_name'];
$adresse_street = $_POST['address_street'];
$adresse_city = $_POST['address_city'];
$adresse_country = $_POST['address_country'];
$uid = $custom['user_id'];

$result = unserialize($_POST);


$arr = array("first_name"=>$prenom,"last_name"=>$nom);
ainsi de suite

$valeur_de_x = !empty($arr['x']) ? $arr['x'] : NULL;
echo " La valeur de x est donc :" . $valeur_de_x;






$db->query("INSERT INTO commande (user_id,prenom,nom,payer_email,article,quantiter,prix_ttc,devise,status_paiement,adresse_name,adresse_postale,ville,pays,date_paiement,moyen_paiement) VALUES (".$uid.",".$prenom.",".$nom.",".$payer_email.",".$item_name.",".$item_number.",".$payment_amount.",".$payment_currency.",".$payment_status.",".$adresse_name.",".$adresse_street.",".$adresse_city.",".$adresse_country.",NOW(),'".$txn_type."')");





est-ce que je me suis trompé à quelque part ?

Cordialement.
0
jordane45 Messages postés 38216 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 juin 2024 4 679
16 févr. 2020 à 14:57
On va reprendre au début ....
D'où viennent les données que tu nous as montré au départ

a:47:{s:8:"mc_gross";s:4:"3.60";s:22:"protection_eligibility";s:8:"Eligible";s:14:"address_status";s:9:"confirmed";s:12:"item_number1";s:1:"1";s:12:"item_number2";s:1:"2";s:8:"payer_id";s:13:"FM8AQW2D6PY";s:14:"address_street";s:36:"Adresse postale";s:12:"payment_date";s:25:"17:02:14 Feb 15, 2020 PST";s:14:"payment_status";s:9:"Completed";s:7:"charset";s:12:"windows-1252";s:11:"address_zip";s:5:"34350";s:10:"first_name";s:6:"Ga?tan";s:6:"mc_fee";s:4:"0.45";s:20:"address_country_code";s:2:"FR";s:12:"address_name";s:13:"Ga?tan NOM";s:14:"notify_version";s:3:"3.9";s:6:"custom";s:9:"user_id=1";s:12:"payer_status";s:8:"verified";s:8:"business";s:23:"test@test.test";s:15:"address_country";s:6:"France";s:14:"num_cart_items";s:1:"2";s:12:"address_city";s:12:"VILLE";s:11:"verify_sign";s:56:"Alwptk5ifJFI7pjeuAf-u7ifb3KRFye2Ru";s:11:"payer_email";s:26:"mail.mail@mail.mail";s:6:"txn_id";s:17:"7Y28210T";s:12:"payment_type";s:7:"instant";s:9:"last_name";s:6:"NOM";s:13:"address_state";s:0:"";s:10:"item_name1";s:17:"ECRAN ASUS VK193D";s:14:"receiver_email";s:23:"test@test.test";s:10:"item_name2";s:17:"Acer aspire M1100";s:11:"payment_fee";s:0:"";s:17:"shipping_discount";s:4:"0.00";s:9:"quantity1";s:1:"2";s:16:"insurance_amount";s:4:"0.00";s:9:"quantity2";s:1:"1";s:11:"receiver_id";s:13:"PDL8AEN";s:8:"txn_type";s:4:"cart";s:8:"discount";s:4:"0.00";s:10:"mc_gross_1";s:4:"2.40";s:11:"mc_currency";s:3:"EUR";s:10:"mc_gross_2";s:4:"1.20";s:17:"residence_country";s:2:"FR";s:15:"shipping_method";s:7:"Default";s:19:"transaction_subject";s:0:"";s:13:"payment_gross";s:0:"";s:12:"ipn_track_id";s:13:"4beadb475a1e4";}


Ces données, sont une string serialisée ...
Donc pour les transformer en array il faut faire un unserialize
$datas = unserialize($tavariablevenantdepayapal);  // transforme en array les données serialisées
print_r($datas) ; // pour voir ce que contient l'array

et ensuite
$mc_gros = !empty($datas['mc_gros']) ? $datas['mc_gros'] : NULL;  //récupère la valeur contenu dans l'array datas et ayant pour clé mc_gros
0
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 7 > jordane45 Messages postés 38216 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 juin 2024
16 févr. 2020 à 16:00
Les valeurs que j'ai données au tout débuts sont stocké dans une variable $datas.

En clair j'ai regarder un tuto pour me servir de paypal et j'essaie de modifier pour obtenir mon résultat souhaité.
dans le tuto que j'ai suivi on insère une ligne dans la table orders

$db->query("INSERT INTO orders (user_id,amount,created,datas,txn_id) VALUES (".$uid.",".$payment_amount.",NOW(),'".$data."','".$txn_id."')");


ceci fonctionne parfaitement mais mois au lieu de $data je souhaiterai rajouter d'autre colonne ce qui est fait mais surtout de pouvoir récupérer juste ce que je veux comme le nom de l'article quantité tarif et les infos du client.
Puis d'insérer le tout dans la bdd.

Merci vraiment de ton aide.
0
jordane45 Messages postés 38216 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 27 juin 2024 4 679 > Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024
16 févr. 2020 à 16:50

Les valeurs que j'ai données au tout débuts sont stocké dans une variable $datas

Donc je suis tombé juste avec mon exemple


pouvoir récupérer juste ce que je veux comme le nom de l'article quantité tarif et les infos du client.

Donc, en reprenant mon exemple, tu peux récupérer chaque variable.... et les utiliser pour faire ta requête d'insertion dans ta bdd.

Donc tout devrait être bon maintenant.
0
Programming_018 Messages postés 108 Date d'inscription vendredi 13 janvier 2017 Statut Membre Dernière intervention 7 mai 2024 7
16 févr. 2020 à 17:04
D'accord parfait merci infiniment pour ton aide ! je vais voir si j'y arrive XD
Bonne fin de journée.
Cordialement.
0