Bonjour,

Voila je rencontre un petit problème avec mon système Stripe.
J'ai créer un système de subscription, j'ai voulu tester les WebHook pour recevoir des notifications.
Mon webhook me revoie bien Ok et Success mais je reçois pas le mail que je devrais recevoir pour me signaler le invoice.payment_failed

Route

Route::post(
    'stripe/webhook',
    '\Laravel\Cashier\Http\Controllers\WebhookController@handleWebhook'
);

WebhookController

<?php

namespace App\Http\Controllers\Users;

use Laravel\Cashier\Http\Controllers\WebhookController as CashierController;

class WebhookController extends CashierController
{

    public function handleInvoicePaymentFailed($payload)
    {

        \Stripe\Stripe::setApiKey("ma key stripe");

        $input = @file_get_contents("php://input");

        $endpoint_secret = "mon code whsec";

        $sig_header = $_SERVER["HTTP_STRIPE_SIGNATURE"];
        $event = null;

        try {
            $event = \Stripe\Webhook::constructEvent(
                $payload, $sig_header, $endpoint_secret
            );
        } catch(\UnexpectedValueException $e) {
            http_response_code(400); // PHP 5.4 or greater
            exit();
        } catch(\Stripe\Error\SignatureVerification $e) {
            http_response_code(400); // PHP 5.4 or greater
            exit();
        }

        if (isset($event) && $event->type == "invoice.payment_failed") {
            $customer = \Stripe\Customer::retrieve($event->data->object->customer);
            $email = $customer->email;
            $amount = sprintf('$%0.2f', $event->data->object->amount_due / 100.0);
            $header="MIME-Version: 1.0\r\n";
            $header.='From:"test"<test.com>'."\n";
            $header.='Content-Type:text/html; charset="uft-8"'."\n";
            $header.='Content-Transfer-Encoding: 8bit';

            $message='
        <html>
            <body>
                <div align="center">
                    <br />
                    <u>Problème de paiement survenue:</u>'. $amount .'<br />
                </div>
            </body>
        </html>
        ';

            mail($email, "CONTACT - Monsite.com", $message, $header);
        }
    }
}

Je vous remecie !

5 réponses


Bonjour.
Ce n'est pas logique ce que tu dis.
Car je ne vois pas pourquoi tu recevrais un email pour un échec de paiement, si le paiement s'effectue bien.
Ou alors, tu t'es mal exprimé et tu voulais dire que lorsque le paiement ne s'effectue pas, que tu ne reçois pas le mail correspondant, si c'est le cas, penses à le préciser.

SoBaDayz
Auteur

oui, excuse moi j´ai simuler un paiement qui echoue avec stripe le webhook recois bien la requete mais l´email ne s´envoie pas.

@GregK: Je crois bien que tu n'as pas bien suivi ce qu'il a dit, c'est le mail de la part de Stripe qu'il ne reçoit pas.

SoBaDayz
Auteur

Oui, mais cela etait juste pour un test et c´est la fonction email qui s´envoie pas c´est le mail() qui marche pas.

SoBaDayz
Auteur

Normalement comme c´est ecrit dans le code quand le WebHook de stripe detecte un invoice.payment.failed il envoie un mail avec la fonction que j´ai ecrit mail() tout marche sauf je ne recois pas le mail