from flask import Flask, request, jsonify, render_template
import mercadopago
import uuid

app = Flask(__name__)

# Configure sua chave de acesso Mercado Pago
sdk = mercadopago.SDK("APP_USR-5256639034659263-082713-2da3af28199a46ef31ab449d6e70e66c-680374983")

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/process_payment', methods=['POST'])
def process_payment():
    data = request.get_json()
    
    print("Dados recebidos do formulário:", data)

    try:
        transaction_amount = float(data['transaction_amount'])
        if transaction_amount <= 0:
            return jsonify({"error": "O valor deve ser positivo"}), 400
    except ValueError:
        return jsonify({"error": "Valor inválido para 'transaction_amount'"}), 400

    payment_data = {
        "transaction_amount": transaction_amount,
        "description": data['description'],
        "payment_method_id": "pix",
        "payer": {
            "email": data['email'],
            "first_name": data['first_name'],
            "last_name": data['last_name'],
            "identification": {
                "number": data['identification_number']
            }
        }
    }

    print("Dados de pagamento enviados para API:", payment_data)

    request_options = mercadopago.config.RequestOptions()
    request_options.custom_headers = {
        'x-idempotency-key': str(uuid.uuid4())
    }

    payment_response = sdk.payment().create(payment_data, request_options)
    payment = payment_response['response']

    print("Resposta Completa da API:", payment)

    if 'point_of_interaction' in payment and 'transaction_data' in payment['point_of_interaction']:
        return jsonify({
            "qr_code_base64": payment['point_of_interaction']['transaction_data']['qr_code_base64'],
            "qr_code": payment['point_of_interaction']['transaction_data']['qr_code']
        })
    else:
        return jsonify({"error": "Não foi possível gerar o código QR", "detalhes": payment}), 400

if __name__ == '__main__':
    app.run(debug=True)