所以我有一个名为 charge 的方法,该方法将total作为参数。当我打印出总计print(total)
时,它会给我Price(currency='INR', excl_tax=Decimal('1000.00'), incl_tax=Decimal('1180.0000'), tax=Decimal('180.0000'))
。我该如何访问incl_tax?
views.py
class PaymentDetailsView(CorePaymentDetailsView):
def handle_payment(self, order_number, total, **kwargs):
razorpay_ref = Facade().charge(
order_number,
total,
card=self.request.POST[RAZORPAY_TOKEN],
description=self.payment_description(order_number, total, **kwargs),
metadata=self.payment_metadata(order_number, total, **kwargs))
source_type, __ = SourceType.objects.get_or_create(name=PAYMENT_METHOD_RAZORPAY)
source = Source(
source_type=source_type,
currency=settings.RAZORPAY_CURRENCY,
amount_allocated=total.incl_tax,
amount_debited=total.incl_tax,
reference=razorpay_ref)
self.add_payment_source(source)
self.add_payment_event(PAYMENT_EVENT_PURCHASE, total.incl_tax)
facade.py
class Facade(object):
def __init__(self):
pass
@staticmethod
def get_friendly_decline_message(error):
return 'The transaction was declined by your bank - please check your bankcard details and try again'
@staticmethod
def get_friendly_error_message(error):
return 'An error occurred when communicating with the payment gateway.'
def charge(self,
order_number,
total,
card,
currency=settings.STRIPE_CURRENCY,
description=None,
metadata=None,
**kwargs):
print("card")
print(card)
print("total")
print(total)
print(type(total))
# print(getattr(self, 'incl_tax'))
client = razorpay.Client(auth=("key", "pass"))
client.payment.capture(card, total)
return card
prices.py
class TaxNotKnown(Exception):
"""
Exception for when a tax-inclusive price is requested but we don't know
what the tax applicable is (yet).
"""
class Price(object):
"""
Simple price class that encapsulates a price and its tax information
Attributes:
incl_tax (Decimal): Price including taxes
excl_tax (Decimal): Price excluding taxes
tax (Decimal): Tax amount
is_tax_known (bool): Whether tax is known
currency (str): 3 character currency code
"""
def __init__(self, currency, excl_tax, incl_tax=None, tax=None):
self.currency = currency
self.excl_tax = excl_tax
if incl_tax is not None:
self.incl_tax = incl_tax
self.is_tax_known = True
elif tax is not None:
self.incl_tax = excl_tax + tax
self.is_tax_known = True
else:
self.incl_tax = None
self.is_tax_known = False
def _get_tax(self):
return self.incl_tax - self.excl_tax
def _set_tax(self, value):
self.incl_tax = self.excl_tax + value
self.is_tax_known = True
tax = property(_get_tax, _set_tax)
def __repr__(self):
if self.is_tax_known:
return "%s(currency=%r, excl_tax=%r, incl_tax=%r, tax=%r)" % (
self.__class__.__name__, self.currency, self.excl_tax,
self.incl_tax, self.tax)
return "%s(currency=%r, excl_tax=%r)" % (
self.__class__.__name__, self.currency, self.excl_tax)
def __eq__(self, other):
"""
Two price objects are equal if currency, price.excl_tax and tax match.
"""
return (self.currency == other.currency and
self.excl_tax == other.excl_tax and
self.incl_tax == other.incl_tax)
我的目标是提取应该是整数值的incl_tax,因此我可以将其传递给client.payment.capture(card,total)
。最好的方法是什么?
答案 0 :(得分:0)
您可以使用以下命令访问该列表中的元素,其中2是incl_tax
的值:
print(total[2])