Bonjour tout le monde,
Y a t'il un d'entre vous qui a déjà mis en place un mode de paiement avec Fintecture en PHP, je parle ici d'une en coder PHP , et non à partir d'un CMS. Je dois réaliser un bouton de paiement sur un site pour valider un abonnement annuel.
Merci pour vos réponses.
Cordialement
Jean-Pierre

3 réponses


Alors la doc explique comment faire en JS, mais tu peux utiliser la librairie GuzzleHttp pour faire tes requêtes en PHP ^^

Il te faut PHP avec l'extension Curl et OpenSSL

Il faut aussi que tu prennes la lib vlucas/phpdotenv, tu peux faire sans mais tu va devoir utiliser des API_KEY pour ton service de payement, et c'est le genre de données sensible qu'il ne faut pas mettre en clair dans le code mais en tant que variables dans l'hébergeur (et dans un fichier .env pour le local, n'oublies pas de le rajouter dans le .gitignore) x)

Merci pour ta réponse popotte, mais je crois que cela dépasse mes compétences. je ne connais pas .gitignore etc.. Mon nom de dommaine est en HTTPS , j'ai insallé un script OpenSSL, et traduit toutes mes url http en https avec un fichier .htacess
Je ne sais pas ce qu'il faut comment mettre en place les fichiers dont la palteforme à besoin pour les transactions, les clés des api je les ai généré.
Je vais essayer de poser quelques questions auprès d'un responsable de la plateforme Fintecture, pour commencer à comprendre le processus.
Cordialement

Alors, .gitignore c'est un fichier que tu places à la racine de ton projet, tu y écrit des noms de fichiers ou de dossiers ligne par ligne et... c'est tout

Quand tu va postter ton code sur Github git va vérifier si il existe un fichier nommé .gitignore, si oui il va lire dedans et en gros il ne va pas envoyer les dossiers inscrit dans cette liste dans github, c'est un moyen de ne pas envoyer de données sensibles :p

Après oui pour utiliser une api il faut quelques connaissances en PHP ^^'

Pour le https, pour l'API Finecture ça ne sert à rien mais c'est quand même une très bonne chose il faut toujours passer par HTTPS pour l'encryption de bout en bout et éviter qu'un hacker n'intercepte des paquets

En gros le SSL ça sertt à encrypter les données de bout en bout, quand un utilisateur va entrer des données dans un formulaire, par exemple ses infos bancaires et va cliquer sur envoyer, SSL va encrypter les donnée depuis le PC de l'utilisateur, il va traverser le réseau internet jusqu'au serveur de ton site, et ton site va décrypter les données pour le traiter, si un pirate intercepte les données en route il va recevoir des données cryptées, et comme il n'a pas la clé de décryptage bah il ne peut rien en faire :p C'est un système développé à la seconde GM :p

Alors pour la mise en place des fichiers, si tu es en PHP pur sans passer par un framework c'est à toi d'organiser les fichiers comme tu veux, tu devrait passer par un dossier services ou lib et placer ton api dedans, ensuite tu places un fichier dans le dossier manager ou controller pour mettre ta class qui va utiliser le service, et tu codes un router qui va lier l'url vers le controller

Bon je t'ai fait l'explication à l'envers, en gros faudrait faire le système comme ça (pour les noms de fichiers je te les donnes au hasard, mais comme tu es en PHP pur tu ranges et nommes tes fichiers comme tu veux, si tu veux que ton service soit dans un dossier toto c'est comme tu veux x)):

Tu as un fichier routes.php dedans tu va lier l'url à un controller, $router->get('payement', (new PaymementController())->process()) par exemple, en considérant que tu as configuré la variable $router avec une function get qui va prendre en premier parametre le path de ton url et en deuxième le controller à appeler quand ton vas sur https://tonsite.com/payement, et tu demandes au router de lancer la fonction process qui se trouve dans le controller

Ensuite tu as ton fichier PayementController, il aura sa function process qui est appelé depuis ton router, et dans cette function tu aura $service = new FinectureService() puis $service->run(...params) en remplacant ...params par les parametre à placer

Enfin tu aura ton service FinectureService qui aura la fonction run :

public function run (...params) {
}

Dans cette function tu places le code qui faut mettre pour appeler l'api, tu utilises Guzzle:

use GuzzleHttp\Client;

public function run () {
    // Tu initialises le client Guzzle
    $client = new Client([
        'base_uri' => 'https://l-url-de-l-api-de-finecture.com/',
    ]);

    // tu fait un try catch, si la requete est bien passée, ton code va terminer l'execution dans le try, si entretemps il y a eu un problème, ça va excecuter le catch où tu va afficher le message d'erreur
    try {
        // Tu envoies un requetes post a la baseurl+path donc https://l-url-de-l-api-de-finecture.com/test avec comme parametre un amount et un cvs, mais à la place de ça faudra mettre les infos demandées par finecture, ensuite finecture va te renvoyer une reponse, comme tu a commencé le post par $response =, la réponse de l'api va être enregistrée dans la variable $response
        $response = $client->post('test', [
            'amount' => 1200,
            'cvs' => 123
        ]);

        return $response->body // Et la tu retournes le message de la réponse
    } catch (ClientException $e) {
        return $e->getResponse();
    }
}

En gros c'est le genre de chose que tu devra faire, je te l'ai fait grossièrement mais dans l'idée c'est ça