This commit is contained in:
hackrobot
2025-04-07 06:46:27 -05:00
parent 8275ce2ce6
commit cdfbabc0f7
20 changed files with 105 additions and 3 deletions

View File

@@ -1,4 +1,4 @@
# payjsapi # androidh5api
@@ -15,14 +15,14 @@ Already a pro? Just edit this README.md and make it your own. Want to make it ea
``` ```
cd existing_repo cd existing_repo
git remote add origin http://gitlab.yidooplanet.com/gitlab-instance-0a899031/payjsapi.git git remote add origin http://gitlab.yidooplanet.com/gitlab-instance-0a899031/androidh5api.git
git branch -M main git branch -M main
git push -uf origin main git push -uf origin main
``` ```
## Integrate with your tools ## Integrate with your tools
- [ ] [Set up project integrations](http://gitlab.yidooplanet.com/gitlab-instance-0a899031/payjsapi/-/settings/integrations) - [ ] [Set up project integrations](http://gitlab.yidooplanet.com/gitlab-instance-0a899031/androidh5api/-/settings/integrations)
## Collaborate with your team ## Collaborate with your team

1
androidh5api.sh Normal file
View File

@@ -0,0 +1 @@
python3 run.py

0
app/__init__.py Normal file
View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

91
app/main.py Normal file
View File

@@ -0,0 +1,91 @@
from fastapi import FastAPI
from fastapi.responses import JSONResponse
from pydantic import BaseModel
from fastapi.middleware.cors import CORSMiddleware
import requests
import hashlib
from urllib.parse import urlencode, unquote
import time
"""
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()
# 允许所有来源跨域访问(不推荐用于生产环境)
origins = ["*"]
# 设置CORS跨域资源共享策略
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # 允许所有来源
allow_credentials=True,
allow_methods=["*"], # 允许所有方法
allow_headers=["*"], # 允许所有请求头
)
@app.get("/")
async def root():
return JSONResponse(content={"message": "Hello World"})
@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": item['total_fee'], # 金额,单位:分
# "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()

4
requirements.txt Normal file
View File

@@ -0,0 +1,4 @@
fastapi
uvicorn
sqlalchemy
pydantic

6
run.py Normal file
View File

@@ -0,0 +1,6 @@
import uvicorn
if __name__ == "__main__":
# uvicorn.run("app.main:app", host="0.0.0.0", port=8700, reload=True)
uvicorn.run("app.main:app", host="127.0.0.1", port=8700, reload=True)