Python使用微信推送


要完成微信的推送,首先需要申请服务号,并且需要进行企业认证,可以实现主动给用户发推送消息的功能

但是如果是个人的,则不能完成,这个时候就需要使用沙箱环境来模拟微信服务号的推送消息

进入这个链接,进入微信的沙箱环境,然后获取到测试号的appID和appsecret

https://mp.weixin.qq.com/debug/cgi-bin/sandboxinfo?action=showinfo&t=sandbox/index

1.用户先关注公众号,只是微信后台知道该用户关注了自己的公众号,我们写的Python程序并不能对应,所以需要通过某种方式来进行关联

2.方式之一,是通过向微信发送一个数据

access_url = "https://open.weixin.qq.com/connect/oauth2/authorize?appid={appid}&redirect_uri={redirect_uri}&response_type=code&scope=snsapi_userinfo&state={state}#wechat_redirect"
access_url = access_url.format(
    # 测试号的appid,后续可以换成商户号的
    appid=settings.WECHAT_CONFIG["app_id"], # 'wxa18e1bfea74f2da3',
    # 回调地址
    redirect_uri=settings.WECHAT_CONFIG["redirect_uri"],
    # 当前登录用户的唯一id,与第三方平台交互的用户唯一id
    state=request.session['user_info']['uid'] # 为当前用户生成MD5值
)
ret['data'] = access_url

3.发送数据后,微信会返回一个链接给我们,这个链接就是将这个用户与我们的系统之间,关联到微信。因此我们自己的系统在发送上述数据后,向前端返回一个链接供用户点击进行授权关联(一般使用二维码进行扫描)

<div id="qrcode" style="width: 250px;height: 250px;background-color: white;margin: 100px auto;">div>

一般通过ajax发送上面的请求,然后成功后将回调信息通过js生成一个二维码图片放到上面的div中,先导入js包


$('#qrcode').empty().qrcode({text: result.data});

用户扫描二维码,用户将进入是否授权获取信息的界面,选择是后将与系统正式绑定,相关代码如下:

res = requests.get(
        url="https://api.weixin.qq.com/sns/oauth2/access_token",
        params={
            "appid": settings.WECHAT_CONFIG["app_id"],
            "secret": settings.WECHAT_CONFIG["appsecret"],
            "code": code,
            "grant_type": 'authorization_code',
        }
    ).json()
"app_id"和"appsecret"是商户或者测试号获取到的