1<?php 2 3// File generated from our OpenAPI spec 4 5namespace Stripe\Service; 6 7class CouponService extends \Stripe\Service\AbstractService 8{ 9 /** 10 * Returns a list of your coupons. 11 * 12 * @param null|array $params 13 * @param null|array|\Stripe\Util\RequestOptions $opts 14 * 15 * @throws \Stripe\Exception\ApiErrorException if the request fails 16 * 17 * @return \Stripe\Collection 18 */ 19 public function all($params = null, $opts = null) 20 { 21 return $this->requestCollection('get', '/v1/coupons', $params, $opts); 22 } 23 24 /** 25 * You can create coupons easily via the <a 26 * href="https://dashboard.stripe.com/coupons">coupon management</a> page of the 27 * Stripe dashboard. Coupon creation is also accessible via the API if you need to 28 * create coupons on the fly. 29 * 30 * A coupon has either a <code>percent_off</code> or an <code>amount_off</code> and 31 * <code>currency</code>. If you set an <code>amount_off</code>, that amount will 32 * be subtracted from any invoice’s subtotal. For example, an invoice with a 33 * subtotal of <currency>100</currency> will have a final total of 34 * <currency>0</currency> if a coupon with an <code>amount_off</code> of 35 * <amount>200</amount> is applied to it and an invoice with a subtotal of 36 * <currency>300</currency> will have a final total of <currency>100</currency> if 37 * a coupon with an <code>amount_off</code> of <amount>200</amount> is applied to 38 * it. 39 * 40 * @param null|array $params 41 * @param null|array|\Stripe\Util\RequestOptions $opts 42 * 43 * @throws \Stripe\Exception\ApiErrorException if the request fails 44 * 45 * @return \Stripe\Coupon 46 */ 47 public function create($params = null, $opts = null) 48 { 49 return $this->request('post', '/v1/coupons', $params, $opts); 50 } 51 52 /** 53 * You can delete coupons via the <a 54 * href="https://dashboard.stripe.com/coupons">coupon management</a> page of the 55 * Stripe dashboard. However, deleting a coupon does not affect any customers who 56 * have already applied the coupon; it means that new customers can’t redeem the 57 * coupon. You can also delete coupons via the API. 58 * 59 * @param string $id 60 * @param null|array $params 61 * @param null|array|\Stripe\Util\RequestOptions $opts 62 * 63 * @throws \Stripe\Exception\ApiErrorException if the request fails 64 * 65 * @return \Stripe\Coupon 66 */ 67 public function delete($id, $params = null, $opts = null) 68 { 69 return $this->request('delete', $this->buildPath('/v1/coupons/%s', $id), $params, $opts); 70 } 71 72 /** 73 * Retrieves the coupon with the given ID. 74 * 75 * @param string $id 76 * @param null|array $params 77 * @param null|array|\Stripe\Util\RequestOptions $opts 78 * 79 * @throws \Stripe\Exception\ApiErrorException if the request fails 80 * 81 * @return \Stripe\Coupon 82 */ 83 public function retrieve($id, $params = null, $opts = null) 84 { 85 return $this->request('get', $this->buildPath('/v1/coupons/%s', $id), $params, $opts); 86 } 87 88 /** 89 * Updates the metadata of a coupon. Other coupon details (currency, duration, 90 * amount_off) are, by design, not editable. 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\Coupon 99 */ 100 public function update($id, $params = null, $opts = null) 101 { 102 return $this->request('post', $this->buildPath('/v1/coupons/%s', $id), $params, $opts); 103 } 104} 105