From d0cb2a247a5dda8037c028bd4f655a626ab8637b Mon Sep 17 00:00:00 2001 From: hackrobot Date: Sat, 6 Apr 2024 18:29:06 +0800 Subject: [PATCH] init --- __pycache__/main.cpython-310.pyc | Bin 0 -> 2015 bytes main.py | 91 +++++++++++++++++++++++++++++++ pay.sh | 1 + 3 files changed, 92 insertions(+) create mode 100644 __pycache__/main.cpython-310.pyc create mode 100644 main.py create mode 100644 pay.sh diff --git a/__pycache__/main.cpython-310.pyc b/__pycache__/main.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3dcb87040a643d21e980dfc5e20cda13832add34 GIT binary patch literal 2015 zcmZux&2Q936rUN7y&7E%_fZAM2 zwR~6!SuA&$ZT3_l%M2cEqgQVCDkI}||IX!&rN>w6Cs*%2Sn6+m7e@wQISV2u1M+=ij}GW_GN9+k&up7LA}@&w;3d?=<}O*f z^^)2sHAdyDJtMVy_xkg@H&z~Nsq~6edA4#->Mc{%D_L%KH?GXCL66cpU+JcKIalx6 zXi?;u$*OLB>kP)mYR{7Xdpch)=N5}9OACE#?%1jCU)++rH~W6itj%7BR)?;$dAZ(+ zY@jP;q_7-Zv~6spdZWl!t=AP-6t++y?yLuIZ7@2J=7xMK@^z_=^?P+KRfj3WZai^Z zS5nFySDR|$PXN%wa!haN{I5B0j8tW~b6 z)ygD0Pjit;%gt^rJE0Aeq)fXqNoKr7j&ZBrA1)|`Dz?P^P5Eo!+>|aDe+Jd`Ho&7bP|4%dUsDDHM2@pR}17lzxM*xKa z*|Oz1R0sg`p_tN~2SiLl3F!h|CATJi&zb3*Tb{7B2t_le zd)x$@je$2{11_Q$-kv}3)lEYNKGGjMJk+4%v0=%t1fY2o- zRLG>P;-&#C6v>*DaSJF}tftvk0%I)>s#=!0aB%OR-!P`uH|DYYO+A;D^Fa0aO%1Z& z%Bs=;NM{j>{R?Sb7kTF3HUD&WXJ==2ty10Det`npwd!QU4^sexM0UD>p?56w=T^P`SbW6 zjziU9(WP>tpkwlci^BnM3#p;8i!Fl5!_7kAZAcmC9;cz#9uKBMFQTCjRz6MN0&r2% ATL1t6 literal 0 HcmV?d00001 diff --git a/main.py b/main.py new file mode 100644 index 0000000..4f6b435 --- /dev/null +++ b/main.py @@ -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() \ No newline at end of file diff --git a/pay.sh b/pay.sh new file mode 100644 index 0000000..3b4c6cb --- /dev/null +++ b/pay.sh @@ -0,0 +1 @@ +uvicorn main:app --port 8055 --host 0.0.0.0