You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

42 lines
1.7 KiB

2 years ago
  1. import requests
  2. import simplejson
  3. from urllib.parse import urljoin
  4. from fe.access.auth import Auth
  5. class Buyer:
  6. def __init__(self, url_prefix, user_id, password):
  7. self.url_prefix = urljoin(url_prefix, "buyer/")
  8. self.user_id = user_id
  9. self.password = password
  10. self.token = ""
  11. self.terminal = "my terminal"
  12. self.auth = Auth(url_prefix)
  13. code, self.token = self.auth.login(self.user_id, self.password, self.terminal)
  14. assert code == 200
  15. def new_order(self, store_id: str, book_id_and_count: [(str, int)]) -> (int, str):
  16. books = []
  17. for id_count_pair in book_id_and_count:
  18. books.append({"id": id_count_pair[0], "count": id_count_pair[1]})
  19. json = {"user_id": self.user_id, "store_id": store_id, "books": books}
  20. #print(simplejson.dumps(json))
  21. url = urljoin(self.url_prefix, "new_order")
  22. headers = {"token": self.token}
  23. r = requests.post(url, headers=headers, json=json)
  24. response_json = r.json()
  25. return r.status_code, response_json.get("order_id")
  26. def payment(self, order_id: str):
  27. json = {"user_id": self.user_id, "password": self.password, "order_id": order_id}
  28. url = urljoin(self.url_prefix, "payment")
  29. headers = {"token": self.token}
  30. r = requests.post(url, headers=headers, json=json)
  31. return r.status_code
  32. def add_funds(self, add_value: str) -> int:
  33. json = {"user_id": self.user_id, "password": self.password, "add_value": add_value}
  34. url = urljoin(self.url_prefix, "add_funds")
  35. headers = {"token": self.token}
  36. r = requests.post(url, headers=headers, json=json)
  37. return r.status_code