1<?php 2 3// File generated from our OpenAPI spec 4 5namespace Stripe\Service; 6 7class SubscriptionService extends \Stripe\Service\AbstractService 8{ 9 /** 10 * By default, returns a list of subscriptions that have not been canceled. In 11 * order to list canceled subscriptions, specify <code>status=canceled</code>. 12 * 13 * @param null|array $params 14 * @param null|array|\Stripe\Util\RequestOptions $opts 15 * 16 * @throws \Stripe\Exception\ApiErrorException if the request fails 17 * 18 * @return \Stripe\Collection 19 */ 20 public function all($params = null, $opts = null) 21 { 22 return $this->requestCollection('get', '/v1/subscriptions', $params, $opts); 23 } 24 25 /** 26 * Cancels a customer’s subscription immediately. The customer will not be charged 27 * again for the subscription. 28 * 29 * Note, however, that any pending invoice items that you’ve created will still be 30 * charged for at the end of the period, unless manually <a 31 * href="#delete_invoiceitem">deleted</a>. If you’ve set the subscription to cancel 32 * at the end of the period, any pending prorations will also be left in place and 33 * collected at the end of the period. But if the subscription is set to cancel 34 * immediately, pending prorations will be removed. 35 * 36 * By default, upon subscription cancellation, Stripe will stop automatic 37 * collection of all finalized invoices for the customer. This is intended to 38 * prevent unexpected payment attempts after the customer has canceled a 39 * subscription. However, you can resume automatic collection of the invoices 40 * manually after subscription cancellation to have us proceed. Or, you could check 41 * for unpaid invoices before allowing the customer to cancel the subscription at 42 * all. 43 * 44 * @param string $id 45 * @param null|array $params 46 * @param null|array|\Stripe\Util\RequestOptions $opts 47 * 48 * @throws \Stripe\Exception\ApiErrorException if the request fails 49 * 50 * @return \Stripe\Subscription 51 */ 52 public function cancel($id, $params = null, $opts = null) 53 { 54 return $this->request('delete', $this->buildPath('/v1/subscriptions/%s', $id), $params, $opts); 55 } 56 57 /** 58 * Creates a new subscription on an existing customer. Each customer can have up to 59 * 500 active or scheduled subscriptions. 60 * 61 * @param null|array $params 62 * @param null|array|\Stripe\Util\RequestOptions $opts 63 * 64 * @throws \Stripe\Exception\ApiErrorException if the request fails 65 * 66 * @return \Stripe\Subscription 67 */ 68 public function create($params = null, $opts = null) 69 { 70 return $this->request('post', '/v1/subscriptions', $params, $opts); 71 } 72 73 /** 74 * Removes the currently applied discount on a subscription. 75 * 76 * @param string $id 77 * @param null|array $params 78 * @param null|array|\Stripe\Util\RequestOptions $opts 79 * 80 * @throws \Stripe\Exception\ApiErrorException if the request fails 81 * 82 * @return \Stripe\Subscription 83 */ 84 public function deleteDiscount($id, $params = null, $opts = null) 85 { 86 return $this->request('delete', $this->buildPath('/v1/subscriptions/%s/discount', $id), $params, $opts); 87 } 88 89 /** 90 * Retrieves the subscription with the given ID. 91 * 92 * @param string $id 93 * @param null|array $params 94 * @param null|array|\Stripe\Util\RequestOptions $opts 95 * 96 * @throws \Stripe\Exception\ApiErrorException if the request fails 97 * 98 * @return \Stripe\Subscription 99 */ 100 public function retrieve($id, $params = null, $opts = null) 101 { 102 return $this->request('get', $this->buildPath('/v1/subscriptions/%s', $id), $params, $opts); 103 } 104 105 /** 106 * Updates an existing subscription on a customer to match the specified 107 * parameters. When changing plans or quantities, we will optionally prorate the 108 * price we charge next month to make up for any price changes. To preview how the 109 * proration will be calculated, use the <a href="#upcoming_invoice">upcoming 110 * invoice</a> endpoint. 111 * 112 * @param string $id 113 * @param null|array $params 114 * @param null|array|\Stripe\Util\RequestOptions $opts 115 * 116 * @throws \Stripe\Exception\ApiErrorException if the request fails 117 * 118 * @return \Stripe\Subscription 119 */ 120 public function update($id, $params = null, $opts = null) 121 { 122 return $this->request('post', $this->buildPath('/v1/subscriptions/%s', $id), $params, $opts); 123 } 124} 125