Я пытаюсь оформить подписку через кассу. Я не использую пользовательскую таблицу, но таблицу клиентов, которую я определил OK в .env с помощью
CASHIER_MODEL=App\Customer
Соответствующие другие поля добавляются в таблицу клиентов.
Я первый раз sh, чтобы получить некоторую информацию о клиенте, чтобы он заполнил простую форму, которая включает его имя, адрес электронной почты, страну и пароль. Затем я сохраняю customer-> id в качестве переменной сеанса.
У меня есть таблица планов, которая содержит ссылку на подписку на полосу и ссылку на тест. Я установил их в Stripe.
После записи данных о клиентах я перехожу к ним, где они вводят данные своей карты. Клиент находится на этой странице, так как идентификатор передается в представление, а также задает переменную сеанса.
$fs = App\Customer::find($id);
$pl = App\Plan::find(3);
$amount = $pl->cost * 100;
session(['subscriber' => $id]);
План ID 3 - это мой план тестирования, но он будет заменен, когда я получу работу и т.д. моя форма
<form action="/subscriptionPayment" method="POST">
@csrf
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="{{ env('STRIPE_KEY') }}"
data-amount="{{ $amount }}"
data-name="{{ $pl->name }}"
data-email="{{ $fs->email }}"
data-currency="gbp">
</script>
</form>
Это записывает идентификатор stripeID в таблице, но не последние 4 числа карты или марки карты. (Я использую 4242 4242 4242 4242).
Методом контроллера является
public function subscriptionPayment(Request $request)
{
$pl = Plan::find(3);
$amount = $pl->cost *100;
$cu = Cust::find( session('customer') );
$paymentMethods = $cu->paymentMethods();
$intent = $cu->createSetupIntent();
$stripeToken = $cu->stripe_id;
$cu->newSubscription($pl->name, $pl->test_stripe_plan)->create($stripeToken); //test strip id
return 'Charge successful, you get the course!';
}
}
Я сделал $ intent, который возвратил
Stripe\SetupIntent {#500 ▼
+saveWithParent: false
#_opts: Stripe\Util\RequestOptions {#503 ▶}
#_originalValues: array:20 [▶]
#_values: array:20 [▶]
#_unsavedValues: Stripe\Util\Set {#490 ▶}
#_transientValues: Stripe\Util\Set {#506 ▶}
#_retrieveOptions: []
#_lastResponse: Stripe\ApiResponse {#502 ▶}
id: "seti_1FyFFyF7aDMrgjaujaPqH939"
object: "setup_intent"
application: null
cancellation_reason: null
client_secret: "seti_1FyFFyF7aDMrgjaujaPqH939_secret_GVFlyidVC9hiJVM3FDrXMoyxO0etcPL"
created: 1578392750
customer: null
description: null
last_setup_error: null
livemode: false
mandate: null
metadata: Stripe\StripeObject {#512 ▶}
next_action: null
on_behalf_of: null
payment_method: null
payment_method_options: Stripe\StripeObject {#508 ▶}
payment_method_types: array:1 [▶]
single_use_mandate: null
status: "requires_payment_method"
usage: "off_session"
}
Сбой подписки с
No such PaymentMethod: cus_GVEuKhg2BUE7BB
Это правильный номер клиента, записанный в базе данных.
Справка очень признательна.