1<?php
2
3// File generated from our OpenAPI spec
4
5namespace Stripe\Service;
6
7class OrderService extends \Stripe\Service\AbstractService
8{
9    /**
10     * Returns a list of your orders. The orders are returned sorted by creation date,
11     * with the most recently created orders appearing first.
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/orders', $params, $opts);
23    }
24
25    /**
26     * Creates a new order object.
27     *
28     * @param null|array $params
29     * @param null|array|\Stripe\Util\RequestOptions $opts
30     *
31     * @throws \Stripe\Exception\ApiErrorException if the request fails
32     *
33     * @return \Stripe\Order
34     */
35    public function create($params = null, $opts = null)
36    {
37        return $this->request('post', '/v1/orders', $params, $opts);
38    }
39
40    /**
41     * Pay an order by providing a <code>source</code> to create a payment.
42     *
43     * @param string $id
44     * @param null|array $params
45     * @param null|array|\Stripe\Util\RequestOptions $opts
46     *
47     * @throws \Stripe\Exception\ApiErrorException if the request fails
48     *
49     * @return \Stripe\Order
50     */
51    public function pay($id, $params = null, $opts = null)
52    {
53        return $this->request('post', $this->buildPath('/v1/orders/%s/pay', $id), $params, $opts);
54    }
55
56    /**
57     * Retrieves the details of an existing order. Supply the unique order ID from
58     * either an order creation request or the order list, and Stripe will return the
59     * corresponding order information.
60     *
61     * @param string $id
62     * @param null|array $params
63     * @param null|array|\Stripe\Util\RequestOptions $opts
64     *
65     * @throws \Stripe\Exception\ApiErrorException if the request fails
66     *
67     * @return \Stripe\Order
68     */
69    public function retrieve($id, $params = null, $opts = null)
70    {
71        return $this->request('get', $this->buildPath('/v1/orders/%s', $id), $params, $opts);
72    }
73
74    /**
75     * Return all or part of an order. The order must have a status of
76     * <code>paid</code> or <code>fulfilled</code> before it can be returned. Once all
77     * items have been returned, the order will become <code>canceled</code> or
78     * <code>returned</code> depending on which status the order started in.
79     *
80     * @param string $id
81     * @param null|array $params
82     * @param null|array|\Stripe\Util\RequestOptions $opts
83     *
84     * @throws \Stripe\Exception\ApiErrorException if the request fails
85     *
86     * @return \Stripe\Order
87     */
88    public function returnOrder($id, $params = null, $opts = null)
89    {
90        return $this->request('post', $this->buildPath('/v1/orders/%s/returns', $id), $params, $opts);
91    }
92
93    /**
94     * Updates the specific order by setting the values of the parameters passed. Any
95     * parameters not provided will be left unchanged.
96     *
97     * @param string $id
98     * @param null|array $params
99     * @param null|array|\Stripe\Util\RequestOptions $opts
100     *
101     * @throws \Stripe\Exception\ApiErrorException if the request fails
102     *
103     * @return \Stripe\Order
104     */
105    public function update($id, $params = null, $opts = null)
106    {
107        return $this->request('post', $this->buildPath('/v1/orders/%s', $id), $params, $opts);
108    }
109}
110