AhmadYarAI commited on
Commit
93e5e01
·
1 Parent(s): c9f148f

Integrate the payment api

Browse files
Files changed (3) hide show
  1. app/routers/payment.py +20 -0
  2. app/services/vaults_pay.py +42 -0
  3. main.py +2 -0
app/routers/payment.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter
2
+ from app.services.vaults_pay import VaultsPayService
3
+
4
+ router = APIRouter()
5
+
6
+ vault_service = VaultsPayService()
7
+
8
+ @router.get("/vaults/token")
9
+ def get_vaults_token():
10
+ try:
11
+ token = vault_service.get_token()
12
+ return {
13
+ "status": "success",
14
+ "access_token": token
15
+ }
16
+ except Exception as e:
17
+ return {
18
+ "status": "error",
19
+ "message": str(e)
20
+ }
app/services/vaults_pay.py ADDED
@@ -0,0 +1,42 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import requests
2
+ import time
3
+
4
+ class VaultsPayService:
5
+
6
+ BASE_URL = "https://testapi.vaultspay.com/public/external/v1"
7
+
8
+ def __init__(self):
9
+ self.client_id = "ID-4564629946"
10
+ self.client_secret = "SECRET-XXXXX"
11
+
12
+ self.access_token = None
13
+ self.token_expiry_time = 0
14
+
15
+ def get_token(self):
16
+ # 🔁 reuse token if not expired
17
+ if self.access_token and time.time() < self.token_expiry_time:
18
+ return self.access_token
19
+
20
+ url = f"{self.BASE_URL}/merchant-auth"
21
+
22
+ response = requests.post(
23
+ url,
24
+ data={
25
+ "clientId": self.client_id,
26
+ "clientSecret": self.client_secret
27
+ }
28
+ )
29
+
30
+ data = response.json()
31
+
32
+ if response.status_code != 200:
33
+ raise Exception("VaultsPay Auth Failed")
34
+
35
+ token = data["data"]["access_token"]
36
+ expiry = data["data"]["token_expiry"]
37
+
38
+ # ⏱️ store token with expiry buffer
39
+ self.access_token = token
40
+ self.token_expiry_time = time.time() + expiry - 30 # buffer
41
+
42
+ return token
main.py CHANGED
@@ -12,6 +12,7 @@ from app.routers import categorybudget
12
  from app.routers import budget
13
  # from openai import OpenAI
14
  from app.routers import chat_ws
 
15
  # create missing tables (won't alter existing columns)
16
  Base.metadata.create_all(bind=engine)
17
 
@@ -44,6 +45,7 @@ app.include_router(expense.router)
44
  app.include_router(categorybudget.router)
45
  app.include_router(budget.router)
46
  app.include_router(chat_ws.router)
 
47
  # app.include_router(users.router)
48
  # app.include_router(posts.router)
49
  # app.include_router(comments.router)
 
12
  from app.routers import budget
13
  # from openai import OpenAI
14
  from app.routers import chat_ws
15
+ from app.routers.payment import router as vault_router
16
  # create missing tables (won't alter existing columns)
17
  Base.metadata.create_all(bind=engine)
18
 
 
45
  app.include_router(categorybudget.router)
46
  app.include_router(budget.router)
47
  app.include_router(chat_ws.router)
48
+ app.include_router(vault_router)
49
  # app.include_router(users.router)
50
  # app.include_router(posts.router)
51
  # app.include_router(comments.router)