Les étapes du processus de paiement pour un développeur PayPal Express Checkout

SandboxExpressCheckoutFlow
Le diagramme des traitements des processus marchands du côté de l’institution financière a été copié dans une image jointe au logiciel. « Express Checkout flow.png » (« PayPal Sandbox User Guide » (en anglais) p41 :  « Testing PayPal NVP APIs ») version 2.3

C’est PayPal Express Checkout Name-Value Pair (NVP) API en cURL qui est utilisé.
Basiquement, il y a 3 fonctions (mis dans des fichiers du même nom) :
– SetExpressCheckout : Définir les informations pour le paiement
– GetExpressCheckout : Obtenir des informations sur l’acheteur
– DoExpressCheckoutPayment : Exécute le paiement et Obtenir confirmation de l’exécution du paiement

1. L’acheteur séléctionne une commande. Les informations du formulaire (montant + devise + langue) ainsi que les informations du vendeur (API_username, API_password, API_signature) sont injectés dans le SetExpressCheckout à destination de la plateforme de paiement (en cURL).

2. Le ACK du SetExpressCheckout est un succès ou un échec.

3. Si le ACK du SetExpressCheckout est un succès, l’acheteur est redirigé vers la plateforme de paiement (en spécifiant le Token du ACK dans l’url) via une redirection HTTP (JavaScript ou html). L’acheteur se logue et confirme sa commande. (L’acheteur paye sur le PSP)

4. L’acheteur est ensuite redirigé (grâce à une adresse de retour fourni dans le SetExpressCheckout) sur la plateforme de ecommerce. L’ url fournit par le PSP contient un token et le PayerID.

5. Le token peut servir à récupérer les informations de la transactions définie dans le SetExpressCheckout. Les informations sont ensuite injecté dans un GetExpressCheckout,

6. puis dans un DoExpressCheckoutPayment.

7. Si le ACK du DoExpressCheckoutPayment est un succès, les traitements du vendeur s’exécutent.

Les status / états d’une transaction : 2 : validé (Processed), 1 : test , 0 : en attente (Pending), -1 : annulé (Cancelled), -2 : Échoué (Failed ), -3 : Retour arrière (Chargeback)
Optionnel :
– Enregistrer les réponses du PSP dans un table. (KISS : Keep it Simple, Stupid)
– Pour changer la devise : définir le CURRENCYCODE dans SetExpressCheckout et DoExpressCheckoutPayment
– La langue locale est définie uniquement dans le SetExpressCheckout. (AU,DE,FR,GB,IT,ES,JP,US accepté par le PSP)


Le script ne prend en compte que les champs obligatoires par mesure de simplification. Pour ce qui est des champs facultatifs : se référer à la documentation officielle.

source :

https://developer.paypal.com/

http://developer.paypal-portal.com/pdn/board?board.id=fr

http://sourceforge.net/projects/paybook/

http://paybook.sourceforge.net/

Le process qui explique comment passer de « Give1Get2 » vers la prochaine version « PayBook »

Mashup Give1Get2 sans Moneybookers (pour l’architecture) + FreePay (pour les ajouts) + Paypal Express Checkout (pour l’interconnexion) = PayBook ATS


trouver un serveur de test
supprimer les bdd de test existant pour éviter les cafouillages.
créer base, utilisateur, droits
mettre a jour le logiciel ftp
créer user ftp
supprimer ftp test
créer un sous domaine.
changer le logo interne (pour ne pas modifié les autres)
Installer les scripts. + bdd
Supprimer la page par défaut si nécessaire
changer le nom du répertoire d’installation
configurer avec les paramètres (attention aux préfixes)

Interface :
création de compte (email, mdp, API_username, API_password, API_signature)
importer script « client_ajouter.php » et son interface de FreePay
modifier nav haut pour le lien vers « client_ajouter.php »
ajouter à l’interface « API_username, API_password, API_signature »
modifier les traitements relatif à « API_username, API_password, API_signature »
modifier la bdd relatif à « API_username, API_password, API_signature »
ajouter
un disclaimer
informations création de compte api vérifié par paypal (en tentant une commande)
changer url absolue et relative du répertoire courant
tout les messages d’erreurs

récupération des post en cas d’erreur
afficher erreur api paypal bien formaté
fonction API paypal commune à client_ajouter.php et client_modifier.php

optimiser la vérification du ACK
login (email, mdp)
ajouter lien « ouvrir un compte »
modifier répertoire par défaut
vérification login et mdp freepay

déconnexion
modifier répertoire par défaut
modification du compte (mdp, api)
importer « client_modifier.php »
créer interface dans fichier séparé
modification traitement
info modification de compte api vérifié par paypal (en tentant une commande)
la personne change ses api crédentials et ça marche toujours (selon paypal, on ne peut les modifier)
optimiser la vérification du ACK
afficher erreur api paypal bien formaté
menu
changer « mb_paiement_en_attente.php » en psp_ordre_afficher.php
changer le lien du menu
JavaScript tronc commun :
validation en JavaScript inscription (EN + FR) (plus long)

validation en JavaScript connexion (EN + FR) (le même en plus court)
message Warning javascript i18N
définir l’encodage en européen pour les fichier UTF-8
suivre le guide d’intégration visuelle
changer le logo du PSP
suivre les guidelines
changer les balises méta (mot clé)
changer logo plateforme trading

Traitement :
créer compte paypal sandbox
créer des comptes premiers avec API
être connecté au Paypal sandbox pendant les tests
GetExpressCheckout
modifier table « freepay_achat_en_attente » avec token
modifier insertion avec token (pour le vendeur)
recuperer API_username, API_password, API_signature à partir du token (pour le vendeur)
Donner la signification de  GetExpressCheckout et DoExpressCheckoutPayment.
GetExpressCheckout : obtenir des informations sur l’acheteur
DoExpressCheckoutPayment : obtenir des informations sur le paiement
être capable d’affirmer le succès ou l’échec
enregistrer la réponse ? -> Keep simple and stupid : ne pas enregistrer
traitement (status_report.php)
cas >= :
transfert d’argent ?
changement propriétaire ?
historique ?
nouveau tarif ?
cas < :
transfert d’argent ?
déduction ancien titre et garde ancien proprio
création nouveau titre et nouveau proprio
histo nouveau titre

bdd :
table « Freepay_titre » remplacer « merchand id » par info des API (username, password, signature)
modifier champs de la table
modifier requête
redirection vers Paypal

CP : lecture des répertoires pour la documentation (plus rapide que de taper à la main)
déplacer documentation officiel du PSP dans le répertoire « paypal » du projet
renommer les fichiers pour les conventions d’écritures
inclure aussi la doc de source externe citée dans la doc interne avec respect du copyright
document photo sur la fin de la pauvreté (trop lourd (8 Mo), abandonné)

supprimer :
mb_afficher
.php
nav_transaction.php
services/ISIN/ISIN_verif.php
support/plan.php
support/moneybookers.php

vérifier : pas d’erreurs ne doit s’afficher quand on tape le nom de la page dans le navigateur
paiement/titre/titre_acheter_interface2.php
paiement/titre/titre_acheter_interface.php
support/client/client_modifier_interface.php
support/client/client_modifier.php
support/client/client_ajouter_interface.php
support/client/client_ajouter.php
support/client/connexion_interface.php
support/client/connexion.php
pay/status_report.php
titre/titre_consulter.php

tester :
succes >
succes =
succes <

écrire la documentation Give1Get2 (Dev, User, Slides)
– Guide utilisateur : faire les captures d’écran
EN
FR
– Guide Dev
– Slides

– changer le nom du projet pour la conformité
– mettre les fonctions paypal dans des fichiers séparés.

– Changer la devise : définir CURRENCYCODE=EUR dans SetExpressCheckout et DoExpressCheckoutPayment
– que ce passe t-il si celui qui paye sur le psp n’est pas celui authentifié sur le FSX ? A reçoit l’argent. B paye. B ne reçoit rien. C ne recoit la demande de paiement et ne paye rien.
– Spécifié que c’est le Name-Value Pair (NVP) API en cURL qui est utilisé.

– redirection sur le PSP avec la langue locale (FR ou EN)
– guide user avec screenshot en anglais
– respecter les conventions graphiques de la présentation des documents (Guide User EN et FR)

Marketing :
– PayPal training library
– s’inscrire sur guru.com
– répondre aux questions sur les forums

Web Performance Best Practices :
Optimize images
Serve resources from a consistent URL
Avoid CSS expressions
Combine external CSS
Specify image dimensions
Minimize redirects
Put CSS in the document head
Use efficient CSS selectors

trouver un serveur de test
supprimer les bdd de test existant pour éviter les cafouillages.
créer base, utilisateur, droits
mettre a jour le logiciel ftp
créer user ftp
supprimer ftp test
créer un sous domaine.
changer le logo interne (pour ne pas modifié les autres)
Installer les scripts. + bdd
Supprimer la page par défaut si nécessaire
changer le nom du répertoire d’installation
configurer avec les paramètres (attention aux préfixes)
Interface :
création de compte (email, mdp, API_username, API_password, API_signature)
importer script « client_ajouter.php » et son interface de FreePay
modifier nav haut pour le lien vers « client_ajouter.php »
ajouter à l’interface « API_username, API_password, API_signature »
modifier les traitements relatif à « API_username, API_password, API_signature »
modifier la bdd relatif à « API_username, API_password, API_signature »
ajouter un disclaimer
informations création de compte api vérifié par paypal (en tentant une commande)
changer url absolue et relative du répertoire courant
tout les messages d’erreurs
récupération des post en cas d’erreur
afficher erreur api paypal bien formaté
fonction API paypal commune à client_ajouter.php et client_modifier.php
optimiser la vérification du ACK
login (email, mdp)
ajouter lien « ouvrir un compte »
modifier répertoire par défaut
vérification login et mdp freepay
déconnexion
modifier répertoire par défaut
modification du compte (mdp, api)
importer « client_modifier.php »
créer interface dans fichier séparé
modification traitemen