2016-10-10 2 views
0

Je travaille actuellement sur une nouvelle intégration avec PayPal avec le NVP (paypalfunctions.php) pour traiter les paiements. La même intégration fonctionne pour d'autres projets, mais sur celle en cours, elle échoue.Intégration NVP PayPal - Paiement non traité

Description: Le lien de paiement est créé avec succès - est redirigé vers Paypal - Connectez-vous et payer le montant (1 ou 5 EUR) - être redirigé vers l'URL de succès. Problème: Ni le compte de la boutique ni le compte des expéditeurs ne voient le paiement et je ne reçois aucun rappel de PayPal - donc le paiement n'a pas été traité/accepté, etc. mais je ne reçois aucune information de Paypal.

Les paramètres NVP que j'utilise sont minimes et ne pas avoir besoin d'une adresse de livraison:

$nvpstr="&PAYMENTREQUEST_0_AMT=". $paymentAmount; 
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_PAYMENTACTION=" . $paymentType; 
$nvpstr = $nvpstr . "&RETURNURL=" . $returnURL; 
$nvpstr = $nvpstr . "&CANCELURL=" . $cancelURL; 
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_CURRENCYCODE=" . $currencyCodeType; 
$nvpstr = $nvpstr . "&NOSHIPPING=1"; 
$nvpstr = $nvpstr . "&BRANDNAME=MyName"; 
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_CUSTOM=" . $paymentId; 
$nvpstr = $nvpstr . "&PAYMENTREQUEST_0_NOTIFYURL=https://my.callback.com"; 

L'URL est créée avec succès et toutes les variables sont définies.

Une idée pourquoi cela ne fonctionne pas?

Merci beaucoup

bert2002

Répondre

0

On dirait que vous êtes absent le dernier appel dans le processus. Le débit doit être:

  1. SetExpressCheckout
  2. GetExpressCheckoutDetails
  3. DoExpressCheckoutPayment

Pas d'argent sera déplacé jusqu'à ce que l'appel DECP final est terminé avec succès. Remarque: Ce que vous faites n'utilise pas l'API/SDK REST, donc cette balise est trompeuse.

J'ai un PayPal PHP SDK qui rendra ces appels API très rapides et faciles pour vous, donc vous n'aurez pas à les créer manuellement comme vous l'êtes maintenant. Je vous recommande de le regarder. Je pense que vous l'aimerez.

+0

Salut, merci beaucoup. J'utilise CallShortcutExpressCheckout() qui devrait suffire (ou ils ont changé quelque chose au cours des dernières semaines/mois) ou je l'ai fait mal tout le temps et ça fonctionne par magie. J'ai suivi [link] (https://devtools-paypal.com/integrationwizard/ecpaypal/code.php) et il ne mentionne pas vos fonctions. Je vais vérifier votre SDK si je peux l'intégrer à la place. J'aimerais juste savoir pourquoi le mien ne fonctionne plus. – bert2002

+0

Okay j'ai trouvé un moyen, mais c'est un peu bizarre. D'abord je fais un CallMarkExpressCheckout() avec tous mes détails, puis les utilisateurs payent et sont redirigés vers ReturnURL qui traite le jeton et PayerID avec DoExpressCheckoutPayment(). Ensuite, le paiement est approuvé. Ce flux de travail a-t-il un sens? Dans un autre projet, toute la deuxième partie est traitée avec le rappel et non avec ReturnUrl de l'utilisateur. Ce ReturnUrl est un peu bizarre. – bert2002

+0

Les noms d'API que j'ai décrits sont les noms réels. Ces fonctions sont construites pour faire des choses spécifiques avec la requête SetExpressCheckout. Par exemple, l'un des paramètres de SetExpressCheckout peut être défini sur "Facturation" ou "Marquer" et l'expérience est différente en fonction de la façon dont vous définissez ce paramètre. Quoi qu'il en soit, ces fonctions exécutent SetExpressCheckout pour vous, et probablement gérer la redirection pour vous, mais oui, vous devez également ajouter l'appel DoExpressCheckoutPayment après que vous êtes retourné à votre ReturnURL fourni avec SetExpressCheckout. –