[(#REM) Tutoriel pour implémenter le framework ecommerce sous SPIP. Étape 3 : Paiement > explications. ] #SET{id_commande,#ID_COMMANDE}#SET{id_transaction,#ID_TRANSACTION}

Étape 3 : paiement de la commande

Une commande « en cours » [n° (#GET{id_commande})] a été créée après validation du panier, il reste à procéder à son règlement. La page est encapsulée dans une boucle qui récupère la commande en cours du visiteur. En théorie, il ne peut y avoir qu'une commande en cours par auteur, mais pour être sûr on peut ajouter les critères {0,1}{!par date}. \ {{{Récapitulatif}}} Pour afficher le contenu de la commande, vous pouvez inclure le squelette inclure/commande.html, ou vous inspirer de prive/squelettes/inclure/commande_contenu.html qui comporte plus d'informations (taxes, etc.). Des informations complémentaires devront figurer si vous prenez en charge des adresses etc. {{{Des transactions}}} Les paiements donnent lieu à des «transactions», il s'agit d'un objet SPIP que l'on gère dans l'espace privé au même titre que les commandes. La page des transactions et la page des commande se trouvent dans le menu «Activité». {{{Paiement}}} Pour afficher les options de paiement, 2 formulaires sont disponibles en fonction du type de paiement que l'on souhaite : acte → \#FORMULAIRE_PAYER_ACTE, abonnement → \#FORMULAIRE_PAYER_ABONNEMENT. Il faut bien sûr qu'au moins un mode paiement soit configuré. Le 1er paramètre est le prix TTC, le 2ème est un tableau d'options contenant à minima le prix HT, l'identifiant de la commande et celui de l'auteur. On peut également préciser les URLs de retour en cas de succès ou d'échec du paiement, par défaut il s'agit de spip.php?page=bank_retour_ok et spip.php?page=bank_retour_echec. La liste complète des options est indiquée dans le code, voir en ligne : [payer_acte.php->https://github.com/nursit/bank/blob/master/formulaires/payer_acte.php]. Dès que le formulaire est affiché, une transaction liée à la commande est créée. Tant que le paiement n'a pas été confirmé, la transaction a le statut «commande», et le champ montant_regle est vide. \#FORMULAIRE_PAYER_ACTE{ \#PRIX*, \#ARRAY{ montant_ht,\#PRIX_HT*, id_commande,\#ID_COMMANDE, id_auteur,\#ID_AUTEUR } } Une fois le paiement effectué ou simulé, selon le mode de paiement, il y a 2 possibilités pour la suite : → Si le mode de paiement permet de connaître l'issue du paiement automatiquement (carte bancaire, etc.), on sera redirigé vers une des 2 pages de succès ou d'échec. La transaction et la commande seront mises à jour automatiquement. → Dans le cas contraire (paiement par chèque, virement bancaire, etc.), on reste sur la page. Il faudra indiquer manuellement quand le paiement sera reçu. Lors de vos développements, vous pouvez créer des transactions factices au moyen de \#FORMULAIRE_DEMO_CREER_TRANSACTION.