Laravel Касса автоматически отправляет письмо на счет / квитанцию - PullRequest
1 голос
/ 20 января 2020

В документе Stripe / Laravel кассир сообщает, что может отправлять электронную почту автоматически после создания счета. Я пытался переключить настройки, связанные с этим, в меню настроек Stripe, но я не получаю никаких писем после покупки или подписки. Нужно ли мне вручную кодить отправку электронной почты? (Я думаю, что он должен быть автоматически отправлен после создания счета)

1 Ответ

4 голосов
/ 21 января 2020

Согласно Stripe docs , если вы хотите, чтобы Stripe автоматически отправлял квитанции, вам нужно установить почтовый параметр клиента при создании подписки и убедиться, что опция почтовых клиентов для успешных платежей включена на Информационная панель Stripe

$user->newSubscription('default', 'monthly')
    ->create($paymentMethod, [
        'email' => $user->email, // <= customer’s email
    ]);

Обратите внимание, что:

Квитанции на платежи, созданные с помощью тестовых ключей API , не отправляются автоматически. Вместо этого вы можете просмотреть или вручную отправить квитанцию, используя Панель управления .


Но если вы хотите вместо этого отправлять квитанции по Laravel, вы можете определите новый обработчик событий webhook и используйте Stripe webhook :

  1. Установите новую конечную точку на Stripe dashboard до https://your-domain.com/stripe/webhooks

  2. Укажите URI как исключение в вашем промежуточном программном обеспечении VerifyCsrfToken или укажите маршрут вне группы промежуточного программного обеспечения web:

    protected $except = [
        'stripe/*',
    ];
    
  3. Определите новый WebhookController и добавьте метод handleInvoicePaymentSucceeded к контроллеру для обработки invoice.payment_succeeded webhook:

    <?php
    
    namespace App\Http\Controllers;
    
    use Laravel\Cashier\Http\Controllers\WebhookController as CashierController;
    use App\Notifications\InvoicePaid;
    
    class WebhookController extends CashierController
    {
        /**
         * Handle payment succeeds.
         *
         * @param  array $payload
         * @return \Symfony\Component\HttpFoundation\Response
         */
        protected function handleInvoicePaymentSucceeded(array $payload)
        {
            $invoice = $payload['data']['object'];
            $user = $this->getUserByStripeId($invoice['customer']);
    
            if ($user) {
                $user->notify(new InvoicePaid($invoice));
            }
    
            return new Response('Webhook Handled', 200);
        }
    }
    
  4. Определите маршрут к вашему контроллеру Кассы в вашем routes/web.php файл. Это перезапишет маршрут доставки по умолчанию:

    Route::post('stripe/webhook', '\App\Http\Controllers\WebhookController@handleWebhook');
    
  5. (Необязательно) Вы можете вручную установить подписи Stripe для подключения к сети для большей безопасности.

См. Laravel документы форма больше информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...