/
charge.py
66 lines (52 loc) · 2.36 KB
/
charge.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# -*- coding: utf-8 -*-
# File generated from our OpenAPI spec
from __future__ import absolute_import, division, print_function
from stripe import util
from stripe.api_resources.abstract import CreateableAPIResource
from stripe.api_resources.abstract import ListableAPIResource
from stripe.api_resources.abstract import SearchableAPIResource
from stripe.api_resources.abstract import UpdateableAPIResource
class Charge(
CreateableAPIResource,
ListableAPIResource,
SearchableAPIResource,
UpdateableAPIResource,
):
"""
To charge a credit or a debit card, you create a `Charge` object. You can
retrieve and refund individual charges as well as list all charges. Charges
are identified by a unique, random ID.
Related guide: [Accept a payment with the Charges API](https://stripe.com/docs/payments/accept-a-payment-charges).
"""
OBJECT_NAME = "charge"
@classmethod
def _cls_capture(
cls,
charge,
api_key=None,
stripe_version=None,
stripe_account=None,
**params
):
return cls._static_request("post", "/v1/charges/{charge}/capture".format(charge=util.sanitize_id(charge)), api_key=api_key, stripe_version=stripe_version, stripe_account=stripe_account, params=params)
@util.class_method_variant("_cls_capture")
def capture(self, idempotency_key=None, **params):
return self._request("post", "/v1/charges/{charge}/capture".format(charge=util.sanitize_id(self.get("id"))), idempotency_key=idempotency_key, params=params)
@classmethod
def search(cls, *args, **kwargs):
return cls._search( search_url="/v1/charges/search", *args, **kwargs)
@classmethod
def search_auto_paging_iter(cls, *args, **kwargs):
return cls.search(*args, **kwargs).auto_paging_iter()
def mark_as_fraudulent(self, idempotency_key=None):
params = {"fraud_details": {"user_report": "fraudulent"}}
url = self.instance_url()
headers = util.populate_headers(idempotency_key)
self.refresh_from(self.request("post", url, params, headers))
return self
def mark_as_safe(self, idempotency_key=None):
params = {"fraud_details": {"user_report": "safe"}}
url = self.instance_url()
headers = util.populate_headers(idempotency_key)
self.refresh_from(self.request("post", url, params, headers))
return self