from io import BytesIO import qrcode from bs4 import BeautifulSoup import cqwu from cqwu.errors.auth import CookieError from cqwu.errors.epay import EPayQrCodeError class GenPayQrcode: async def gen_pay_qrcode( self: "cqwu.Client", show_qrcode: bool = True, ) -> None: """ 生成支付二维码 """ url = "http://218.194.176.214:8382/epay/thirdconsume/qrcode" html = await self.oauth(url) if not html: raise CookieError() if html.url != url: raise CookieError() 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) img.save("qrcode.png") print("生成支付码到 qrcode.png 成功,请打开该文件查看")