PHP - Понимание аргумента метки времени (записи об использовании) - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь настроить предстоящие счета для выставления счетов с полосой.Для этого мне нужно запустить записи об использовании.Насколько я понимаю, необходимо будет выполнить запись использования, чтобы сгенерировать точный предстоящий счет.Я создал функцию с именем stripeUsageRecord(), которую я вызываю до генерации счета.

  public function stripeUsageRecord()
  {
    $authUser = auth()->user();
    $sub_item = $authUser['subscription_item'];
    \Stripe\Stripe::setApiKey(env("STRIPE_SECRET"));
    return \Stripe\UsageRecord::create(array(
      "quantity" => 11,
      // "timestamp" => time(),
      "timestamp" => 1540225312,
      "subscription_item" => $sub_item,
      "action" => "set"
    ));
  }

Эта функция делает желаемый результат.Единственная проблема, с которой я сталкиваюсь, заключается в том, что я не могу установить временную метку динамически.Если я запускаю статическую метку времени (в пределах диапазона дат подписки), она работает так, как я хочу, а не увеличивает ее.но если я использую php time() для установки метки времени на текущее время, это увеличивает количество (когда мне нужно, чтобы оно обновлялось).

(В моем коде количество определяется запросом, который подсчитывает всех пользователей, совершивших покупки в определенном месте в течение периода подписки. Здесь я просто добавляю число, чтобы его было легче понять.)

как я могу установить временную метку для динамического обновления количества вместо того, чтобы добавлять ее поверх предыдущей записи об использовании с другой отметкой времени?

1 Ответ

0 голосов
/ 22 октября 2018

При создании UsageRecord, set будет перезаписывать количество использования при заданной отметке времени.Если новая запись, которую вы создаете, имеет другую временную метку, она просто добавится к итоговой сумме, которая будет списана в конце периода, а не будет перезаписана.

Чтобы обойти это, вы можете настроить базовый план с помощью опции aggregate_usage=last_during_period, чтобы в последней накладной использовалась только последняя запись для отметки времени!

Примерно так:

\Stripe\Plan::create(array(
  "amount" => 100,
  "interval" => "month",
  "product" => array(
    "name" => "Gold Metered"
  ),
  "currency" => "usd",
  "id" => "gold-metered",
  "usage_type" => "metered",
  "aggregate_usage" => "last_during_period"
));

Больше контекста здесь: https://stripe.com/docs/billing/subscriptions/metered-billing#reporting-usage

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