h5 后端支付代码 ``` ``` 机器人代码 ``` from fastapi import FastAPI from pydantic import BaseModel import requests import json # -*- coding: utf-8 -*- import time import hashlib from urllib.parse import urlencode, unquote import random print(round(random.random(),1) ) num=round(random.random(),1) # intNum=random.randint(10,90)+100 # print(int(intNum)) """ JSAPI 支付 """ key = "zA2hBU6pv6CIBzkW" # 填写通信密钥 mchid = "1561724891" # 特写商户号 # 构造签名函数 def sign(attributes): attributes_new = {k: attributes[k] for k in sorted(attributes.keys())} return ( hashlib.md5( (unquote(urlencode(attributes_new)) + "&key=" + key).encode( encoding="utf-8" ) ) .hexdigest() .upper() ) class Item(BaseModel): event: str EventGroupMsg: None = None prirobot_wxidce: None = None type: None = None # event # "":"EventGroupMsg",//事件标示(当前值为群消息事件) # "robot_wxid":"wxid_5hxa04j4z6pg22",//机器人wxid # "robot_name":"",//机器人昵称,一般为空 # "type":1,//1/文本消息 3/图片消息 34/语音消息 42/名片消息 43/视频 47/动态表情 48/地理位置 49/分享链接 2000/转账 2001/红包 2002/小程序 2003/群邀请 # "from_wxid":"18900134932@chatroom",//群id,群消息事件才有 # "from_name":"微群测",//群名字 # "final_from_wxid":"sundreamer",//发该消息的用户微信id # "final_from_name":"遗忘悠剑o",//微信昵称 # "to_wxid":"wxid_5hxa04j4z6pg22",//接收消息的人id,(一般是机器人收到了,也有可能是机器人发出的消息,别人收到了,那就是别人) # "msg":"图片https://b3logfile.com/bing/20201024.jpg",//消息内容(string/array) 使用时候根据不同的事件标示来定义这个值,字符串类型或者数据类型 # "money":0.01 //金额,只有"EventReceivedTransfer"事件才有该参数 app = FastAPI() @app.get("/") async def root(): payload2 = {'event': 'SendTextMsg', 'robot_wxid': 'wxid_haqoszjheyuz22', 'robot_name': '', 'type': 1, 'from_wxid': 'wxid_haqoszjheyuz22', 'from_name': '', 'final_from_wxid': 'wxid_haqoszjheyuz22', 'final_from_name': '', 'to_wxid': 'wxid_4413224132412', 'msgid': '1284190763721151116', 'msg': '1111111'} # 网址返回wxid以及时间戳 mag = {"title:": '标题', "text": '活动小助手', "target_url": 'https://hackrobot.cn', "pic_url": "https://aiimg.hackrobot.cn/1698288150.2901459.png", "icon_url": "https://www.hackrobot.cn/wp-content/uploads/2023/05/cropped-Screenshot-2023-05-22-at-17.26.38-32x32.png"} link = {'event': 'SendLinkMsg', 'robot_wxid': 'wxid_haqoszjheyuz22', 'robot_name': '', 'from_wxid': 'wxid_haqoszjheyuz22', 'from_name': '', 'final_from_wxid': 'wxid_haqoszjheyuz22', 'final_from_name': '', 'to_wxid': 'wxid_4413224132412', 'msg': mag} # r = requests.post("http://192.168.31.25:8090", data=payload) # r = requests.post("http://192.168.31.25:8090", json=payload) # 获取好友列表 getinfo = {'event': 'GetFriendList', 'robot_wxid': 'wxid_haqoszjheyuz22'} xmllink = {'event': 'SendTextMsg', 'robot_wxid': 'wxid_haqoszjheyuz22', 'robot_name': '', 'type': 49, 'from_wxid': 'wxid_haqoszjheyuz22', 'from_name': '', 'final_from_wxid': 'wxid_haqoszjheyuz22', 'final_from_name': '', 'to_wxid': 'wxid_4413224132412', 'msgid': '894964783959555477', 'msg': '''\r\n wxid_haqoszjheyuz22\r\n 0\r\n \r\n \r\n \r\n 活动小助手\r\n view\r\n 5\r\n 0\r\n \r\n https://hackrobot.cn\r\n \r\n \r\n \r\n \r\n \r\n \r\n https://aiimg.hackrobot.cn/1698288150.2901459.png\r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 0\r\n \r\n \r\n \r\n \r\n 1\r\n Window wechat\r\n \r\n\r\n'''} file={'event': 'SendFileMsg','robot_wxid': 'wxid_haqoszjheyuz22', 'to_wxid': 'wxid_4413224132412', 'msg': 'C:\\Users\\Administrator\\Documents\\Applet\\static\\.mp3'} # r = requests.post("http://192.168.31.25:8090", data=json.dumps(link)) print('item') return "item" @app.post("/") async def create_item(item: dict): print('item', item) # 自动接受好友 # 接受好友自动回复:link链接 return "item1" @app.post("/friend") async def friend(item: dict): print('friend', item) return "item1" @app.post("/payh5") async def payh5(item: dict): print('item', item) timenew = str(int(time.time())) order = { "mchid": mchid, "body": timenew, # 订单标题 "out_trade_no": timenew, # 订单号 "total_fee": 100, # 金额,单位:分 # "openid": "o7LFAwWu3OhSrs49-1x5cSlFm0D8", # 通过openid接口获取到的openid # "notify_url": "" # "callback_url":'https://aiimg.hackrobot.cn/api' } order["callback_url"] =item['callback_url'] order["openid"] =item['openid'] order["sign"] = sign(order) request_url = "https://payjs.cn/api/jsapi" # 返回结果中包含`jsapi`字段,该字段的值即是前端发起时所需的6个支付参数 headers = {"content-type": "application/x-www-form-urlencoded"} response = requests.post(request_url, data=order, headers=headers) if response: print(response.json()) return response.json() ```