web-dev-qa-db-fra.com

Paypal IPN renvoie toujours "payment_status: Pending" sur le bac à sable?

J'essaie d'implémenter Paypal sur mon site web.

J'utilise cette classe: http://www.micahcarrick.com/php-Paypal-ipn-integration-class.html

En ce moment, je teste avec le bac à sable Paypal. 

Voici le problème:

  1. L'utilisateur effectue le paiement - ok
  2. L'utilisateur revient sur mon site avec succès - ok
  3. Après quelques secondes, Paypal appelle mon site Web avec IPN - ok
  4. Ma classe a réussi à valider les données IPN entrantes.
  5. Paypal renvoie "payment_status: Pending" 

Je ne sais pas pourquoi Paypal IPN rappelle avec le statut de paiement "en attente"?

Est-ce que quelqu'un sait ce que je fais mal?

55
marc

Lorsque vous êtes connecté à votre compte professionnel test, accédez manuellement à: 

https://www.sandbox.Paypal.com/ca/cgi-bin/?cmd=_profile-pref&source=acct_setup&fli=true

Vous pourriez normalement y arriver en passant par votre "Configuration de mon entreprise" mais actuellement, il redirige vers Paypal en direct (même s'il se trouve dans le bac à sable).

Une fois que vous êtes sur cette page, remplacez "Paiements en bloc qui me sont envoyés dans une devise que je ne détient pas" par "Non, acceptez-les et convertissez-les en ...".

De plus, n'oubliez pas de confirmer votre compte professionnel à l'aide de l'interface frontale Paypal Sandbox et de la section "E-mail de test" de l'API.

48
Wes Hanney

Mon problème était que mon compte marchand sandbox a été créé en tant qu'utilisateur britannique (et en GBP comme devise). Lorsque j'essayais d'exécuter des commandes en couronnes danoises (DKK), cela me disait que l'achat était "non réclamé" du point de vue du commerçant. Dès qu'une commande en DKK a été acceptée et que j'ai choisi de créer une nouvelle devise en DKK, IPN m'a envoyé tous les messages "payment_status = completed".

16
h2ooooooo

Après avoir traité ce problème un peu et Paypal changer l'interface utilisateur,

Voici les instructions exactes du Support Technique Paypal Merchant:

Merci de contacter le support technique marchand.

Essayez de suivre les instructions ci-dessous pour désactiver la fonction de vérification des paiements pour votre compte Sandbox:

  • Aller sur Site Web du développeur Paypal
  • Connectez-vous à votre compte développeur
  • Cliquez sur Applications
  • Cliquez sur les comptes Sandbox
  • Cliquez sur l'adresse de messagerie pour laquelle vous souhaitez désactiver l'option de vérification des paiements, puis cliquez sur Profil une fois développé.
  • Cliquez sur Paramètres
  • Et sélectionnez Désactivé pour l'examen du paiement.
  • Cliquez sur Fermer

!!! Assurez-vous de le faire sur votre compte Paypal SandBox Merchant!

Et voilà à quoi ça ressemble:

enter image description here

10
Jadeye

Vous pouvez le résoudre en suivant les instructions suivantes.

  1. Connectez-vous à votre centre de développement.

  2. Cliquez sur l'onglet Test Accounts à gauche. Vous devriez avoir créé ces comptes de test pour tester sur Sandbox.

  3. Recherchez la colonne "Vérification du paiement".

  4. Recherchez le compte sandbox que vous utilisez et cliquez sur «Activé» dans la colonne «Vérification des paiements».

  5. Cela devrait passer à «Désactivé» et les paiements financés à partir de votre solde et de votre carte de crédit seront désormais terminés instantanément.

8
mouhammed

Deux raisons possibles:

1. le compte du vendeur a l'option d'accepter ou de refuser le paiement

Dans ce cas, vous devez vous connecter en tant que vendeur et accepter le paiement. Vous obtiendrez un autre IPN avec payment_status = Completed.

Pas:

  1. connectez-vous à votre centre de développement
  2. appuyez sur "comptes de test" sur la gauche
  3. sélectionnez le compte du vendeur et appuyez sur "Entrer sur le site de test du bac à sable" en bas
  4. Vous devriez voir le tableau de bord du vendeur avec l'option d'accepter ou de refuser tout paiement (vous devrez peut-être vous reconnecter à cette étape en utilisant les informations d'identification du compte de test du vendeur).

2. La vérification du paiement est activée

Solution: 

  1. Connectez-vous à votre centre de développement.
  2. Cliquez sur l'onglet Test Accounts à gauche. Vous devriez avoir créé ces comptes de test pour tester sur Sandbox.
  3. Recherchez la colonne "Vérification du paiement".
  4. Recherchez le compte sandbox que vous utilisez et cliquez sur «Activé» dans la colonne «Vérification des paiements».

Cela devrait passer à «Désactivé» et les paiements financés à partir de votre solde et de votre carte de crédit seront désormais terminés instantanément.

7
  1. J'ai fait modifierAllow payments sent to me in a currency I do not hold à Yes dans tous les comptes d'utilisateur dans le bac à sable, mais cela ne fonctionnait toujours pas. 

  2. J'ai également essayé de créer les mêmes devises dans le formulaire Paypal et pour les comptes d'utilisateurs sandbox ici Rendre la nouvelle devise principale. Conversion de l'argent dans la nouvelle monnaie. Toujours pas de succès.

  3. Ensuite, j'ai remarqué la dernière phrase de la réponse de Wes Hanney: "confirmez votre compte professionnel en utilisant le frontal Paypal Sandbox". _ { Essayer ceci _ n'a pas fonctionné non plus.

  4. M.G. Palmer a suggéré dans sa réponse de créer un compte marchand allemand. N'a pas travaillé non plus.


Quelle galère! 

Après une heure, alors que j'étais sur le point de jeter le PC par la fenêtre, je venais de réaliser que j'avais oublié une chose. Changer mon adresse e-mail de destinataire réel dans le formulaire Paypal en une adresse e-mail de marchand sandbox. Cela a finalement résolu le problème pour moi.


PS: Peut-être une stupide erreur de débutant? Mais pourrait être utile pour d'autres qui rencontrent la même situation.

5
Kai Noack

J'ai eu le même problème, et aucune de la suggestion ici ne fonctionnait. Ensuite, j'ai réalisé que le problème était que j'essayais d'effectuer un paiement à partir d'un compte en bac à sable sur un compte réel. Ainsi, par exemple, si votre compte professionnel enregistré est: [email protected], tous les paiements en mode bac à sable doivent être effectués en [email protected], sinon ils se retrouveront en mode PENDING. 

4
Emil Borconi

Problème similaire ici - mon compte marchand (bac à sable) a été créé comme aux États-Unis, et j'essayais de faire des paiements en EUR.

Pour moi, peu importe les paramètres que j'ai modifiés, cela ne fonctionnait qu'après la création d'un nouveau compte marchand basé en Allemagne.

2
M.G.Palmer

Par défaut, votre compte professionnel Paypal est limité à quelques devises acceptées, choisies en fonction de vos paramètres régionaux. Les paiements effectués avec des devises non acceptées resteront en attente/ouverts. Pour prendre en charge/accepter ces devises, vous devez les ajouter à la liste des "devises acceptées" sur Paypal. Pour ce faire, procédez comme suit:

  1. Connectez-vous à Paypal avec votre compte d'entreprise Paypal
  2. Allez dans "Profil"> "Profil et paramètres"> "Mon argent"> "Devises"
  3. Ajoutez les devises que vous souhaitez prendre en charge.

Remarque: Lorsque vous utilisez les comptes sandbox lors des tests, vous devez procéder de la même manière pour votre compte facilitateur après la connexion à ce compte à l'aide de l'URL: https://www.sandbox.Paypal.com/

1
BartM

Aucune des solutions ci-dessus n'a fonctionné pour moi, mais m'a aidé à trouver la solution.

Si vous utilisez un compte commercial et client par défaut, cette solution fonctionnera peut-être pour vous.

  1. Accédez à developer.Paypal> sandbox.accounts.
    https://developer.Paypal.com/developer/accounts/

  2. Connectez-vous et cliquez sur l'icône clone dans votre compte sandobx business et votre compte d'acheteur

  3. Définissez les nouveaux noms et emails et cliquez sur créer un nouveau compte.

  4. Ouvrez le profil des deux comptes et assurez-vous que Payment Review est OFF.

  5. Modifiez votre compte cible dans votre code/application et placez le nouveau compte business

  6. Répéter la transaction en utilisant le nouveau compte acheteur


Cette solution n'a pas seulement résolu mon problème. Grâce à cela, le design sandox.Paypal a été remplacé par le new design qui utilise real accounts.

Ceci est important car certaines des données reçues par IPN dans ce cas peuvent répondre sous un nom différent.

1
Alex Florentin

J'ai résolu le mien en supprimant tous les comptes sandbox et en les recréant.

Notes IMPORTANTES:

Assurez-vous que les comptes utilisent la même devise avec votre code.

0
mboy

Il y a une dernière chose que vous devrez peut-être vérifier:

Assurez-vous que le codage linguistique de votre compte Paypal soit défini sur UTF-8. Dans certaines circonstances, il s’agit par défaut de "windows-1256" . Pour le remplacer par UTF-8, vous devez:

  • allez dans votre profil puis "mes outils de vente" 
  • là-bas, cliquez sur "Codage de la langue du bouton Paypal"
  • Sur la page suivante, vous devez cliquer sur "Plus d'options" où vous pourrez enfin définir l'encodage.

Chaque compte Paypal que j'ai créé en Allemagne a été configuré par défaut pour le langage "Windows ...". Dans ce cas, IPN ne fonctionnera pas avec un site Web codé en UTF-8, même dans Woocommerce, EDD ou un événement express.

0
bschmidttraub

La solution est ce que explique @Jadeye:

Aller sur le site du développeur Paypal

  1. Connectez-vous à votre compte de développeur (bac à sable)
  2. Cliquez sur Applications
  3. Cliquez sur les comptes Sandbox
  4. Cliquez sur l'adresse de messagerie pour laquelle vous souhaitez désactiver l'option de vérification des paiements, puis cliquez sur Profil une fois développé.
  5. Cliquez sur Paramètres
  6. Et sélectionnez Désactivé pour l'examen du paiement.
  7. Cliquez sur Fermer
0
mdromed