首页 > 解决方案 > 无效请求:Stripe 7.0 + Laravel 5.7

问题描述

描述

尝试使用 Laravel + API 创建条带订阅时出现错误。

在创建订阅之前,您必须通过请求获取令牌,我已成功创建此令牌,现在我正在使用 API 中的“createSubscription()”方法(在我的代码中引用),但这是错误所在发生。

代码

public function create()
    {
        $user = Auth::user();
        $plan = 'prod_**********';

    // Do some checks
    if ($user->subscribed('main')){
        return [
            'status' => 'failed',
            'message' => 'You are already subscribed!',
        ];
    }

    // Set the stripe Key
    Stripe::setApiKey(env('STRIPE_SECRET'));

    // Create the stripe token
    try {
        $stripeToken = Token::create([
            'card' => [
                'number' => str_replace(' ', '', Input::get('number')),
                'exp_month' => Input::get('exp_month'),
                'exp_year' => Input::get('exp_year'),
                'cvc' => Input::get('cvc')
            ]
        ]);
    }
    catch (\Stripe\Error\InvalidRequest $e)
    {
        return [
            'status' => 'failed',
            'message' => $e->getMessage(),
        ];
    }

    try{
        // This is the line thats failing
        $user->newSubscription('main', $plan)->create($stripeToken);
    } catch (\Stripe\Error\InvalidRequest $e) {
        dd($e->getMessage());
    }

    return [
        'status' => 'success',
        'message' => 'Subscription was successful!',
    ];
}

错误

完整的错误是:

无效的请求。提示:检查您的请求参数和 URL ( http://en.wikipedia.org/wiki/percent-encoding ) 的编码。如需帮助,请发送电子邮件至 support@stripe.com。

标签: phpstripe-paymentslaravel-cashierlaravel-5.7

解决方案


奇怪的是我是如何设法解决这个问题的。似乎传递整个条带令牌不起作用,而我只需要传递令牌 ID。

简单地改变

$user->newSubscription('main', $plan)->create($stripeToken);

对此

$user->newSubscription('main', $plan)->create($stripeToken->id);

解决了这个错误

无效的请求。提示:检查您的请求参数和 URL ( http://en.wikipedia.org/wiki/percent-encoding ) 的编码。如需帮助,请发送电子邮件至 support@stripe.com。

我确定这两个文档中都没有说明这是解决方案吗?或者也许我在某个地方忽略了这个......但这已经为我解决了。


推荐阅读