[RESOLU] Comment lier une action PHP à une action effectuée via un prestataire extérieur?

Eléphant du PHP | 345 Messages

23 mai 2022, 17:58

Serait -il possible d'effectuer une maj de la database après le déclenchement d'un paiement en ligne sur mon site?

Avatar du membre
Mammouth du PHP | 1564 Messages

23 mai 2022, 22:46

Si le paiement est sur ton site, il te suffit de faire une requête sur ta base de données après le déclenchement du paiement.

Ou regarde du côté des Webhooks.

Quel service de paiement en ligne tu utilise ? Le service doit normalement proposer une "URL de fond" pour l'appeler et lui demander si le paiement est OK (si OK : Maj de la base)

Eléphant du PHP | 345 Messages

23 mai 2022, 23:48

J'ai installé Stripe. Mais il n'est pas encore opérationnel. Je dois voir avec l'hébergeur où et comment installer l'API coté serveur.

Avatar du membre
Mammouth du PHP | 1564 Messages

24 mai 2022, 00:41

Je dois voir avec l'hébergeur où et comment installer l'API coté serveur
Ton hébergeur ne t'aider pas, c'est à toi de te débrouiller.

La doc est là : https://stripe.com/docs

Avec un peu de traduction et 2 à 3 jours pour comprendre le système, tu devrais y arriver, Stripe est plus simple que PayPal, la doc est bien fournie et partiellement traduite en Français ;)

Eléphant du PHP | 345 Messages

24 mai 2022, 10:35

Oui, je viens de me plonger dedans et c'est galère :?

Avatar du membre
Mammouth du PHP | 1564 Messages

24 mai 2022, 10:50

C'est quoi que tu doit faire comme style de paiement ? un paiement et tu valide directement ? ou un abonnement ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

24 mai 2022, 11:49

Il faut que tu mettes en place un webhook pour que Stripe appelle un de tes scripts à chaque fois qu'un paiement a été effectué.
La doc est là :
https://stripe.com/docs/webhooks/quickstart
Quand tout le reste a échoué, lisez le mode d'emploi...

Avatar du membre
Mammouth du PHP | 1564 Messages

24 mai 2022, 14:27

Si le paiement est direct (paymentintents), pas besoin de webhook, la réponse est instantanée (hors virement qui peuvent prendre plusieurs jours).

J'affirme ceci car je les ai eu par leur tchat et ils me l'ont confirmé (d'ailleurs si tu as besoin d'aide, ils sont facilement joignable via le tchat ;))

Pour les autres méthodes, l'utilisation de webhooks sera la solution.

Eléphant du PHP | 345 Messages

25 mai 2022, 11:09

Merci pour vos réponses, je continue les tests. Je suis en train de configurer le webhook pour qu'il pointe vers mon script de maj de la base de données ...

Eléphant du PHP | 345 Messages

03 juin 2022, 16:26

J'ai testé en réel, les paiements s'effectuent bien.
J'ai 2 scripts: server.php et webhook.php.
Je pense que c'est dans ce dernier que je dois mettre mon line de maj de database suite paiement?
<?php
// webhook.php
//
// Use this sample code to handle webhook events in your integration.
//
// 1) Paste this code into a new file (webhook.php)
//
// 2) Install dependencies
//   composer require stripe/stripe-php
//
// 3) Run the server on http://localhost:4242
//   php -S localhost:4242

require 'vendor/autoload.php';

// This is your Stripe CLI webhook secret for testing your endpoint locally.
$endpoint_secret = 'xxxxxxxxxxxxx';

$payload = @file_get_contents('php://input');
$sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'];
$event = null;

try {
  $event = \Stripe\Webhook::constructEvent(
    $payload, $sig_header, $endpoint_secret
  );
} catch(\UnexpectedValueException $e) {
  // Invalid payload
  http_response_code(400);
  exit();
} catch(\Stripe\Exception\SignatureVerificationException $e) {
  // Invalid signature
  http_response_code(400);
  exit();
}

// Handle the event
switch ($event->type) {
  case 'cash_balance.funds_available':
    $cashBalance = $event->data->object;
  // ... handle other event types
  default:
    echo 'Received unknown event type ' . $event->type;
}

http_response_code(200);
?>

Eléphant du PHP | 345 Messages

04 juin 2022, 22:56

Apparemment, c'est pas dans celui-ci ! et ni dans "server.php" ?!

Help !

Est-ce dans le dashboard que je dois ajouter mon lien de maj?

Eléphant du PHP | 345 Messages

17 juin 2022, 11:03

Je les ai contacté via le tchat, mais apparemment on ne se comprend pas. La fille m'a renvoyé vers le systeme de lien de paiement. Chose que j'ai déjà mis en place ...
J'ai ajouté mon lien de maj dans les évènements à traiter mais cela ne fonctionne toujours pas.
// Handle the event
switch ($event->type) {
	  case 'payment_intent.succeeded':
    $paymentIntent = $event->data->object; // contains a \Stripe\PaymentIntent
  header('Location:maj_bonus.php');
  exit;

  case 'cash_balance.funds_available':
    $cashBalance = $event->data->object;
 // ... handle other event types
  header('Location:maj_bonus.php');
  exit;
  case 'checkout.session.async_payment_succeeded':
    $session = $event->data->object;
  header('Location:maj_bonus.php');
  exit;
  case 'checkout.session.completed':
    $session = $event->data->object;
	  header('Location:maj_bonus.php');
  exit;

  // ... handle other event types
  default:
    echo 'Received unknown event type ' . $event->type;
}

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 juin 2022, 13:07

Fais ton traitement directement sans faire une redirection via header() qui ne sera potentiellement pas suivi par l'appel de Stripe.

Et sinon comme toujours, commence par un code ultra-simple en suivant le tuto officiel et juste en effectuant une commande simple (genre écrire un fichier avec file_put_contents() ) comme traitement, et une fois que le tuto fonctionne, alors tu ajoutes progressivement ta complexité
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 345 Messages

17 juin 2022, 20:58

Désolé, j'ai laissé tomber.
J'ai trouvé une solution beaucoup plus simple avec STARPASS et seulement deux javascripts installés...
Tests OK.