微信推送消息

 

咱們先那測試環境試一下 和真實環境幾乎無差異(微信公衆開發平臺)html

測試環境: 前端

https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 
 
 
其實不少東西都是固定的  
和我的發消息:
import json

import requests

# 其實就比如咱們的cookie同樣 須要給你關注的用戶一個token

# 1. 僞造瀏覽器向 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential... 發送GET請求,並獲取token
r1 = requests.get(
    url = "https://api.weixin.qq.com/cgi-bin/token",
    params = {
        "grant_type": "client_credential",
        "appid":"wxe022764ef61336e9",     #這個是你的信息
        "secret": "29def1418cdd8c8317fd5ad39a127890"   #也oypXF000rxnm9-5PTTaVM851sXL4是捏信息
    },
)


access_token = r1.json().get('access_token')
print(access_token)




wx_id = "oypXF000rxnm9-5PTTaVM851sXL4"  # 這個是關注你的微信的別人的id

body = {
    "touser": wx_id,
    "msgtype": "text",
    "text": {
        "content": '老王'  # 這個是你要給別人發送的信息
    }
}
r2 = requests.post(
    url="https://api.weixin.qq.com/cgi-bin/message/custom/send",
    params ={
        'access_token': access_token,

    },
    data=bytes(json.dumps(body, ensure_ascii=False), encoding='utf-8')
)
print(r2.text)

 

 

若是要發模板信息就要先去開發平臺增長模板內容jquery

 

 

r1 = requests.get(
    url = "https://api.weixin.qq.com/cgi-bin/token",
    params = {
        "grant_type": "client_credential",
        "appid":"wxe022764ef61336e9",
        "secret":"29def1418cdd8c8317fd5ad39a127890"
    }
)
access_token = r1.json().get('access_token')

wx_id = "oypXF000rxnm9-5PTTaVM851sXL4"

body = {
    "touser": wx_id,
    "template_id": 'dD0dm09eqDra4TlbFjXiPlO5fb00Fjz0IL_cyprIkJM',  # 這個是你的在微信開發平臺設置的模板id
    "data": {
        "user": {
            "value": "老王",  # 這個是拼接的內容  能夠給你的模板中憑藉內容
            "color": "#173177"  # 顏色
        }
    }
}

r2 = requests.post(
    url="https://api.weixin.qq.com/cgi-bin/message/template/send",
    params={
        'access_token': access_token
    },
    data=json.dumps(body)
)

print(r2.text)

 

 

 

 

咱們來寫一個微信能夠推送信息的界面ajax

 

 

 

 views:數據庫

from django.shortcuts import render,redirect,HttpResponse

from django.http import JsonResponse,HttpResponse
# Create your views here.
from first import models
def  login(request):
    '''
    用戶登錄界面
    :param request:
    :return:
    '''
    if request.method == "GET":
        return render(request,"login.html")
    user = request.POST.get("user")
    pwd = request.POST.get("pwd")
    obj = models.UserInfo.objects.filter(name = user,pwd =pwd).first()  # 獲取這個用戶對象

    if obj:
        request.session["user_info"] = {"id":obj.id,"name":obj.name}  # 設置session  能夠全局取到
        return redirect("/index/")  # 存在就設置值而後就重新定向到 index界面


    return render(request,"login.html",{"msg":"用戶名或密碼錯誤"})





def index(request):


    current_user_id = request.session["user_info"]["id"]  # 取到全局的 session值
    return render(request,"index.html")



def get_grcode(request):
    '''
    生成第二個圖片的
    :param request:
    :return:
    '''
    ret = {"status":True,"data":None}
    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"     # 把你的信息拼接進去


    url = access_url.format(
        appid = "wxe022764ef61336e9",
        redirect_uri="",  # 這個是重定向的ip
        state=request.session['user_info']['id']   # 用戶id
    )
    ret["data"] = url

    return JsonResponse(ret)


def get_wx_id(request):

    '''
    獲取微信id 而且跟新到數據庫
    :param request:
    :return:
    '''
    import requests  # 能夠模仿http請求
    code = request.GET.get("code")
    state = request.GET.get("state")

    #獲取用戶openID(用戶惟一)
    r1 = requests.get(
        url="https://api.weixin.qq.com/sns/oauth2/access_token", # 固定IP
        params = {
            "appid":"wxe022764ef61336e9",  # 你的 測試帳號的id
            "secret":"29def1418cdd8c8317fd5ad39a127890",  # 你的測試帳帳號的信息
            "code": code,
            "grant_type": 'authorization_code',
        }
    ).json()
    # 獲取的到openid表示用戶受權成功
    wx_id = r1.get("openid")
    user = models.UserInfo.objects.filter(id = state).first()
    if not user.wx_id:
        user.wx_id = wx_id
        user.save()
    return HttpResponse('受權成功')


def test(request):

    user_list = models.UserInfo.objects.all()

    return render(request, 'test.html', {'user_list': user_list})

def send_msg(request):
    """
    發送消息
    :param request:
    :return:
    """
    id = request.session['user_info']['id']
    obj = models.UserInfo.objects.filter(id=id).first()
    import json
    import requests
    # 1. 僞造瀏覽器向 https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential... 發送GET請求,並獲取token
    r1 = requests.get(
        url="https://api.weixin.qq.com/cgi-bin/token",
        params={
            "grant_type": "client_credential",
            "appid": 'wxe022764ef61336e9',
            "secret": '29def1418cdd8c8317fd5ad39a127890',
        }
    )
    access_token = r1.json().get('access_token')

    body = {
        "touser": obj.wx_id,
        "template_id": '5t4MreDNs1Ns6reAz3U-fbjNRzXQjPpjkC10z-GyngI',  # 你的模板的id
        "data": {
            "user": {
                "value": "asdfasdfadfasd",
                "color": "#173177"
            }
        }
    }
    r2 = requests.post(
        url="https://api.weixin.qq.com/cgi-bin/message/template/send",
        params={
            'access_token': access_token
        },
        data=json.dumps(body)
    )
    print(r2.text)
    return HttpResponse('發送成功')
Views

 

 

 

models:django

from django.db import models

# Create your models here.

class UserInfo(models.Model):
     name = models.CharField(max_length = 32)
     pwd = models.CharField(max_length=64)
     wx_id = models.CharField(max_length=32,null = True, blank = True)

 

前端界面:json

login:api

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="post">
    {% csrf_token %}
    <input type="text" name="user">
    <input type="text" name="pwd">
    <input type="submit" value="提交">{{ msg }}
</form>

</body>
</html>
login

 

 

index:瀏覽器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{# #}

<h1>歡迎{{ request.session.user_info.name }}使用大保健2.0</h1> {#從全局中取值 #}

<h3> 掃描關注近期大保健優惠信息(必須關注才能看到近期的姑娘)</h3>

<img  style="width:200px" src="/static/img/0.jpg" alt="">

<h3>下一步請將您的微信ID發給我</h3>
<div id = "qrcode" style="width: 250px;height: 250px;background-color: white;">


</div>


<script src="/static/js/jquery.min.js"></script>
<script src="/static/js/jquery.qrcode.min.js"></script>
<script src="/static/js/qrcode.js"></script>

<script>
    $(function(){
        get_qcode();
    })
        function get_qcode() {
            $.ajax({
                url:'/get_qrcode/',
                type:'GET',
                dataType:'JSON',
                success:function (arg) {
                    //arg = {status:True,data:'xxx'}
                    $('#qrcode').empty().qrcode({text: arg.data});
                }
            })

        }

</script>
</body>
</html>
index

 

test:微信

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <ul>
        {% for item in user_list %}
        <li>{{ item.name }} {{ item.wx_id }}   <a href="/send_msg/">發送消息</a></li>
        {% endfor %}
    </ul>
</body>
</html>
test

 

urls:

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^index/', views.index),
    url(r'^login/', views.login),
    url(r'^get_qrcode/', views.get_qrcode),
    url(r'^get_wx_id/', views.get_wx_id),
    url(r'^test/', views.test),
]
urls
相關文章
相關標籤/搜索