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.