【问题标题】:php - Stripe Usage Record class not foundphp - 找不到条纹使用记录类
【发布时间】:2019-03-20 10:31:56
【问题描述】:

我正在尝试将使用记录添加到我的订阅中。使用条带创建使用记录端点 (https://stripe.com/docs/api#usage_record_create)。

运行我的函数时我收到一个错误返回说Class 'Stripe\UsageRecord' not found in file 我还没有定义命名空间,因为我已经使用\Stripe\ 直接引用条纹访问它,我使用composer 引入。我试过composer update,但这似乎没有奏效。我猜它缺少 composer install 中的 UsageRecord.php 文件,但我不知道在哪里将文件的副本添加到条带包中

  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指定的班级声明你的意图吗?
  • 是的,我是。我的问题是条纹包确实缺少UsageRecord.php

标签: php laravel composer-php stripe-payments


【解决方案1】:

很可能您使用的这个库版本太旧。 Stripe\UsageRecord 在 6.6.0 版本中是 introduced,所以我建议将库更新到最新版本:

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

您绝对不应该修改vendor 目录的内容并从不同版本的库中复制和粘贴类。

【讨论】:

  • 根据 laravel 5.6 文档,我使用的是 "laravel/cashier":"~7.0" 包
  • 作曲家更新应该也没有更新吗?
  • 应该,但其他限制或要求可能会阻止这一点。如果您尝试显式升级,您可能会获得更多信息阻止此更新。
【解决方案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;
}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-03
    • 2015-08-11
    • 2020-03-31
    • 2013-10-08
    • 2015-08-06
    • 2019-12-24
    • 1970-01-01
    相关资源
    最近更新 更多