""" Author: xiao 792282@qq.com Date: 2025-08-10 11:36:05 LastEditors: xiao 792282@qq.com LastEditTime: 2025-08-17 13:38:39 FilePath: django_小程序/同城配送工具/小程序用户授权数据.py Description: 这是默认设置,可以在设置》工具》File Description中进行配置 """ from wechat_项目工具包.微信支付工具包.微信支付类 import paymentCategory """功能模块""" import jmespath from requests import post, get class wei小程序服务端工具: """微信登陆""" @classmethod def 获取OPENID(cls, secret: str, js_code: str, appid: str, ) -> dict: """ @param secret: 小程序 appSecret @type secret: string @param js_code: 登录时获取的 code,可通过wx.login获取 @type js_code: string @param appid: 小程序的app🆔 @type appid: string @return:{"session_key":"etC7EOml89Pd8XIhTFyAOA==","expires_in":7200,"openid":"oNTAd0fm1GQAdohfbvywhGstsIPc","unionid":"ojWkM1MnLrdty0S3Vks2pYorp4MY"} @rtype: dict """ url = "https://api.weixin.qq.com/sns/jscode2session" data = { "appid": appid, "secret": secret, "js_code": js_code, "grant_type": "authorization_code" } res_data = get(url=url, params=data) res = res_data.json() errcode = jmespath.search(data=res, expression="errcode", ) if res_data.status_code == 200: if errcode is None: return res else: raise Exception(f"登陆错误码:{res}") raise Exception("请求login登陆时出错了") @classmethod def 获取手机号(cls, url, code: str): """ @param url: @type url: @param code: @type code: @return: {'session_key': 'etC7EOml89Pd8XIhTFyAOA==', 'expires_in': 7200, 'openid': 'oNTAd0fm1GQAdohfbvywhGstsIPc', 'unionid': 'ojWkM1MnLrdty0S3Vks2pYorp4MY'} @rtype: """ data = { "code": code } res_data = post(url=url, json=data) res = res_data.json() # type: dict return res if __name__ == '__main__': pass res = wei小程序服务端工具.获取OPENID( js_code="0e1sYCkl2bCmhg4DG2ll2kheh10sYCkn", appid=paymentCategory.appid, secret=paymentCategory.appsecret, )