diff --git a/.gitignore b/.gitignore index 4e7f442..6566fd0 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -hls \ No newline at end of file +hls +venv/ \ No newline at end of file diff --git a/core/__pycache__/forms.cpython-312.pyc b/core/__pycache__/forms.cpython-312.pyc new file mode 100644 index 0000000..402e849 Binary files /dev/null and b/core/__pycache__/forms.cpython-312.pyc differ diff --git a/core/blueprints/__init__.py b/core/blueprints/__init__.py index 87a3b69..320dcde 100644 --- a/core/blueprints/__init__.py +++ b/core/blueprints/__init__.py @@ -3,7 +3,7 @@ from flask_session import Session from core.blueprints.utils import logged_in_user def create_app(): - app = Flask(__name__, template_folder="../../ui/templates/") + app = Flask(__name__, template_folder="../../ui/templates/", static_folder="../../ui/static") app.config["SECRET_KEY"] = "" app.config["SESSION_PERMANENT"] = False app.config["SESSION_TYPE"] = "filesystem" @@ -14,8 +14,10 @@ def create_app(): with app.app_context(): from core.blueprints.authentication import auth_bp from core.blueprints.main import main_bp + from core.blueprints.stripe import stripe_bp app.register_blueprint(auth_bp) app.register_blueprint(main_bp) + app.register_blueprint(stripe_bp) return app \ No newline at end of file diff --git a/core/blueprints/__pycache__/__init__.cpython-312.pyc b/core/blueprints/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000..e2f9252 Binary files /dev/null and b/core/blueprints/__pycache__/__init__.cpython-312.pyc differ diff --git a/core/blueprints/__pycache__/authentication.cpython-312.pyc b/core/blueprints/__pycache__/authentication.cpython-312.pyc new file mode 100644 index 0000000..cffbdd4 Binary files /dev/null and b/core/blueprints/__pycache__/authentication.cpython-312.pyc differ diff --git a/core/blueprints/__pycache__/main.cpython-312.pyc b/core/blueprints/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000..0ad7799 Binary files /dev/null and b/core/blueprints/__pycache__/main.cpython-312.pyc differ diff --git a/core/blueprints/__pycache__/stripe.cpython-312.pyc b/core/blueprints/__pycache__/stripe.cpython-312.pyc new file mode 100644 index 0000000..8dd2cb2 Binary files /dev/null and b/core/blueprints/__pycache__/stripe.cpython-312.pyc differ diff --git a/core/blueprints/__pycache__/utils.cpython-312.pyc b/core/blueprints/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000..6ed7cf5 Binary files /dev/null and b/core/blueprints/__pycache__/utils.cpython-312.pyc differ diff --git a/core/blueprints/stripe.py b/core/blueprints/stripe.py new file mode 100644 index 0000000..07a8cde --- /dev/null +++ b/core/blueprints/stripe.py @@ -0,0 +1,38 @@ +from flask import render_template, Blueprint, request, jsonify + +import stripe + +stripe_bp = Blueprint("stripe", __name__) + +stripe.api_key = 'sk_test_51QikGlGk6yuk3uA8muEMPjMhUvbZWZiMCYQArZRXcFVn26hbt1kTz5yUVWkk3RQlltArbAXmVmkfEHU2z1Ch5Obv00Y03oT127' + +@stripe_bp.route('/create-checkout-session', methods=['POST']) +def create_checkout_session(): + try: + session = stripe.checkout.Session.create( + ui_mode = 'embedded', + payment_method_types=['card'], + line_items=[ + { + 'price': 'price_1QikNCGk6yuk3uA86mZf3dmM', #Subscription ID + 'quantity': 1, + }, + ], + mode='subscription', + redirect_on_completion = 'never' + ) + except Exception as e: + print(e) + return str(e) + + return jsonify(clientSecret=session.client_secret) + +@stripe_bp.route('/session-status', methods=['GET']) # check for payment status +def session_status(): + session = stripe.checkout.Session.retrieve(request.args.get('session_id')) + + return jsonify(status=session.status, customer_email=session.customer_details.email) + +@stripe_bp.route('/checkout', methods=['GET']) +def checkout(): + return render_template("checkout.html") \ No newline at end of file diff --git a/database/__pycache__/database.cpython-312.pyc b/database/__pycache__/database.cpython-312.pyc new file mode 100644 index 0000000..33db197 Binary files /dev/null and b/database/__pycache__/database.cpython-312.pyc differ diff --git a/ui/static/checkout.js b/ui/static/checkout.js new file mode 100644 index 0000000..ea934a2 --- /dev/null +++ b/ui/static/checkout.js @@ -0,0 +1,21 @@ +const stripe = Stripe("pk_test_51QikGlGk6yuk3uA8MT3uQrPMpUqJlKzkxfbrfrd34yXolWSbJYEFWm674s2aUydZyjjS0W2oByEJTV0LXMs1pWTk002ioHxQl6"); + +initialize(); + +// Create a Checkout Session +async function initialize() { + const fetchClientSecret = async () => { + const response = await fetch("/create-checkout-session", { + method: "POST", + }); + const { clientSecret } = await response.json(); + return clientSecret; + }; + + const checkout = await stripe.initEmbeddedCheckout({ + fetchClientSecret, + }); + + // Mount Checkout + checkout.mount('#checkout'); +} \ No newline at end of file diff --git a/ui/templates/base.html b/ui/templates/base.html index 5ddd280..99a6f02 100644 --- a/ui/templates/base.html +++ b/ui/templates/base.html @@ -4,6 +4,8 @@