Php - Класс записи об использовании полосы не найден

Я пытаюсь добавить в свою подписку записи об использовании. используя полосу создания конечной точки записи об использовании (https://stripe.com/docs/api#usage_record_create).

выполняя свою функцию, я получаю сообщение об ошибке: Class 'Stripe\UsageRecord' not found in file Я не определил пространство имен, потому что я обращался к нему напрямую, ссылаясь на полосу, используя \Stripe\, который я ввел с помощью composer. Я пробовал composer update, но, похоже, это не помогло. Я предполагаю, что отсутствует файл UsageRecord.php из composer install, но я не знаю, где добавить копию файла в пакет полосы.

  public function stripeUsageRecord()
  {
    $authUser = auth()->user();
    $business = $authUser['business_id'];
    $user_amount = Transactions::select("user_id")
      ->where("business_id", " = ", $business)
      ->groupBy("user_id")->count();
    $current_time = Carbon::now()->toDateTimeString();
    \Stripe\Stripe::setApiKey(env("STRIPE_SECRET"));

    \Stripe\UsageRecord::create(array(
      "quantity" => $user_amount,
      "timestamp" => $current_time,
      "subscription_item" => 'sub_DnAKVwNY2Sc4zf',
      "action" => 'set'
    ));
  }

Если вы используете композитор, включаете ли вы автозагрузчик в свой файл? А вы заявляете о своем намерении use указанного класса?

miken32 16.10.2018 04:10

Да я была. Моя проблема заключалась в том, что в полосе пакета буквально отсутствовал UsageRecord.php.

jermayne williams 16.10.2018 10:38
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
185
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Похоже, мне не хватало части пакета с полосами.

Я нашел копию UsageRecord.php в Интернете и создал файл по пути vendor\stripe\stripe-php\lib\UsageRecord.php

Затем я добавил содержимое кода, который нашел в Интернете, и добавил его в файл, и это сработало. Содержание размещено ниже:

<?php

namespace Stripe;

/**
* Class UsageRecord
*
* @package Stripe
*
* @property string $id
* @property string $object
* @property bool $livemode
* @property int $quantity
* @property string $subscription_item
* @property int $timestamp
*/
class UsageRecord extends ApiResource
{

const OBJECT_NAME = "usage_record";

/**
* @param array|null $params
* @param array|string|null $options
*
* @return \Stripe\ApiResource The created resource.
*/
public static function create($params = null, $options = null)
{
  self::_validateParams($params);
  if (!array_key_exists('subscription_item', $params)) {
      throw new Error\InvalidRequest("Missing subscription_item param in request", null);
  }
  $subscription_item = $params['subscription_item'];
  $url = "/v1/subscription_items/$subscription_item/usage_records";
  $request_params = $params;
  unset($request_params['subscription_item']);

  list($response, $opts) = static::_staticRequest('post', $url, $request_params, $options);
  $obj = \Stripe\Util\Util::convertToStripeObject($response->json, $opts);
  $obj->setLastResponse($response);
  return $obj;
}
}

Скорее всего, вы используете слишком старую версию этой библиотеки. Stripe\UsageRecord был представил в версии 6.6.0, поэтому я предлагаю обновить библиотеку до последней версии:

composer require "stripe/stripe-php:^6.19"

Вам определенно не следует изменять содержимое каталога vendor и копировать и вставлять классы из другой версии библиотеки.

Я использовал пакет "laravel / cashier": "~ 7.0" согласно документации laravel 5.6.

jermayne williams 16.10.2018 20:55

Должно ли обновление композитора не обновлять его также?

jermayne williams 16.10.2018 20:58

Должен, но другие ограничения или требования могут блокировать это. Если вы попытаетесь выполнить обновление явно, вы можете получить дополнительную информацию о том, что блокирует это обновление.

rob006 16.10.2018 21:06

Другие вопросы по теме