当前位置: 首页 > 知识库问答 >
问题:

Laravel出纳新订阅的条带抛出“无法确定要请求的URL:”错误

方楷
2023-03-14

我正在使用Laravel6和出纳10.7在我的平台上处理订阅。向Stripe一次性付款效果很好,从一个订阅切换到另一个订阅也很好,但当我尝试为没有存储卡的客户启动新订阅时,我遇到了一个错误

无法确定请求的URL:Stripe\Paymentmethod实例的ID无效:

我的付款单是这样的;

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-12 col-md-6 mt-5 mb-2">

            @if (session('status'))
                <div class="alert alert-success" role="alert">
                    {{ session('status') }}
                </div>
            @endif

            @if ($errors->any())
                <div class="alert alert-danger">
                    <strong>Whoops!</strong> There was a problem.
                    <ul>
                        @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                        @endforeach
                    </ul>
                </div>
            @endif

            <div class="h2 text-center">
                {{ __('Please enter your card details') }}
            </div>

            <div class="card">
                <div class="card-body">
                    <form method="post" action="{{ route('startSubscription') }}" id="payment-form">
                        @csrf

                        <div class="group">
                            <label class="stripe-label">
                                <span class="mr-1 p-2">{{ __('Cardholder Name') }}</span>
                                <input id="card-holder-name" class="field" placeholder="Jordan Jones" />
                            </label>
                        </div>

                        <!-- Stripe Elements Placeholder -->
                        <div class="group">
                          <label class="stripe-label">
                            <span class="mr-1 p-2">{{ __('Card') }}</span>
                            <div id="card-element" class="field p-3"></div>
                          </label>
                        </div>

                        <!-- Used to display form errors. -->
                        <div id="card-errors" role="alert"></div>
                        <button id="card-button" class="btn btn-lg btn-block btn-success" data-secret="{{ $intent->client_secret }}">
                            <i class="fas fa-credit-card mr-1"></i>{{ __('Add Payment Method') }}
                        </button>
                    </form>
                </div>
            </div>

        </div>
    </div>
</div>
@endsection

@section('javascript')

<script>
    const stripe = Stripe('{{ env("STRIPE_KEY") }}');
    const elements = stripe.elements();
    const cardElement = elements.create('card', {hidePostalCode: true});

    cardElement.mount('#card-element');

    const cardHolderName = document.getElementById('card-holder-name');
    const cardButton = document.getElementById('card-button');
    const clientSecret = cardButton.dataset.secret;

    cardButton.addEventListener('click', async (e) => {
        const { setupIntent, error } = await stripe.confirmCardSetup(
            clientSecret, {
                payment_method: {
                    card: cardElement,
                    billing_details: { name: cardHolderName.value }
                }
            }
        );

        if (error) {
            var errorElement = document.getElementById('card-errors');
            errorElement.textContent = error.message;
        } else {
          // Submit the form with the token ID.
           function stripePaymentHandler(setupIntent) {
           // Insert the token ID into the form so it gets submitted to the server
           var form = document.getElementById('payment-form');
           var hiddenInput = document.createElement('input');
           hiddenInput.setAttribute('type', 'hidden');
           hiddenInput.setAttribute('name', 'payment_method');
           hiddenInput.setAttribute('value', setupIntent.payment_method);
           form.appendChild(hiddenInput);

           // Submit the form
           form.submit();
          }
        }
        });

</script>
@endsection

我的控制器是这样的;

public function subscriptionPayment(Request $request) {
  $user = Auth::user();
  $paymentMethod = $request->payment_method;

  try {
    if ($user->hasPaymentMethod()) {
      $user->updateDefaultPaymentMethod($paymentMethod);
    } else {
      $user->addPaymentMethod($paymentMethod);
    }

$newSubscription = $user->newSubscription('User', 'plan_HGvJkewD0eaY6G')->trialDays(60)->create($paymentMethod, ['email' => $user->email]);

  } catch ( IncompletePayment $exception ){
    return redirect()->route('payment',
                [$exception->payment->id, 'redirect' => route('home')]
    );
  }

  return redirect()->route('home')
    ->with('status', 'Your payment has been processed and your subscription is now active.');
  }

Stripe事件日志显示了这一点;

{“object”:{“id”:“seti*******”,“object”:“setup\u intent”,“application”:null,

“取消原因”:null,“客户秘密”:“seti**********”,“已创建”:1591367952,“客户”:null,“说明”:null,“上次设置错误”:null,“现场模式”:false,“授权”:null,“元数据”:{},“下一步行动”:null,“代表”:null,“付款方法”:null,“付款方法选项”:“{”卡“{”请求三方安全”:“自动”}},“付款方式类型”:[“卡”],“单一使用授权”:空,“状态”:“需要付款方式”,“使用方式”:“关闭会话”}

有人能帮我解决我做错的事情吗,我就是解决不了。

暂时还没有答案

 类似资料:
  • 创建一个条纹客户非常容易,将一张卡与该客户关联起来,然后随时向他们收费。然而,使用Laravel出纳之后,在任何时候订阅用户的计划都不那么容易。 当用户在“我的设置”中添加卡时,会生成卡令牌。我已尝试在此时存储令牌,并在用户希望更新其订阅时使用它,但出现错误:

  • 我有麻烦使用laravel出纳与条纹新产品和计划集成。所以我创建了一个产品,在这个产品中我创建了一个计划。但是当我提交请求时,我得到一个错误检查了我的数据库,用户表包含卡信息,订阅表是空的。如何将Laravel出纳与条纹新系统产品集成 错误: 这是我的密码

  • 我对laravel是新手,目前正在使用laravel 5.8。我的订阅计划将在我的laravel项目中实施。我读过关于如何实现订阅的文章,遇到了我试图实现的laravel收银员。但是它给了我一个错误,我不知道这些错误在哪里,因为我已经根据文档实现了代码。有谁能给我推荐一个在我的项目中如何使用laravel收银员的正确工作示例吗。 谢谢 尝试实现laravel出纳 Stripe\Error\Inva

  • 我正在开发一个涉及订阅付款的Laravel应用程序。现在我正在努力用令牌订阅用户,但使用现有客户。这就是场景。在我的应用中,用户可以更新他们的支付/账单信息(基本上是卡)。当他们更新支付信息时,他们只是添加了卡信息。然后以后,用户可以付款或订阅他们想要的任何东西。 第一个用户将添加他们的付款方式或卡信息。所以我创建了这样的客户。 因此,上述方法将为用户创建条带客户以及卡。然后明天,用户可能想要订阅

  • 我正在尝试订阅一个经过身份验证的用户与Laravel出纳的计划。对条带仪表板的post请求被标记为“200成功”。 但是,Laravel将抛出此异常:Laravel出纳:Stripe\exception\InvalidRequestException无此类客户:cus_H0zcimyzC93Bay 我不完全确定这意味着什么。我试图订阅的用户具有以下条带id:cus_H0zcimyzC93Bay。那

  • 嗨,我不能收到确认订阅请求从亚马逊,尝试了一切。我的endpointurl是:。我尝试了以下代码片段来接收响应:1)-> 2)-> 请帮助我如何接收来自amazon的响应,也请指出我是否在代码中做错了什么或者我遗漏了任何一步。多谢了。