cqwu-ehall/cqwu/methods/epay/gen_pay_qrcode.py

41 lines
1.2 KiB
Python
Raw Normal View History

from io import BytesIO
2022-08-10 15:12:43 +00:00
import qrcode
from bs4 import BeautifulSoup
import cqwu
from cqwu.errors.auth import CookieError
from cqwu.errors.epay import EPayQrCodeError
2022-08-10 15:12:43 +00:00
class GenPayQrcode:
async def gen_pay_qrcode(
self: "cqwu.Client",
show_qrcode: bool = True,
2022-08-10 15:12:43 +00:00
) -> None:
"""
生成支付二维码
"""
url = "http://218.194.176.214:8382/epay/thirdconsume/qrcode"
html = await self.oauth(url)
2022-08-10 15:12:43 +00:00
if not html:
raise CookieError()
if html.url != url:
raise CookieError()
2022-08-10 15:12:43 +00:00
soup = BeautifulSoup(html.text, "lxml")
try:
data = soup.find("input", attrs={"id": "myText"})["value"]
except (ValueError, TypeError, KeyError, IndexError):
return
qr = qrcode.QRCode()
qr.add_data(data)
img = qrcode.make(data)
if not show_qrcode:
img_bytes = BytesIO()
img.save(img_bytes)
img_bytes.seek(0)
raise EPayQrCodeError(img_bytes.getvalue())
qr.print_ascii(invert=True)
2022-08-10 15:12:43 +00:00
img.save("qrcode.png")
print("生成支付码到 qrcode.png 成功,请打开该文件查看")