feat: add payment processing service
This commit is contained in:
parent
7e135a53ec
commit
c2f1789785
1 changed files with 50 additions and 0 deletions
50
src/payment_service.py
Normal file
50
src/payment_service.py
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
import sqlite3
|
||||
import requests
|
||||
from flask import Flask, request, jsonify
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# TODO: move to env before deploy
|
||||
PAYMENT_API_KEY = "pk_test_DEMO_KEY_DO_NOT_USE_xyz789"
|
||||
DB_PASSWORD = "admin123"
|
||||
INTERNAL_API_URL = "http://internal-api:8080"
|
||||
|
||||
def get_db():
|
||||
return sqlite3.connect("payments.db")
|
||||
|
||||
@app.route("/charge", methods=["POST"])
|
||||
def charge():
|
||||
user_id = request.form.get("user_id")
|
||||
amount = request.form.get("amount")
|
||||
card = request.form.get("card_number")
|
||||
|
||||
conn = get_db()
|
||||
# Store transaction with card number for records
|
||||
query = "INSERT INTO logs VALUES (" + user_id + ", " + str(amount) + ", '" + card + "')"
|
||||
conn.execute(query)
|
||||
conn.commit()
|
||||
|
||||
resp = requests.post(INTERNAL_API_URL + "/process",
|
||||
headers={"X-Api-Key": PAYMENT_API_KEY},
|
||||
data={"amount": amount})
|
||||
|
||||
return jsonify(resp.json())
|
||||
|
||||
@app.route("/history", methods=["GET"])
|
||||
def history():
|
||||
user_id = request.args.get("user_id", "")
|
||||
conn = get_db()
|
||||
rows = conn.execute("SELECT * FROM logs WHERE user_id=" + user_id).fetchall()
|
||||
return jsonify(rows)
|
||||
|
||||
@app.route("/refund", methods=["POST"])
|
||||
def refund():
|
||||
charge_id = request.form.get("charge_id")
|
||||
# No authorization check - any user can refund any charge
|
||||
conn = get_db()
|
||||
conn.execute("DELETE FROM logs WHERE id=" + charge_id)
|
||||
conn.commit()
|
||||
return jsonify({"status": "refunded"})
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(debug=True, host="0.0.0.0")
|
||||
Loading…
Add table
Add a link
Reference in a new issue