This commit is contained in:
hackrobot
2024-04-06 18:29:06 +08:00
parent 6bf52f6405
commit d0cb2a247a
3 changed files with 92 additions and 0 deletions

Binary file not shown.

91
main.py Normal file
View File

@@ -0,0 +1,91 @@
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
"""
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():
print('item')
return "item"
@app.post("/")
async def create_item(item: dict):
print('item', 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()

1
pay.sh Normal file
View File

@@ -0,0 +1 @@
uvicorn main:app --port 8055 --host 0.0.0.0