Laravel 5 Laravel出纳订阅v10.5

Laravel 5 Laravel出纳订阅v10.5,laravel-5,stripe-payments,laravel-cashier,Laravel 5,Stripe Payments,Laravel Cashier,我正在尝试实现与出纳的订阅。我使用的不是用户表,而是在.env中定义为OK的客户表 CASHIER_MODEL=App\Customer 相应的其他字段将添加到customer表中 我首先希望得到一些关于客户的信息,以便他们填写一个简单的表格,其中包括他们的姓名、电子邮件、国家和密码。然后,我将customer->id保存为会话变量 $fs = App\Customer::find($id); $pl = App\Plan::find(3); $amount = $pl->cost *

我正在尝试实现与出纳的订阅。我使用的不是用户表,而是在.env中定义为OK的客户表

CASHIER_MODEL=App\Customer
相应的其他字段将添加到customer表中

我首先希望得到一些关于客户的信息,以便他们填写一个简单的表格,其中包括他们的姓名、电子邮件、国家和密码。然后,我将customer->id保存为会话变量

$fs = App\Customer::find($id);
$pl = App\Plan::find(3);
$amount = $pl->cost * 100;
session(['subscriber' => $id]);
我有一个包含条带订阅引用和测试引用的计划表。我已经把这些放在条纹上了

记录完客户详细信息后,我将他们带到一个视图,在那里他们可以输入卡的详细信息。在将id传递给视图并设置会话变量时,会在此页面上找到客户

$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>
我没有删除返回的$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 
这是数据库中记录的正确客户编号


非常感谢您的帮助。

$stripeToken=$cu->stripe\u id-这不对,令牌是您从表单签出中获得的值,它应该作为stripeToken POST参数在$request中的某处;不是你要的客户ID。当前获取。我对传入请求进行了dd,得到了“stripeToken=>”tok_1fygbrf7admrgjaouf 69kPak”“stripeTokenType=>”card”,因此我将代码修改为“```$stripeToken=$request->stripeToken;paymentMethods=$cu->paymentMethods()$intent=$cu->createSetupIntent()$cu->newSubscription($pl->name,$pl->test_stripe_plan)->create($stripeToken);`现在我得到了:``没有这样的支付方式:tok_1fygbrf7admrgjaouf 69kPak```我认为你真的不能将setupintent与代币一起使用。您在这里也使用了旧的签出,它实际上不适用于像setupintent这样的新事物(您应该使用Elements PaymentMethod集成或新签出)。您可以通过至少从令牌创建PaymentMethod并使用该ID来实现这一点。我不知道您在Lavarel中是如何做到的,但它是(创建PaymentMethod并传递
card.token=tok_xxx