toutati | 23 Apr 16:36 2012
Picon

A propos de paypal_ipn

Pour memo/ticket ou si qqun a une idée :)

blem avec recuperer_page

Le retour de action_paypal_ipn peut être false car recuperer_page semble 
se planter.
Je n'ai pas encore trouvé pour quelle raison, et la commande, même 
payée, va donc rester en cours.
Il faut la valider manuellement en recevant la confirmation mail envoyée 
par paypal…

http://zone.spip.org/trac/spip-zone/browser/_plugins_/paypal/action/paypal_ipn.php?rev=60158#L27

$retour = recuperer_page($url, false, false, 1048576, $datas);

++
touti

RastaPopoulos | 23 Apr 16:49 2012

Re: A propos de paypal_ipn

À vérifier quand même : n'est-ce pas dû à la modification dont on parle 
avec Yffic qui a modifié les chemins des metas, et qui fait qu'ensuite 
une personne a modifié l'action IPN pour changer le chemin ?

Du coup si on avait l'ancien enregistrement (même meta + casiers) mais 
le nouveau fichier IPN (différentes metas) alors ça ne trouve jamais les 
URLs, et donc recuperer_page se plante.

Il faut donc vraiment remettre comment avant (tout dans la même meta).

--

-- 
RastaPopoulos

toutati | 23 Apr 17:13 2012
Picon

Re: A propos de paypal_ipn

Le 23/04/12 16:49, RastaPopoulos a écrit :
> À vérifier quand même : n'est-ce pas dû à la modification dont on 
> parle avec Yffic qui a modifié les chemins des metas, et qui fait 
> qu'ensuite une personne a modifié l'action IPN pour changer le chemin ?
>
> Du coup si on avait l'ancien enregistrement (même meta + casiers) mais 
> le nouveau fichier IPN (différentes metas) alors ça ne trouve jamais 
> les URLs, et donc recuperer_page se plante.
>
> Il faut donc vraiment remettre comment avant (tout dans la même meta).
>
Non, ce ne semble pas être le problème, puisque cela marche bien 7 fois 
sur 10 environ,
ça facilite pas le debug car ça n'arrive pas souvent,
mais le retour=false est bien là dans le paypal.log quand ça plante

++
touti
Yffic | 23 Apr 17:30 2012

Re: A propos de paypal_ipn

Faut aussi voir les logs dans le spip_prive...
http://core.spip.org/projects/spip/repository/revisions/19291/entry/branches/spip-2.1/ecrire/inc/distant.php#L198

Ca serait bien d'ailleurs de tracer toutes les variables dans le log 
d'erreur ligne 204

Le 23/04/2012 17:13, toutati a écrit :
> Le 23/04/12 16:49, RastaPopoulos a écrit :
>> À vérifier quand même : n'est-ce pas dû à la modification dont on 
>> parle avec Yffic qui a modifié les chemins des metas, et qui fait 
>> qu'ensuite une personne a modifié l'action IPN pour changer le chemin ?
>>
>> Du coup si on avait l'ancien enregistrement (même meta + casiers) 
>> mais le nouveau fichier IPN (différentes metas) alors ça ne trouve 
>> jamais les URLs, et donc recuperer_page se plante.
>>
>> Il faut donc vraiment remettre comment avant (tout dans la même meta).
>>
> Non, ce ne semble pas être le problème, puisque cela marche bien 7 
> fois sur 10 environ,
> ça facilite pas le debug car ça n'arrive pas souvent,
> mais le retour=false est bien là dans le paypal.log quand ça plante
>
> ++
> touti
> _______________________________________________
> spip-zone <at> rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
>

--

-- 
(Continue reading)

touti | 23 Apr 17:59 2012
Picon

Re: A propos de paypal_ipn

Le 23/04/12 17:30, Yffic a écrit :
> Faut aussi voir les logs dans le spip_prive...
> http://core.spip.org/projects/spip/repository/revisions/19291/entry/branches/spip-2.1/ecrire/inc/distant.php#L198

J'avais tenté bien sûr de les lire (recuperer page recommence sur), mais 
ce retour de paiement avec le paypal_ipn foiré date déjà de vendredi… et 
ses logs n'existent plus!

grr, cela fait 1 mois que je tente de tracer cette erreur , qui n'est 
pas invalidante heureusement

pourtant le $POST du ping paypal n'est pas vide, peut-être un problème 
de $datas envoyées à paypal qui ne les comprends pas?

l'enquête se poursuit!
++
touti

Yffic | 23 Apr 18:11 2012

Re: A propos de paypal_ipn

Modifie l'ecriture du log en tracant toutes les variables et envoie dans 
un autre fichier ?

Le 23/04/2012 17:59, touti a écrit :
> Le 23/04/12 17:30, Yffic a écrit :
>> Faut aussi voir les logs dans le spip_prive...
>>
http://core.spip.org/projects/spip/repository/revisions/19291/entry/branches/spip-2.1/ecrire/inc/distant.php#L198 
>>
>
> J'avais tenté bien sûr de les lire (recuperer page recommence sur), 
> mais ce retour de paiement avec le paypal_ipn foiré date déjà de 
> vendredi… et ses logs n'existent plus!
>
> grr, cela fait 1 mois que je tente de tracer cette erreur , qui n'est 
> pas invalidante heureusement
>
> pourtant le $POST du ping paypal n'est pas vide, peut-être un problème 
> de $datas envoyées à paypal qui ne les comprends pas?
>
> l'enquête se poursuit!
> ++
> touti
>
>
> _______________________________________________
> spip-zone <at> rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
>

--

-- 
(Continue reading)

touti | 23 Apr 17:50 2012
Picon

Re: A propos de paypal_ipn

Le 23/04/12 16:49, RastaPopoulos a écrit :
> À vérifier quand même : n'est-ce pas dû à la modification dont on parle
> avec Yffic qui a modifié les chemins des metas, et qui fait qu'ensuite
> une personne a modifié l'action IPN pour changer le chemin ?
>
> Du coup si on avait l'ancien enregistrement (même meta + casiers) mais
> le nouveau fichier IPN (différentes metas) alors ça ne trouve jamais les
> URLs, et donc recuperer_page se plante.
>
> Il faut donc vraiment remettre comment avant (tout dans la même meta).
>

D'ailleurs, je ne vois pas pourquoi
https://www.paypal.com/fr/cgi-bin/webscr?cmd=_notify-validate
renvoie bien INVALID
alors que si on donne cette url à recuperer_page, cela ne renvoie rien

etrange, non?

<?php

$conf = lire_config('paypal/');
	$envr = $conf['environnement'];
	
	if ($envr == 'test') {
		$account = lire_config('paypal_api_test/account');
		$url = "https://www.sandbox.paypal.com/cgi-bin/webscr";
	} else {
		$account = lire_config('paypal_api_prod/account');
		$url = "https://www.paypal.com/cgi-bin/webscr";
(Continue reading)

toutati | 23 Apr 18:56 2012
Picon

Re: A propos de paypal_ipn

Hum, en suivant

http://www.geekality.net/2011/05/28/php-tutorial-paypal-instant-payment-notification-ipn/

On pourrait utiliser Curl à la place de recuperer_page, Rastapopoulos 
qu'en penses-tu?

Au moins Curl renvoie bien INVALID avec un simple  $datas['cmd'] = 
"_notify-validate";

$request = curl_init();
curl_setopt_array($request, array
(
     CURLOPT_URL => $url,
     CURLOPT_POST => TRUE,
     CURLOPT_POSTFIELDS => http_build_query($datas),
     CURLOPT_RETURNTRANSFER => TRUE,
     CURLOPT_HEADER => FALSE,
     CURLOPT_SSL_VERIFYPEER => TRUE,
));

// Execute request and get response and status code
$response = curl_exec($request);

// Close connection
curl_close($request);

echo "Le retour de paypal est $response";

++
(Continue reading)

Cédric Morin | 23 Apr 19:03 2012

Re: A propos de paypal_ipn

Attention, tous les serveurs et PHP ne disposent pas de Curl...
Le 23 avr. 2012 à 18:56, toutati a écrit :

> Hum, en suivant
> 
> http://www.geekality.net/2011/05/28/php-tutorial-paypal-instant-payment-notification-ipn/
> 
> On pourrait utiliser Curl à la place de recuperer_page, Rastapopoulos qu'en penses-tu?
> 
> Au moins Curl renvoie bien INVALID avec un simple  $datas['cmd'] = "_notify-validate";
> 
> $request = curl_init();
> curl_setopt_array($request, array
> (
>    CURLOPT_URL => $url,
>    CURLOPT_POST => TRUE,
>    CURLOPT_POSTFIELDS => http_build_query($datas),
>    CURLOPT_RETURNTRANSFER => TRUE,
>    CURLOPT_HEADER => FALSE,
>    CURLOPT_SSL_VERIFYPEER => TRUE,
> ));
> 
> // Execute request and get response and status code
> $response = curl_exec($request);
> 
> // Close connection
> curl_close($request);
> 
> echo "Le retour de paypal est $response";
> 
(Continue reading)

toutati | 23 Apr 19:10 2012
Picon

Re: A propos de paypal_ipn

Le 23/04/12 19:03, Cédric Morin a écrit :
> Attention, tous les serveurs et PHP ne disposent pas de Curl...
groumpf, merci Cedric, faut laisser tomber Curl alors
amha recuperer_page est trop compliquée (normal pour tout ce que fait 
cette fonction)
tu connais autre chose d'équivalent dans sa simplicité?
++
touti

Cédric Morin | 23 Apr 19:35 2012

Re: A propos de paypal_ipn


Le 23 avr. 2012 à 19:10, toutati a écrit :

> Le 23/04/12 19:03, Cédric Morin a écrit :
>> Attention, tous les serveurs et PHP ne disposent pas de Curl...
> groumpf, merci Cedric, faut laisser tomber Curl alors
> amha recuperer_page est trop compliquée (normal pour tout ce que fait cette fonction)

recuperer_page est compliquée parce que justement elle gère la diversité des configurations
possibles, et assure de fonctionner dans tous les cas...
Ton problème est ici que l'url est en https:// :  pour que recuperer_page puisse fonctionner il faut
mod_ssl sur le serveur, ce qui n'est pas le cas de tous les serveurs.... (en particulier en local, oui ces
histoires de configuration serveur sont vraiment pénibles)

Je me souviens que j'avais commis le truc ci-dessous quand j'étais tombé sur ce problème : une fonction
qui prend juste $url et $data et utilise soit CURL soit recuperer_page pour faire le POST.
Si ça peut te rendre service...

A utiliser avec
$bank_recuperer_post_https_dist = charger_fonction('bank_recuperer_post_https','inc');
list($response,$erreur,$erreur_msg) = $bank_recuperer_post_https_dist($API_Endpoint,$nvpreq);

et dans inc/bank_recuperer_post_https.php ($datas peut etre soit un tableau clé=>valeur, soit une
chaine de get "&cle=valeur&..." ) :

<?php
/*
 * Banque
 * transaction, paiement
 *
(Continue reading)


Gmane