-
Notifications
You must be signed in to change notification settings - Fork 3.7k
/
Copy pathb7r
84 lines (73 loc) · 2.61 KB
/
b7r
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from flask import Flask, render_template, request, redirect, url_for, session
import stripe, os, json
from dotenv import load_dotenv
load_dotenv()
app = Flask(__name__)
app.secret_key = 'supersecurekey'
stripe.api_key = os.getenv("STRIPE_SECRET_KEY")
PRODUCTS_FILE = "products.json"
def load_products():
with open(PRODUCTS_FILE, "r", encoding="utf-8") as f:
return json.load(f)
def save_products(products):
with open(PRODUCTS_FILE, "w", encoding="utf-8") as f:
json.dump(products, f, ensure_ascii=False, indent=2)
@app.route("/")
def index():
products = load_products()
return render_template("index.html", products=products)
@app.route("/buy/<product_id>")
def buy(product_id):
products = load_products()
product = next((p for p in products if p["id"] == product_id), None)
if not product:
return "Product not found", 404
session = stripe.checkout.Session.create(
payment_method_types=["card"],
line_items=[{
"price_data": {
"currency": "usd",
"product_data": {"name": product["name"]},
"unit_amount": int(float(product["price"]) * 100),
},
"quantity": 1,
}],
mode="payment",
success_url=url_for("success", _external=True),
cancel_url=url_for("index", _external=True),
)
return redirect(session.url, code=303)
@app.route("/admin", methods=["GET", "POST"])
def admin():
if session.get("logged_in") != True:
return redirect(url_for("login"))
products = load_products()
if request.method == "POST":
new_product = {
"id": f"prod_{len(products)+1}",
"name": request.form["name"],
"price": request.form["price"],
"image": request.form["image"],
"link": request.form["link"],
"desc": request.form["desc"]
}
products.append(new_product)
save_products(products)
return redirect(url_for("admin"))
return render_template("admin.html", products=products)
@app.route("/login", methods=["GET", "POST"])
def login():
if request.method == "POST":
if request.form["username"] == "admin" and request.form["password"] == "1234":
session["logged_in"] = True
return redirect(url_for("admin"))
return render_template("login.html")
@app.route("/logout")
def logout():
session.clear()
return redirect(url_for("index"))
@app.route("/success")
def success():
return "<h1>تم الدفع بنجاح! شكراً لتسوقك من متجر بحر.</h1>"
if __name__ == "__main__":
app.run(debug=True)