diff --git a/.gitignore b/.gitignore index a04cdb9..f62c597 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,8 @@ # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] +*.pyc +*.*~ *$py.class # C extensions diff --git a/README.md b/README.md index 7040001..f9ed8de 100644 --- a/README.md +++ b/README.md @@ -76,9 +76,9 @@ cielo_ecommerce = CieloEcommerce(merchant, environment) # Criar a venda e imprime o retorno response_create_sale = cielo_ecommerce.create_sale(sale) -print '----------------------response_create_sale----------------------' -print json.dumps(response_create_sale, indent=2) -print '----------------------response_create_sale----------------------' +print('----------------------response_create_sale----------------------') +print(json.dumps(response_create_sale, indent=2)) +print('----------------------response_create_sale----------------------') # Com a venda criada na Cielo, já temos o ID do pagamento, TID e demais # dados retornados pela Cielo @@ -87,15 +87,15 @@ payment_id = sale.payment.payment_id # Com o ID do pagamento, podemos fazer sua captura, # se ela não tiver sido capturada ainda response_capture_sale = cielo_ecommerce.capture_sale(payment_id, 15700, 0) -print '----------------------response_capture_sale----------------------' -print json.dumps(response_capture_sale, indent=2) -print '----------------------response_capture_sale----------------------' +print('----------------------response_capture_sale----------------------') +print(json.dumps(response_capture_sale, indent=2)) +print('----------------------response_capture_sale----------------------') # E também podemos fazer seu cancelamento, se for o caso response_cancel_sale = cielo_ecommerce.cancel_sale(payment_id, 15700) -print '---------------------response_cancel_sale---------------------' -print json.dumps(response_cancel_sale, indent=2) -print '---------------------response_cancel_sale---------------------' +print('---------------------response_cancel_sale---------------------') +print(json.dumps(response_cancel_sale, indent=2)) +print('---------------------response_cancel_sale---------------------') ``` @@ -139,9 +139,9 @@ cielo_ecommerce = CieloEcommerce(merchant, environment) # Criar a venda e imprime o retorno response_create_sale = cielo_ecommerce.create_sale(sale) -print '----------------------response_create_sale----------------------' -print json.dumps(response_create_sale, indent=2) -print '----------------------response_create_sale----------------------' +print('----------------------response_create_sale----------------------') +print(json.dumps(response_create_sale, indent=2)) +print('----------------------response_create_sale----------------------') @@ -152,15 +152,15 @@ payment_id = sale.payment.payment_id # Com o ID do pagamento, podemos fazer sua captura, # se ela não tiver sido capturada ainda response_capture_sale = cielo_ecommerce.capture_sale(payment_id, 15700, 0) -print '----------------------response_capture_sale----------------------' -print json.dumps(response_capture_sale, indent=2) -print '----------------------response_capture_sale----------------------' +print('----------------------response_capture_sale----------------------') +print(json.dumps(response_capture_sale, indent=2)) +print('----------------------response_capture_sale----------------------') # E também podemos fazer seu cancelamento, se for o caso response_cancel_sale = cielo_ecommerce.cancel_sale(payment_id, 15700) -print '---------------------response_cancel_sale---------------------' -print json.dumps(response_cancel_sale, indent=2) -print '---------------------response_cancel_sale---------------------' +print('---------------------response_cancel_sale---------------------') +print(json.dumps(response_cancel_sale, indent=2)) +print('---------------------response_cancel_sale---------------------') @@ -169,9 +169,9 @@ recurrent_payment_id = sale.payment.recurrent_payment.recurrent_payment_id # Consulta informações da venda recorrente response_get_recurrent_payment = cielo_ecommerce.get_recurrent_payment(recurrent_payment_id) -print '---------------------response_get_recurrent_payment---------------------' -print json.dumps(response_get_recurrent_payment, indent=2) -print '---------------------response_get_recurrent_payment---------------------' +print('---------------------response_get_recurrent_payment---------------------') +print(json.dumps(response_get_recurrent_payment, indent=2)) +print('---------------------response_get_recurrent_payment---------------------') ``` @@ -215,9 +215,9 @@ cielo_ecommerce = CieloEcommerce(merchant, environment) # Criar a venda e imprime o retorno response_create_sale = cielo_ecommerce.create_sale(sale) -print '----------------------response_create_sale----------------------' -print json.dumps(response_create_sale, indent=2) -print '----------------------response_create_sale----------------------' +print('----------------------response_create_sale----------------------') +print(json.dumps(response_create_sale, indent=2)) +print('----------------------response_create_sale----------------------') ``` ### Gerando token de cartão de crédito e criando um pagamento com o token @@ -245,13 +245,13 @@ cielo_ecommerce = CieloEcommerce(merchant, environment) # Criar a venda e imprime o retorno response_create_card_token = cielo_ecommerce.create_card_token(credit_card) -print '----------------------response_create_card_token----------------------' -print json.dumps(response_create_card_token, indent=2) -print '----------------------response_create_card_token----------------------' +print('----------------------response_create_card_token----------------------') +print(json.dumps(response_create_card_token, indent=2)) +print('----------------------response_create_card_token----------------------') # Com o cartão gerado token na Cielo, já temos o Token do cartão para uma futura cobrança new_card_token = credit_card.card_token -print 'New Card Token:', new_card_token +print('New Card Token:', new_card_token) # Crie uma instância de Sale informando o ID do pagamento sale = Sale('456') @@ -272,9 +272,9 @@ cielo_ecommerce = CieloEcommerce(merchant, environment) # Criar a venda e imprime o retorno response_create_sale = cielo_ecommerce.create_sale(sale) -print '----------------------response_create_sale----------------------' -print json.dumps(response_create_sale, indent=2) -print '----------------------response_create_sale----------------------' +print('----------------------response_create_sale----------------------') +print(json.dumps(response_create_sale, indent=2)) +print('----------------------response_create_sale----------------------') ``` ### Gerando um boleto simples @@ -306,9 +306,9 @@ cielo_ecommerce = CieloEcommerce(merchant, environment) # Criar a venda e imprime o retorno response_create_sale = cielo_ecommerce.create_sale(sale) -print '----------------------response_create_sale----------------------' -print json.dumps(response_create_sale, indent=2) -print '----------------------response_create_sale----------------------' +print('----------------------response_create_sale----------------------') +print(json.dumps(response_create_sale, indent=2)) +print('----------------------response_create_sale----------------------') # Com a venda criada na Cielo, já temos o ID do pagamento, TID e demais # dados retornados pela Cielo @@ -316,11 +316,11 @@ payment_id = sale.payment.payment_id # Com o ID do pagamento, podemos fazer uma consulta do pagamento response_get_sale = cielo_ecommerce.get_sale(payment_id) -print '----------------------response_get_sale----------------------' -print json.dumps(response_get_sale, indent=2) -print '----------------------response_get_sale----------------------' +print('----------------------response_get_sale----------------------') +print(json.dumps(response_get_sale, indent=2)) +print('----------------------response_get_sale----------------------') -print '\r\nLink Boleto:', sale.payment.url, '\r\n' +print('\r\nLink Boleto:', sale.payment.url, '\r\n') ``` ### Gerando um boleto completo @@ -361,9 +361,9 @@ cielo_ecommerce = CieloEcommerce(merchant, environment) # Criar a venda e imprime o retorno response_create_sale = cielo_ecommerce.create_sale(sale) -print '----------------------response_create_sale----------------------' -print json.dumps(response_create_sale, indent=2) -print '----------------------response_create_sale----------------------' +print('----------------------response_create_sale----------------------') +print(json.dumps(response_create_sale, indent=2)) +print('----------------------response_create_sale----------------------') # Com a venda criada na Cielo, já temos o ID do pagamento, TID e demais # dados retornados pela Cielo @@ -371,11 +371,11 @@ payment_id = sale.payment.payment_id # Com o ID do pagamento, podemos fazer uma consulta do pagamento response_get_sale = cielo_ecommerce.get_sale(payment_id) -print '----------------------response_get_sale----------------------' -print json.dumps(response_get_sale, indent=2) -print '----------------------response_get_sale----------------------' +print('----------------------response_get_sale----------------------') +print(json.dumps(response_get_sale, indent=2)) +print('----------------------response_get_sale----------------------') -print '\r\nLink Boleto:', sale.payment.url, '\r\n' +print('\r\nLink Boleto:', sale.payment.url, '\r\n') ``` ## Manual Oficial da Cielo diff --git a/cieloApi3/cieloEcommerce.py b/cieloApi3/cieloEcommerce.py index 1767665..6d93514 100644 --- a/cieloApi3/cieloEcommerce.py +++ b/cieloApi3/cieloEcommerce.py @@ -1,11 +1,17 @@ - from .request.createSale import CreateSale +from .request.modifyRecurrencyAmount import ModifyRecurrencyAmount +from .request.modifyRecurrencyCreditCard import ModifyRecurrencyCreditCard +from .request.modifyRecurrencyDay import ModifyRecurrencyDay +from .request.modifyRecurrencyNextPaymentDate import ModifyRecurrencyNextPaymentDate +from .request.queryOrder import QueryOrder from .request.querySale import QuerySale from .request.updateSale import UpdateSale from .request.createCardToken import CreateCardToken from .request.queryRecorrency import QueryRecorrency from .request.deactivateRecorrency import DeactivateRecorrency from .request.reactivateRecorrency import ReactivateRecorrency +from .request.zeroAuth import ZeroAuth + class CieloEcommerce(object): @@ -15,53 +21,60 @@ def __init__(self, merchant, environment): self.merchant = merchant def create_sale(self, sale): - request = CreateSale(self.merchant, self.environment) - return request.execute(sale) - def capture_sale(self, payment_id, amount = None, service_tax_amount = None): + def capture_sale(self, payment_id, amount=None, service_tax_amount=None): request = UpdateSale('capture', self.merchant, self.environment) - request.amount = amount request.service_tax_amount = service_tax_amount - return request.execute(payment_id) - def cancel_sale(self, payment_id, amount = None): + def cancel_sale(self, payment_id, amount=None): request = UpdateSale('void', self.merchant, self.environment) - request.amount = amount - return request.execute(payment_id) def get_sale(self, payment_id): request = QuerySale(self.merchant, self.environment) - return request.execute(payment_id) - def create_card_token(self, creditCard): - + def create_card_token(self, credit_card): request = CreateCardToken(self.merchant, self.environment) - - return request.execute(creditCard) + return request.execute(credit_card) def get_recurrent_payment(self, recurrent_payment_id): - request = QueryRecorrency(self.merchant, self.environment) - return request.execute(recurrent_payment_id) def deactivate_recurrent_payment(self, recurrent_payment_id): - request = DeactivateRecorrency(self.merchant, self.environment) - return request.execute(recurrent_payment_id) def reactivate_recurrent_payment(self, recurrent_payment_id): - request = ReactivateRecorrency(self.merchant, self.environment) - return request.execute(recurrent_payment_id) + def modify_recurrency_day(self, recurrent_payment_id, day): + request = ModifyRecurrencyDay(self.merchant, self.environment) + return request.execute(recurrent_payment_id, day) + + def modify_recurrency_next_payment_date(self, recurrent_payment_id, string_date): + request = ModifyRecurrencyNextPaymentDate(self.merchant, self.environment) + return request.execute(recurrent_payment_id, string_date) + + def modify_recurrency_amount(self, recurrent_payment_id, amount): + request = ModifyRecurrencyAmount(self.merchant, self.environment) + return request.execute(recurrent_payment_id, amount) + + def modify_recurrency_credit_card(self, payment, recurrent_payment_id): + request = ModifyRecurrencyCreditCard(self.merchant, self.environment) + return request.execute(payment, recurrent_payment_id) + + def get_order(self, order_id): + request = QueryOrder(self.merchant, self.environment) + return request.execute(order_id) + def get_zero_auth(self, credit_card): + request = ZeroAuth(self.merchant, self.environment) + return request.execute(credit_card) diff --git a/cieloApi3/creditCard.py b/cieloApi3/creditCard.py index 5326f96..12f3455 100644 --- a/cieloApi3/creditCard.py +++ b/cieloApi3/creditCard.py @@ -1,6 +1,7 @@ from .objectJSON import ObjectJSON + class CreditCard(ObjectJSON): def __init__(self, security_code, brand): @@ -14,7 +15,6 @@ def __init__(self, security_code, brand): self.card_token = None self.customer_name = None - def update_return(self, response_return): self.card_token = response_return['CardToken'] diff --git a/cieloApi3/payment.py b/cieloApi3/payment.py index 34eafab..16dfb2a 100644 --- a/cieloApi3/payment.py +++ b/cieloApi3/payment.py @@ -10,9 +10,10 @@ PROVIDER_BANCO_DO_BRASIL = "BancoDoBrasil" PROVIDER_SIMULADO = "Simulado" + class Payment(ObjectJSON): - def __init__(self, amount, installments = 1): + def __init__(self, amount, installments=1): self.amount = amount self.service_tax_amount = None @@ -48,14 +49,13 @@ def __init__(self, amount, installments = 1): self.digitable_line = None self.address = None - #Boleto + # Boleto self.boleto_number = None self.assignor = None self.demonstrative = None self.identification = None self.instructions = None - def prepare(self): if self.credit_card: diff --git a/cieloApi3/paymentreturn.py b/cieloApi3/paymentreturn.py new file mode 100644 index 0000000..025d85b --- /dev/null +++ b/cieloApi3/paymentreturn.py @@ -0,0 +1,41 @@ +from datetime import datetime + +from cieloApi3 import CreditCard + + +class PaymentReturn(object): + def __init__(self): + self.payment_id = None + self.recurrent_payment_id = None + self.id_ordem = None + self.tid = None + self.installments = None + self.capture = None + self.recurrent = None + self.credit_card = None + self.amount = None + self.received_date = None + self.status = None + + def update_return(self, r): + self.id_ordem = r.get('MerchantOrderId') + + rp = r.get('Payment') or {} + self.payment_id = rp.get('PaymentId') + self.tid = rp.get('Tid') + self.installments = rp.get('Installments') + self.capture = rp.get('Capture') + self.recurrent = rp.get('Recurrent') + self.amount = rp.get('Amount') + self.received_date = datetime.strptime(rp.get('ReceivedDate'), '%Y-%m-%d %H:%M:%S') + self.status = rp.get('Status') + + cc = rp.get('CreditCard') or {} + self.credit_card = CreditCard(None, None) + self.credit_card.card_number = cc.get('CardNumber') + self.credit_card.holder = cc.get('Holder') + self.credit_card.expiration_date = cc.get('ExpirationDate') + self.credit_card.brand = cc.get('Brand') + + recurrent_payment = rp.get('RecurrentPayment') or {} + self.recurrent_payment_id = recurrent_payment.get('RecurrentPaymentId') diff --git a/cieloApi3/recurrentPayment.py b/cieloApi3/recurrentPayment.py index 726317f..51632f6 100644 --- a/cieloApi3/recurrentPayment.py +++ b/cieloApi3/recurrentPayment.py @@ -5,6 +5,7 @@ INTERVAL_SEMIANNUAL = "SemiAnnual" INTERVAL_ANNUAL = "Annual" + class RecurrentPayment(object): def __init__(self, authorize_now=True): @@ -13,4 +14,5 @@ def __init__(self, authorize_now=True): self.start_date = None self.end_date = None self.interval = None + self.next_recurrency = None self.recurrent_payment_id = None diff --git a/cieloApi3/recurrentpaymentreturn.py b/cieloApi3/recurrentpaymentreturn.py new file mode 100644 index 0000000..58de85d --- /dev/null +++ b/cieloApi3/recurrentpaymentreturn.py @@ -0,0 +1,27 @@ + + +class RecurrentPaymentReturn(object): + def __init__(self): + self.recurrent_payment_id = None + self.start_date = None + self.end_date = None + self.next_recurrency = None + self.interval = None + self.amount = None + self.create_date = None + self.current_recurrency_try = None + self.recurrency_day = None + self.status = None + + def update_return(self, r): + rp = r.get('RecurrentPayment') or {} + self.recurrent_payment_id = rp.get('RecurrentPaymentId') + self.start_date = rp.get('StartDate') + self.end_date = rp.get('EndDate') + self.next_recurrency = rp.get('NextRecurrency') + self.interval = rp.get('Interval') + self.amount = rp.get('Amount') + self.create_date = rp.get('CreateDate') + self.current_recurrency_try = rp.get('CurrentRecurrencyTry') + self.recurrency_day = rp.get('RecurrencyDay') + self.status = rp.get('Status') diff --git a/cieloApi3/request/base.py b/cieloApi3/request/base.py index 3b8cd4d..74ae048 100644 --- a/cieloApi3/request/base.py +++ b/cieloApi3/request/base.py @@ -1,8 +1,10 @@ -import uuid, json - +import logging +import uuid +import json from future.utils import raise_with_traceback from requests import Request, Session + class Base(object): def __init__(self, merchant): @@ -28,7 +30,10 @@ def send_request(self, method, uri, data=None, params=None): headers["Content-Type"] = "application/json" if not isinstance(data, dict): - body = body.toJSON() + if isinstance(data, str): + body = json.dumps(body) + else: + body = body.toJSON() req = Request(method, uri, data=body, headers=headers, params=params) @@ -36,13 +41,20 @@ def send_request(self, method, uri, data=None, params=None): response = s.send(prep) - if 'json' in response.headers['Content-Type'].lower(): - answers = response.json() + if response.status_code >= 500: + raise_with_traceback(Exception(f'A integração respondeu com erro {response.status_code}.')) + + if 'Content-Type' in response.headers: + + if 'json' in response.headers['Content-Type'].lower(): + answers = response.json() + else: + answers = [{ + 'Code': str(response.status_code), + 'Message': response.text + }] else: - answers = [{ - 'Code': str(response.status_code), - 'Message': response.text - }] + answers = [] if response.status_code >= 400: errors = [] @@ -52,6 +64,15 @@ def send_request(self, method, uri, data=None, params=None): data_send = json.loads(body or 'null') - raise_with_traceback(Exception('\r\n%s\r\nMethod: %s\r\nUri: %s\r\nData: %s' % (''.join(errors), method, response.url, json.dumps(data_send, indent=2)))) + raise_with_traceback( + Exception( + '\r\n%s\r\nMethod: %s\r\nUri: %s\r\nData: %s' % ( + ''.join(errors), + method, + response.url, + json.dumps(data_send, indent=2) + ) + ) + ) return answers diff --git a/cieloApi3/request/createSale.py b/cieloApi3/request/createSale.py index 273d6ee..88a56e9 100644 --- a/cieloApi3/request/createSale.py +++ b/cieloApi3/request/createSale.py @@ -1,6 +1,6 @@ - from .base import Base + class CreateSale(Base): def __init__(self, merchant, environment): diff --git a/cieloApi3/request/deactivateRecorrency.py b/cieloApi3/request/deactivateRecorrency.py index b7980d6..9b4cad1 100644 --- a/cieloApi3/request/deactivateRecorrency.py +++ b/cieloApi3/request/deactivateRecorrency.py @@ -1,6 +1,6 @@ - from .base import Base + class DeactivateRecorrency(Base): def __init__(self, merchant, environment): @@ -9,8 +9,8 @@ def __init__(self, merchant, environment): self.environment = environment - def execute(self, payment_id): + def execute(self, recurrent_payment_id): - uri = '%s1/RecurrentPayment/%s/Deactivate' % (self.environment.api_query, payment_id) + uri = '%s1/RecurrentPayment/%s/Deactivate' % (self.environment.api, recurrent_payment_id) return self.send_request("PUT", uri) diff --git a/cieloApi3/request/modifyRecurrencyAmount.py b/cieloApi3/request/modifyRecurrencyAmount.py new file mode 100644 index 0000000..284771d --- /dev/null +++ b/cieloApi3/request/modifyRecurrencyAmount.py @@ -0,0 +1,17 @@ + +from .base import Base + + +class ModifyRecurrencyAmount(Base): + + def __init__(self, merchant, environment): + + super(ModifyRecurrencyAmount, self).__init__(merchant) + + self.environment = environment + + def execute(self, recurrent_payment_id, amount): + + uri = '%s1/RecurrentPayment/%s/Amount' % (self.environment.api, recurrent_payment_id) + + return self.send_request("PUT", uri, amount) diff --git a/cieloApi3/request/modifyRecurrencyCreditCard.py b/cieloApi3/request/modifyRecurrencyCreditCard.py new file mode 100644 index 0000000..2892d4c --- /dev/null +++ b/cieloApi3/request/modifyRecurrencyCreditCard.py @@ -0,0 +1,17 @@ + +from .base import Base + + +class ModifyRecurrencyCreditCard(Base): + + def __init__(self, merchant, environment): + + super(ModifyRecurrencyCreditCard, self).__init__(merchant) + + self.environment = environment + + def execute(self, payment, recurrent_payment_id): + + uri = '%s1/RecurrentPayment/%s/Payment' % (self.environment.api, recurrent_payment_id) + + return self.send_request("PUT", uri, payment) diff --git a/cieloApi3/request/modifyRecurrencyDay.py b/cieloApi3/request/modifyRecurrencyDay.py new file mode 100644 index 0000000..a5f4f7b --- /dev/null +++ b/cieloApi3/request/modifyRecurrencyDay.py @@ -0,0 +1,17 @@ + +from .base import Base + + +class ModifyRecurrencyDay(Base): + + def __init__(self, merchant, environment): + + super(ModifyRecurrencyDay, self).__init__(merchant) + + self.environment = environment + + def execute(self, recurrent_payment_id, day): + + uri = '%s1/RecurrentPayment/%s/RecurrencyDay' % (self.environment.api, recurrent_payment_id) + + return self.send_request("PUT", uri, day) diff --git a/cieloApi3/request/modifyRecurrencyNextPaymentDate.py b/cieloApi3/request/modifyRecurrencyNextPaymentDate.py new file mode 100644 index 0000000..f78264f --- /dev/null +++ b/cieloApi3/request/modifyRecurrencyNextPaymentDate.py @@ -0,0 +1,17 @@ + +from .base import Base + + +class ModifyRecurrencyNextPaymentDate(Base): + + def __init__(self, merchant, environment): + + super(ModifyRecurrencyNextPaymentDate, self).__init__(merchant) + + self.environment = environment + + def execute(self, recurrent_payment_id, string_date): + + uri = '%s1/RecurrentPayment/%s/NextPaymentDate' % (self.environment.api, recurrent_payment_id) + + return self.send_request("PUT", uri, string_date) diff --git a/cieloApi3/request/queryOrder.py b/cieloApi3/request/queryOrder.py new file mode 100644 index 0000000..3e7e264 --- /dev/null +++ b/cieloApi3/request/queryOrder.py @@ -0,0 +1,16 @@ +from .base import Base + + +class QueryOrder(Base): + + def __init__(self, merchant, environment): + + super(QueryOrder, self).__init__(merchant) + + self.environment = environment + + def execute(self, order_id): + + uri = '%s1/sales?merchantOrderId=%s' % (self.environment.api_query, order_id) + + return self.send_request("GET", uri) diff --git a/cieloApi3/request/reactivateRecorrency.py b/cieloApi3/request/reactivateRecorrency.py index c6b0313..f191d98 100644 --- a/cieloApi3/request/reactivateRecorrency.py +++ b/cieloApi3/request/reactivateRecorrency.py @@ -1,6 +1,7 @@ from .base import Base + class ReactivateRecorrency(Base): def __init__(self, merchant, environment): @@ -11,6 +12,6 @@ def __init__(self, merchant, environment): def execute(self, payment_id): - uri = '%s1/RecurrentPayment/%s/Reactivate' % (self.environment.api_query, payment_id) + uri = '%s1/RecurrentPayment/%s/Reactivate' % (self.environment.api, payment_id) return self.send_request("PUT", uri) diff --git a/cieloApi3/request/updateSale.py b/cieloApi3/request/updateSale.py index 41abbb7..c9c639f 100644 --- a/cieloApi3/request/updateSale.py +++ b/cieloApi3/request/updateSale.py @@ -1,6 +1,6 @@ - from .base import Base + class UpdateSale(Base): def __init__(self, type, merchant, environment): diff --git a/cieloApi3/request/zeroAuth.py b/cieloApi3/request/zeroAuth.py new file mode 100644 index 0000000..8c1b72b --- /dev/null +++ b/cieloApi3/request/zeroAuth.py @@ -0,0 +1,18 @@ +from .base import Base + + +class ZeroAuth(Base): + + def __init__(self, merchant, environment): + + super(ZeroAuth, self).__init__(merchant) + + self.environment = environment + + def execute(self, credit_card): + + uri = '%s1/zeroauth' % self.environment.api + + response = self.send_request("POST", uri, credit_card) + + return response diff --git a/cieloApi3/sale.py b/cieloApi3/sale.py index 983e89c..fa452e2 100644 --- a/cieloApi3/sale.py +++ b/cieloApi3/sale.py @@ -1,6 +1,6 @@ - from .objectJSON import ObjectJSON + class Sale(ObjectJSON): def __init__(self, merchant_order_id): @@ -14,7 +14,14 @@ def update_return(self, r): payment = r.get('Payment') or {} self.payment.payment_id = payment.get('PaymentId') self.payment.url = payment.get('Url') + self.payment.tid = payment.get('Tid') + self.payment.installments = payment.get('Installments') + self.payment.status = payment.get('Status') + self.payment.return_message = payment.get('ReturnMessage') + self.payment.received_date = payment.get('ReceivedDate') if self.payment.recurrent_payment: recurrent = payment.get('RecurrentPayment') or {} self.payment.recurrent_payment.recurrent_payment_id = recurrent.get('RecurrentPaymentId') + self.payment.recurrent_payment.next_recurrency = recurrent.get('NextRecurrency') + self.payment.recurrent_payment.interval = recurrent.get('Interval') diff --git a/setup.py b/setup.py index 759f6c6..82bab94 100644 --- a/setup.py +++ b/setup.py @@ -39,6 +39,7 @@ 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.10', ) )