0
respostas

[Dúvida] Integração mercadopago com python

Estou fazendo uma integração do mercadopago em python, entretando ao tentar realizar pagamento com cartão de crédito o servidor retorna status 500 'internal_error' e não sei por qual razão.

A função que trata isso é

def create_credit_payment(amount:float, installments:int, method:str, description:str, client:Client) -> int:
        if method not in Payment.credit_methods:
            raise Exception("BAD PAYMENT METHOD")
        data = {
            "payer": {
                "email": client.email,
                "first_name": client.first_name,
                "last_name": client.last_name,
                "address": {
                    "street_name": client.address.street_name,
                    "street_number": client.address.street_number,
                    "neighborhood": client.address.neighborhood,
                    "federal_unit": client.address.federal_unit,
                    "city": client.address.city
                }
            },
            "description": description,
            "external_reference": "MP0001",
            "metadata": {},
            "transaction_amount": round(amount, 2),
            "payment_method_id": method,
            "installments": installments
        }
        #client verifications
        if client.cpf != "":
            data['payer']['identification'] = {'type':'CPF', 'number':client.cpf}
        if client.address.zip_code != "":
            data['payer']['address']['zip_code'] = client.address.zip_code
        #token
        data['token'] = Vars.mercadopago_sdk.card_token().create(client.card.get_token())['response']['id']
        #execute payment
        response = Vars.mercadopago_sdk.payment().create(data)
        print(response)
        if response['status'] == 201 or response['status'] == 200:
            return response['response']['id']
        else:
            raise Exception(f"BAD PAYMENT {response['status']} '{response['response']['message']}'")

Estou usando a lib mercadopago versão 2.2.0 em python, já revirei a documentação, revirei o repositório python-sdk, revirei as libs em javascript, e não sei qual o problema. A integração com meio de pagamento via pix está funcionando perfeitamente. o Código completo possui muitas validações e objetos que não importam muito, a única incerteza que tenho é em relação ao token gerado:

def get_token(self) -> dict:
        return {'cardholderName':self.client_name, 'cardExpirationMonth':self.month_expiration, 'cardExpirationYear':self.year_expiration, 'cardNumber':self.card_number, 'securityCode':self.security_code, 'issuer':self.bank_id}

Se alguém puder ajudar ficaria muito grato.