Согласно Stripe docs , если вы хотите, чтобы Stripe автоматически отправлял квитанции, вам нужно установить почтовый параметр клиента при создании подписки и убедиться, что опция почтовых клиентов для успешных платежей включена на Информационная панель Stripe
$user->newSubscription('default', 'monthly')
->create($paymentMethod, [
'email' => $user->email, // <= customer’s email
]);
Обратите внимание, что:
Квитанции на платежи, созданные с помощью тестовых ключей API , не отправляются автоматически. Вместо этого вы можете просмотреть или вручную отправить квитанцию, используя Панель управления .
Но если вы хотите вместо этого отправлять квитанции по Laravel, вы можете определите новый обработчик событий webhook и используйте Stripe webhook :
Установите новую конечную точку на Stripe dashboard до https://your-domain.com/stripe/webhooks
Укажите URI как исключение в вашем промежуточном программном обеспечении VerifyCsrfToken
или укажите маршрут вне группы промежуточного программного обеспечения web
:
protected $except = [
'stripe/*',
];
Определите новый 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);
}
}
Определите маршрут к вашему контроллеру Кассы в вашем routes/web.php
файл. Это перезапишет маршрут доставки по умолчанию:
Route::post('stripe/webhook', '\App\Http\Controllers\WebhookController@handleWebhook');
(Необязательно) Вы можете вручную установить подписи Stripe для подключения к сети для большей безопасности.
См. Laravel документы форма больше информации.