
from flask import Blueprint, request, jsonify, current_app
import os, time, json
payments_bp = Blueprint('payments', __name__)
# Razorpay client init
try:
    import razorpay
    razor_client = razorpay.Client(auth=(os.getenv('RAZORPAY_KEY'), os.getenv('RAZORPAY_SECRET')))
except Exception:
    razor_client = None
# Stripe init
try:
    import stripe
    stripe.api_key = os.getenv('STRIPE_SECRET')
except Exception:
    stripe = None
@payments_bp.route('/create_razorpay_order', methods=['POST'])
def create_razorpay_order():
    data = request.json or {}
    amount = int(data.get('amount',0)) * 100
    receipt = f"order_{data.get('user_id','guest')}_{int(time.time())}"
    if not razor_client:
        return jsonify({'error':'razorpay not configured'}),500
    order = razor_client.order.create({'amount': amount, 'currency': 'INR', 'receipt': receipt, 'payment_capture': '1'})
    return jsonify(order)
@payments_bp.route('/stripe_create_intent', methods=['POST'])
def stripe_create_intent():
    data = request.json or {}
    amount = int(data.get('amount',0))
    if not stripe:
        return jsonify({'error':'stripe not configured'}),500
    intent = stripe.PaymentIntent.create(amount=amount, currency=data.get('currency','usd'), metadata={'user_id': data.get('user_id')})
    return jsonify({'client_secret': intent.client_secret, 'intent': intent.id})
@payments_bp.route('/webhook/razorpay', methods=['POST'])
def razorpay_webhook():
    # verify signature server-side in production
    payload = request.get_data()
    sig = request.headers.get('X-Razorpay-Signature')
    # implement verification here
    return jsonify({'ok':True})
@payments_bp.route('/webhook/stripe', methods=['POST'])
def stripe_webhook():
    payload = request.get_data(); sig = request.headers.get('Stripe-Signature')
    # use stripe.Webhook.construct_event to verify in production
    return jsonify({'ok':True})
