from functools import wraps
from flask import request, jsonify
def require_payment(f):
@wraps(f)
def decorated(*args, **kwargs):
auth = request.headers.get('Authorization', '')
if not auth.startswith('Bearer '):
return jsonify({'error': 'Payment Required'}), 402
token = auth[7:]
result = payments.requests.is_valid_request(token, request.json)
if not result['isValid']:
return jsonify({
'error': 'Payment Required',
'reason': result.get('reason')
}), 402
kwargs['credits'] = result['balance']
return f(*args, **kwargs)
return decorated
# Usage
@app.route('/query', methods=['POST'])
@require_payment
def query(credits=0):
print(f"Balance: {credits}")
# Process request...