Laravel Касса Подписка v10.5 - PullRequest
       33

Laravel Касса Подписка v10.5

0 голосов
/ 07 января 2020

Я пытаюсь оформить подписку через кассу. Я не использую пользовательскую таблицу, но таблицу клиентов, которую я определил 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 

Это правильный номер клиента, записанный в базе данных.

Справка очень признательна.

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