Bonjour,

Voila je rencontre un petit problème avec le tuto pour integrer une carte bleu avec Stripe.
https://www.grafikart.fr/tutoriels/php/stripe-802.

J'ai exactement le meme code du tuto (copier/coller) et ça ne marche pas.
Quand la methode ci dessous est exécuté, il me semble que la requete curl ne parviens jamais au serveur de Stripe et pourtant php ne renvoie aucune erreurs.

public function api(string $endpoint, array $data = null): stdClass {

    echo 'methode api';
    $ch = curl_init();
    curl_setopt_array($ch, [
        CURLOPT_URL => "https://api.stripe.com/v1/$endpoint",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_USERPWD => $this->api_key,
        CURLOPT_HTTPAUTH => CURLAUTH_BASIC
    ]);
    if ($data != null) {
       curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    }
    $response = json_decode(curl_exec($ch));

    var_dump($response);

    curl_close($ch);
    if (property_exists($response, 'error')) {
        throw new Exception($response->error->message);
    }
    return $response;
}

La méthode est appelée depuis ce code :

require('Stripe.php');
$stripe = new Stripe('sk_test_macléprivéxjsxsxsxdc');
$customer = $stripe->api('customers', [
    'source' => $token,
    'description' => $name,
    'email' => $email
]);
    var_dump($customer);

Je fait mes essaies directement en ligne sur un domaine https et un hebergement mutualisé OVH en mode development php7 stable.
Le var_dump($response); dans la methode api retourne NULL.

Qui peux m'aider !!? Merci beaucoup :)

2 réponses


Bastien Riviere
Auteur
Réponse acceptée

Bonjour,
Merci beaucoup pour ta réponse ! Mais j'ai trouver ce matin. Aucun rapport avec le code mais juste l'environement serveur d'OVH. J'ai changer le moteur execution php dans le backoffice d'ovh et ça marche !

a la place de ton

 $response = json_decode(curl_exec($ch));
if(curl_exec($ch) === false){
   var_dump(curl_error($ch)); // il y a une erreur
}else{
    $result = curl_exec($ch)
     var_dump($result); 
}
$response = json_decode($result);
if(empty($response)){
   switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo ' - Aucune erreur';
        break;
        case JSON_ERROR_DEPTH:
            echo ' - Profondeur maximale atteinte';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - Inadéquation des modes ou underflow';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Erreur lors du contrôle des caractères';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Erreur de syntaxe ; JSON malformé';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Caractères UTF-8 malformés, probablement une erreur d\'encodage';
        break;
        default:
            echo ' - Erreur inconnue';
        break;
    }
 }

Voir si tu as des erreurs ... avec ça (CURL ou Json)