有没有个人微信扫码收款的软件?

3个月前 (01-29) 0 点赞 0 收藏 0 评论 7 已阅读

之前开发的博客论坛,随着用户量不断增加,服务器成本越来越大

想着实现会员制回点服务器成本,经过一番研究,发现个人是不能开通微信的收款功能的

参考了大部分个人站点,都是使用第三方卡密平台进行发卡

我也去某密注册了一个账号,因为手续费、提现规则等各种原因,还是放弃了...

业务场景分析:

用户在站点上付款 -----> 我监听到付款金额 -----> 给用户开通会员

重要的就是如何监听付款,有两种解决方案:

监听GUI:性能消耗巨大、窗口位置会影响监听结果

HOOK微信:实现难度大...

网上搜HOOK框架,一搜一大把,但是都需要付费购买...(也理解,毕竟知识付费的时代...)

不负有心人,最终还是找到个完全免费且稳定的【兔TO微信框架】那就开干!!!

下载框架:[1.0.2.0]兔TO微信框架.rar - 蓝奏云

框架具体如何使用参考这篇文章:使用兔TO框架,实现微信收发消息-CSDN博客

废话不多数,直接运行框架,启动微信

用Flask搭建一个HTTP服务,用来监听微信的消息

from flask import Flask, requestapp = Flask(__name__)  @app.route("/msg", methods=["POST"])def recv_msg():    """监听微信消息"""     # 获取消息    msg = request.get_json()    print(msg)     return "success"  if __name__ == '__main__':    app.run(port=9000)

保存自己的收款码,让小号付个0.01元

收到款后 “服务通知” 或者 “微信支付” 中就会有消息

再来看看监听到的消息是什么,是一段xml,找个工具解析一下这段xml看看有什么可以用的数据

这里可以提取到收款金额,记住这里!

只知道金额是不够的,还要知道是哪个用户付款的,可以让用户付款时备注一下账号

这次付款前带上备注,看看监听到的消息中有没有相关信息

这里就很明显的看到备注信息了

再次解析xml,可以看到,备注信息在lines节点下的第一个子节点中

这里要注意:如果付款时没备注的话,lines下的子节点是没有备注信息的,所以要注意处理一下

定位到这2个地方之后就可以开始撸代码了,完整代码如下:

from flask import Flask, requestimport reimport requestsimport xml.etree.ElementTree app = Flask(__name__)  def recharge(account, amount):    """给后端发送充值请求"""     print(f"尝试为“{account}”开通权限")     # 发送请求    try:        url = "http://v1.xxx.cn/api/recharge"        result = requests.post(url, data={            "account": account,            "amount": amount,            "secret": "xxxxxxxxx",  # 请求密钥,防止恶意请求        }).json()        if result["code"] == 200:            print("开通成功!")        else:            print(f'开通失败,原因:{result["msg"]}')    except:        print("发送请求错误")  @app.route("/msg", methods=["POST"])def recv_msg():    """监听微信消息"""     # 获取消息    msg = request.get_json()    # print(msg)     # 如果消息发送者不是自己、消息类型是49、发送者是“消息通知”或者“微信支付”    if msg["is_self_msg"] == 0 and msg["msg_type"] == 49 and msg["wx_id"] in ["notifymessage", "gh_3dfda90e39d6"]:        # 提取消息内容        content = msg["content"]         # 判断是不是收款码的通知        if re.search(r'<title><!\[CDATA\[微信支付收款.+元.*]]></title>', content):            # 解析xml            root = xml.etree.ElementTree.fromstring(content)             # 提取收到的金额            amount = root.find(".//appmsg/mmreader/template_detail/line_content/topline/value/word").text[1:]            print(f"收到金额:{amount}")             # 提取备注信息            des = ""            lines = root.find(".//appmsg/mmreader/template_detail/line_content/lines")            for line in lines:                if line.find("./key/word").text == "付款方备注":                    des = line.find("./value/word").text            print(f"备注信息:{des}")             # 如果备注是邮箱            if re.match(r'^[\w\.-]+@[\w\.-]+\.\w+$', des):                # 向后端发送请求,开通权限                recharge(account=des, amount=amount)     return "success"  if __name__ == '__main__':    app.run(port=9000)

测试效果,完美!

这个框架只支持Windows,可以去某宝买个几十块钱1年的学生机、找个小号,一直挂着就行了

我用的是阿里99/年的学生机,2h2G3M,装的系统是winserver2012,贼流畅,实测1h2G也行

业务逻辑总结:

用户在网站点击充值按钮 -----> 后端返回个人收款码并标记此次动作为待付款 -----> 前端开始轮询扫码结果 -----> 用户扫码并填写备注付款 -----> 监听到收款消息 -----> 提取收款金额、备注信息,发送给后端 -----> 后端判断账号是否存在、金额是否正确 -----> 开通会员,标记为付款完成

有没有个人微信扫码收款的软件?

本文收录在
0评论

登录

忘记密码 ?

切换登录

注册