Проблема с полосой при создании подписки: «Не удалось определить, какой URL запрашивать» - PullRequest
0 голосов
/ 03 марта 2020

Я настроил полосу несколько раз и никогда раньше не сталкивался с этой проблемой. Я обрабатываю веб-ловушку, созданную клиентом, и использую полезную нагрузку для прикрепления идентификатора полосы к моему пользователю и установки новой подписки.

Я получаю следующую ошибку:

Stripe\Exception\UnexpectedValueException: Could not determine which URL to request: Stripe\Subscription instance has invalid ID:  in file /Users/mick/repos/askit/vendor/stripe/stripe-php/lib/ApiResource.php on line 107

Это происходит только тогда, когда я пытаюсь создать новую подписку. Вот мой полный контроллер:

public function handleCustomerCreated(Request $request)
    {
        $payload = json_decode($request->getContent(), true);

        $user_id = $payload->data->object->subscriptions->data[0]->metadata->user_id;
        $subscription_id = $payload->data->object->subscriptions->data[0]->id;
        $stripe_customer_id = $payload->data->object->id;
        $current_period_start = $payload->data->object->subscriptions->data[0]->current_period_start;
        $current_period_end = $payload->data->object->subscriptions->data[0]->current_period_end;
        $stripe_plan = $payload->data->object->subscriptions->data[0]->items->data[0]->plan->id;
        $name = $payload->data->object->subscriptions->data[0]->items->data[0]->plan->nickname;
        $stripe_status = $payload->data->object->subscriptions->data[0]->status;
        $interval = $payload->data->object->subscriptions->data[0]->items->data[0]->plan->interval_count;

        $user = User::query()->find($user_id);
        $user->stripe_id = $stripe_customer_id;
        $user->save();

        $subscription = new Subscription();
        $subscription->user_id = $user_id;
        $subscription->name = $name;
        $subscription->stripe_id = $stripe_customer_id;
        $subscription->stripe_status = $stripe_status;
        $subscription->stripe_plan = $stripe_plan;
        $subscription->interval = $interval;
        $subscription->current_period_start = $current_period_start;
        $subscription->current_period_end = $current_period_end;
        $subscription->subscription_id = $subscription_id;
        $subscription->save();

    }

Если я удаляю новую подписку, она работает нормально, полоса очень хорошо привязывается к моей пользовательской модели. Ошибка происходит только в этой части:

  $subscription = new Subscription();
        $subscription->user_id = $user_id;
        $subscription->name = $name;
        $subscription->stripe_id = $stripe_customer_id;
        $subscription->stripe_status = $stripe_status;
        $subscription->stripe_plan = $stripe_plan;
        $subscription->interval = $interval;
        $subscription->current_period_start = $current_period_start;
        $subscription->current_period_end = $current_period_end;
        $subscription->subscription_id = $subscription_id;
        $subscription->save();

Есть идеи? Таблица была автоматически создана кассиром Laravel. 1012 *

1 Ответ

0 голосов
/ 03 марта 2020

Попробуйте использовать \Stripe\Subscription::create(), как показано в Stripe API Docs , вместо того, чтобы вручную создавать и изменять new Subscription(). Ваш текущий код пытается update подписку, которая еще не существует в API, поэтому он не может найти ее id.

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