1from __future__ import absolute_import, division, print_function
2
3from stripe import util
4from stripe.api_resources.abstract import DeletableAPIResource
5from stripe.api_resources.abstract import UpdateableAPIResource
6from stripe.api_resources.customer import Customer
7from stripe.six.moves.urllib.parse import quote_plus
8
9
10class AlipayAccount(DeletableAPIResource, UpdateableAPIResource):
11    OBJECT_NAME = "alipay_account"
12
13    @classmethod
14    def _build_instance_url(cls, customer, sid):
15        token = util.utf8(sid)
16        extn = quote_plus(token)
17        customer = util.utf8(customer)
18
19        base = Customer.class_url()
20        owner_extn = quote_plus(customer)
21
22        return "%s/%s/sources/%s" % (base, owner_extn, extn)
23
24    def instance_url(self):
25        return self._build_instance_url(self.customer, self.id)
26
27    @classmethod
28    def modify(cls, customer, id, **params):
29        url = cls._build_instance_url(customer, id)
30        return cls._static_request("post", url, **params)
31
32    @classmethod
33    def retrieve(
34        cls,
35        id,
36        api_key=None,
37        stripe_version=None,
38        stripe_account=None,
39        **params
40    ):
41        raise NotImplementedError(
42            "Can't retrieve an Alipay account without a customer ID. "
43            "Use customer.sources.retrieve('alipay_account_id') instead."
44        )
45