Files

139 lines
9.3 KiB
Python
Raw Permalink Normal View History

2026-08-02 14:07:04 +08:00
import io
import os
import django
import pydash
from django.core.files.storage import default_storage
from wechat_token.token工具包 import sixToken
django.setup()
from requests import post
class 小程序码与小程序链接:
"""获取所有的小程序码的业务接口"""
def 小程序码_getQRCode(self):
"""
该接口用于获取小程序码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制,详见获取小程序码。
"""
pass
mini_token = sixToken.get_mini_token()
post_url = f"https://api.weixin.qq.com/wxa/getwxacode?access_token={mini_token}"
post_data = {
"path": "tabPage/Home/Home?xiao=zizi",
# 扫码进入的小程序页面路径,最大长度 1024 个字符,不能为空,scancode_time为系统保留参数,不允许配置;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar",即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:"bar"}。
"is_hyaline": True, # 默认值false;是否需要透明底色,为 true 时,生成透明底色的小程序码
"env_version": "trial", # 要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
}
data = post(url=post_url, json=post_data)
default_storage.save(name="uploads/xiao.png", content=io.BytesIO(initial_bytes=data.content)) # 作用:是可以自动将图片保存在指定的media目录下的 uploads目录下的图片名 xiao.png
def 小程序码_getUnlimitedQRCode(self):
"""
该接口用于获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制。 更多用法详见 获取小程序码。
"""
pass
mini_token = sixToken.get_mini_token()
post_url = f"https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token={mini_token}"
post_data = {
"path": "tabPage/Home/Home?zizi=xiaozizi", # 非必填 默认是主页,页面 page,例如 pages/index/index,根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面。scancode_time为系统保留参数,不允许配置
"scene": "abc", # 必填 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符
"is_hyaline": True, # 默认值false;是否需要透明底色,为 true 时,生成透明底色的小程序码
"env_version": "trial", # 要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
}
data = post(url=post_url, json=post_data)
print(data.status_code)
default_storage.save(name="uploads/getUnlimitedQRCode.png", content=io.BytesIO(initial_bytes=data.content)) # 作用:是可以自动将图片保存在指定的media目录下的 uploads目录下的图片名 xiao.png
def 小程序码_createQRCode(self):
"""
该接口用于获取小程序二维码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制。 更多用法详见 获取小程序码。
"""
pass
mini_token = sixToken.get_mini_token()
post_url = f"https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token={mini_token}"
post_data = {
"path": "tabPage/Home/Home?foo=bar", # 非必填 默认是主页,页面 page,例如 pages/index/index,根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面。scancode_time为系统保留参数,不允许配置
"scene": "abc", # 必填 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符
"is_hyaline": True, # 默认值false;是否需要透明底色,为 true 时,生成透明底色的小程序码
"env_version": "trial", # 要打开的小程序版本。正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版。
}
data = post(url=post_url, json=post_data)
print(data.status_code)
default_storage.save(name="uploads/createQRCode.png", content=io.BytesIO(initial_bytes=data.content)) # 作用:是可以自动将图片保存在指定的media目录下的 uploads目录下的图片名 xiao.png
def urlScheme_获取加密Scheme(self):
mini_token = sixToken.get_mini_token()
post_url = f"https://api.weixin.qq.com/wxa/generatescheme?access_token={mini_token}"
post_data = {
"jump_wxa":
{
"path": "tabPage/Home/Home", # 通过 scheme 码进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带 query。path 为空时会跳转小程序主页。
"query": "foo=bar", # 通过 scheme 码进入小程序时的 query,最大1024个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~%`
"env_version": "trial", # 默认值"release"。要打开的小程序版本。正式版为"release",体验版为"trial",开发版为"develop",仅在微信外打开时生效
},
"is_expire": True,
"expire_type": 1, # number 否 默认值0,到期失效的 scheme 码失效类型,失效时间:0,失效间隔天数:1
"expire_interval": 1, # number 否到期失效的 scheme 码的失效间隔天数。生成的到期失效 scheme 码在该间隔时间到达前有效。最长间隔天数为30天。is_expire 为 true 且 expire_type 为 1 时必填
}
data = post(url=post_url, json=post_data)
print(data.status_code)
print(data.json())
openlink = pydash.get(obj=data.json(), path="openlink")
print(openlink)
# default_storage.save(name="uploads/urlScheme.png", content=io.BytesIO(initial_bytes=data.content)) # 作用:是可以自动将图片保存在指定的media目录下的 uploads目录下的图片名 xiao.png
def shortLink(self):
"""
获取小程序 Short Link,适用于微信内拉起小程序的业务场景。目前只开放给电商类目(具体包含以下一级类目:电商平台、商家自营、跨境电商)。通过该接口,可以选择生成到期失效和永久有效的小程序短链,详情见获取 Short Link。
:return:
:rtype:
"""
mini_token = sixToken.get_mini_token()
post_url = f"https://api.weixin.qq.com/wxa/genwxashortlink?access_token={mini_token}"
post_data = {
"page_url": "tabPage/Home/Home?q=1", # 通过 Short Link 进入的小程序页面路径,必须是已经发布的小程序存在的页面,可携带 query,最大1024个字符
"page_title": "Homework title", # string 否 页面标题,不能包含违法信息,超过20字符会用... 截断代替
"is_permanent": True, # boolean 否 默认值false。生成的 Short Link 类型,短期有效:false,永久有效:true
}
data = post(url=post_url, json=post_data)
print(data.status_code)
print(data.json())
link = pydash.get(obj=data.json(), path="link")
print(link)
def urlLink(self):
"""
获取小程序 URL Link,适用于短信、邮件、网页、微信内等拉起小程序的业务场景。
:return:
:rtype:
"""
mini_token = sixToken.get_mini_token()
post_url = f"https://api.weixin.qq.com/wxa/generate_urllink?access_token={mini_token}"
post_data = {
"path": "tabPage/Home/Home", # 通过 URL Link 进入的小程序页面路径,必须是已经发布的小程序存在的页面,不可携带 query 。path 为空时会跳转小程序主页
"query": "aaa=bbb", # 通过 URL Link 进入小程序时的query,最大1024个字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~%
}
data = post(url=post_url, json=post_data)
print(data.status_code)
print(data.json())
url_link = pydash.get(obj=data.json(), path="url_link")
print(url_link)
if __name__ == '__main__':
pass
# 小程序码与小程序链接().小程序码_getQRCode() # 生成的是小程序码
# 小程序码与小程序链接().小程序码_getUnlimitedQRCode() #
# 小程序码与小程序链接().小程序码_createQRCode() # 生成的是二维码
小程序码与小程序链接().urlScheme_获取加密Scheme() # weixin://dl/business/?t=vQAOKCN3Shu 生成的链接 必须要有正式版本才可以
小程序码与小程序链接().shortLink() # 小程序://元宝零售/Homeworktitle/Lsr22VT1TDJwlyj 生成的是链接 必须要有正式版本才可以 目前只开放给电商类目(具体包含以下一级类目:电商平台、商家自营、跨境电商)
小程序码与小程序链接().urlLink() # 生成的是链接 必须要有正式版本才可以 https://wxaurl.cn/nJAFXSaIgym