Полоса, создающая несколько фаз в PHP - PullRequest
1 голос
/ 29 мая 2020

Я пытаюсь создать несколько этапов с помощью Stripe для очень специфического c варианта использования. Выполнение приведенного ниже кода с использованием Stripe Billings API на самом деле не создает нескольких этапов. Он создает только одну фазу (последнюю).

$schedule = \Stripe\SubscriptionSchedule::create([
  'customer' => 'cus_HMDwmb8iAV0X7k',
  'start_date' => 'now',
  'end_behavior' => 'cancel',
    'phases' => [
      [
        'end_date' => 1592910720,
        'proration_behavior' => 'none',
        'plans' => [
          [
            'price_data' => [
              'unit_amount' => 5000,
              'currency' => 'usd',
              'product' => 'prod_HMrCxIwor5bbjO',
              'recurring' => [
                  'interval' => 'year',
              ],
            ],
          ],
        ],
      ],
    ],


    'phases' => [
      [
        'end_date' => 1594850400,
        'proration_behavior' => 'none',
        'plans' => [
          [
            'price_data' => [
              'unit_amount' => 6000,
              'currency' => 'usd',
              'product' => 'prod_HMrCxIwor5bbjO',
              'recurring' => [
                  'interval' => 'year',
              ],
            ],
          ],
        ],
      ],
    ],


]);

Аналогичный запрос с использованием Curl отлично работает:

curl https://api.stripe.com/v1/subscription_schedules \
  -u sk_test_xxx: \
  -d customer=cus_HMDwmb8iAV0X7k \
  -d start_date=now \
  -d end_behavior=cancel \
  -d phases[0][plans][0][price_data][product]=prod_HMrCxIwor5bbjO \
  -d phases[0][plans][0][price_data][currency]=usd \
  -d phases[0][plans][0][price_data][unit_amount]=1000 \
  -d phases[0][plans][0][price_data][recurring][interval]=year \
  -d phases[0][end_date]=1592043010 \
  -d phases[0][proration_behavior]=none \
  -d phases[1][plans][0][price_data][product]=prod_HMrCxIwor5bbjO \
  -d phases[1][plans][0][price_data][currency]=usd \
  -d phases[1][plans][0][price_data][unit_amount]=15000 \
  -d phases[1][plans][0][price_data][recurring][interval]=year \
  -d phases[1][end_date]=1592910720 \
  -d phases[1][proration_behavior]=none \
  -d phases[2][plans][0][price_data][product]=prod_HMrCxIwor5bbjO \
  -d phases[2][plans][0][price_data][currency]=usd \
  -d phases[2][plans][0][price_data][unit_amount]=20000 \
  -d phases[2][plans][0][price_data][recurring][interval]=year \
  -d phases[2][end_date]=1594850400 \
  -d phases[2][proration_behavior]=none \
  -d phases[3][plans][0][price_data][product]=prod_HMrCxIwor5bbjO \
  -d phases[3][plans][0][price_data][currency]=usd \
  -d phases[3][plans][0][price_data][unit_amount]=35000 \
  -d phases[3][plans][0][price_data][recurring][interval]=year \
  -d phases[3][end_date]=1595851200 \
  -d phases[3][proration_behavior]=none \
  -d phases[4][plans][0][price_data][product]=prod_HMrCxIwor5bbjO \
  -d phases[4][plans][0][price_data][currency]=usd \
  -d phases[4][plans][0][price_data][unit_amount]=21000 \
  -d phases[4][plans][0][price_data][recurring][interval]=day \
  -d phases[4][end_date]=1597021320 \
  -d phases[4][proration_behavior]=none

Единственная разница, которую я вижу, заключается в том, что в запросе Curl я Я явно передаю номер фазы.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 29 мая 2020

В вызове php вы дважды указываете параметр phases. Таким образом, для создания расписания подписки используется только второе определение phases. Исправление состоит в том, чтобы переместить все фазы в один массив и параметр следующим образом:

$schedule = \Stripe\SubscriptionSchedule::create([
  'customer' => $customer->id,
  'start_date' => 'now',
  'end_behavior' => 'cancel',
    'phases' => [
      [
        'end_date' => 1592910720,
        'proration_behavior' => 'none',
        'plans' => [
          [
            'price_data' => [
              'unit_amount' => 5000,
              'currency' => 'usd',
              'product' => $product->id,
              'recurring' => [
                  'interval' => 'year',
              ],
            ],
          ],
        ],
      ],
      [
        'end_date' => 1594850400,
        'proration_behavior' => 'none',
        'plans' => [
          [
            'price_data' => [
              'unit_amount' => 6000,
              'currency' => 'usd',
              'product' => $product->id,
              'recurring' => [
                  'interval' => 'year',
              ],
            ],
          ],
        ],
      ],
    ],
]);

Единственное различие, которое я вижу, заключается в том, что в запросе Curl я явно передаю номер фазы.

Это больше, чем вы передаете индекс фазы в массиве фаз. Вы должны четко указать это в cURL, но в php вы можете просто добавить каждый элемент в массив, и индексы подразумеваются.

...