微信 API --- 常用功能 API

utils/wechatAPI.py

import json

import requests

appid = "wx08c4435aae60c7bc"
secret = "e14a6639624360d227e289b45a0cd1cf"


def getAccessToken():
    """
    获取 access_token
    :return: str
    """
    url = "https://api.weixin.qq.com/cgi-bin/token"
    params = {
        "grant_type": "client_credential",
        "appid": appid,
        "secret": secret
    }
    res = requests.get(url, params=params)
    if res.status_code == 200:
        return json.loads(res.text)["access_token"]
    else:
        return ''


def getOpenId(js_code):
    """
    获取 openId
    :param js_code: 用户调用 wx.login()后返回的 code
    :return: str
    """
    url = "https://api.weixin.qq.com/sns/jscode2session"

    params = {
        "appid": appid,
        "secret": secret,
        "js_code": js_code,
        "grant_type": "authorization_code"
    }

    res = requests.get(url, params=params)
    if res.status_code == 200:
        return json.loads(res.text)["openid"]
    else:
        return {"openid": ''}


def getPhoneNumber(code, openid=None):
    """
    获取用户真实手机号
    :param access_token: getAccessToken() 返回的 access_token
    :param code: 前端调用 getPhoneNumber() 返回的 code
    :param openid: 非必填
    :return: {'errcode': 0, 'errmsg': 'ok', 'phone_info': {'phoneNumber': '17600000000', 'purePhoneNumber': '17600000000', 'countryCode': '86', 'watermark': {'timestamp': 1719580669, 'appid': 'wx08c4435aae60c7bc'}}}
    """
    access_token = getAccessToken()
    url = f"https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token={access_token}"
    data = {
        "code": code
    }

    res = requests.post(url, json=data)
    if res.status_code == 200:
        return json.loads(res.text)
    else:
        return {}


print(getPhoneNumber("b4ffcac170b75f1e66fb6d43e13de034d037d89b8ee909ddcd39960e6c9edd9e"))

posted @ 2023-05-10 14:40  河图s  阅读(154)  评论(0)    收藏  举报