commit 9a923a67b9f781da84be216b405331102b37c81f
Author: jefferyzhao <375696853@qq.com>
Date: Wed Jul 30 18:53:06 2025 +0800
first commit
diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 0000000..a25e513
Binary files /dev/null and b/.DS_Store differ
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..081b737
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 数据源本地存储已忽略文件
+/dataSources/
+/dataSources.local.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
diff --git a/.idea/enterprise-wechat-payment-push.iml b/.idea/enterprise-wechat-payment-push.iml
new file mode 100644
index 0000000..f936df0
--- /dev/null
+++ b/.idea/enterprise-wechat-payment-push.iml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..a2e120d
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..4adf23a
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/1.py b/1.py
new file mode 100644
index 0000000..30efd8a
--- /dev/null
+++ b/1.py
@@ -0,0 +1,4 @@
+from utils import *
+
+a = query_pay_details("231002197204291515")
+logger.info(fa)
\ No newline at end of file
diff --git a/FuiouPay.py b/FuiouPay.py
new file mode 100644
index 0000000..cb8c922
--- /dev/null
+++ b/FuiouPay.py
@@ -0,0 +1,71 @@
+import json
+from datetime import datetime
+
+import requests
+from Crypto.PublicKey import RSA
+import base64
+from Crypto.Cipher import PKCS1_v1_5
+import logging
+
+logger = logging.getLogger(__name__)
+
+# 使用公钥加密
+def rsa_long_encrypt(public_key,msg, length=100):
+ """
+ 单次加密串的长度最大为 (key_size/8)-11
+ 1024bit的证书用100, 2048bit的证书用 200
+ """
+ pub_key = RSA.importKey(open(public_key).read())
+ # pub_key = RSA.importKey(open('E:/YinJian/银建支付对接维护说明/富友/fy-enterprise-wechat-payment-push/pub_key.pem').read())
+ pubobj = PKCS1_v1_5.new(pub_key)
+ res = []
+ for i in range(0, len(msg), length):
+ res.append(pubobj.encrypt(msg[i:i + length].encode('GBK')))
+ return base64.b64encode(b"".join(res)).decode('GBK')
+
+
+class H5Main:
+ def __init__(self, sub_mchnt_cd):
+ self.mchnt_cd = "0001000F7152279"
+ self.sub_mchnt_cd = sub_mchnt_cd
+ self.url = 'https://aggpcpay.fuioupay.com/aggh5Gate.fuiou'
+ self.notify_url = "http://web.jiyuankeshang.com/api2/paymentCallBack"
+ # self.notify_url = "http://172.16.6.15:3006/paymentCallBack"
+
+ def unified_order(self, order_no, total, description):
+ if self.sub_mchnt_cd == '0001000F7152364':
+ param = {
+ "mchnt_cd": self.sub_mchnt_cd,
+ "order_date": datetime.now().strftime("%Y%m%d"),
+ "order_id": order_no,
+ "order_amt": total,
+ "page_notify_url": self.notify_url,
+ "back_notify_url": self.notify_url,
+ "ver": "4.0.0",
+ "goods_name": "履约服务费",
+ "goods_detail": description,
+ "fee_type": "CNY",
+ }
+ pub_key_location = 'dg_pub_key.pem'
+ # pub_key_location = 'E:\YinJian\银建支付对接维护说明\DP\DP-enterprise-wechat-payment-push\dg_pub_key.pem'
+ else:
+ param = {
+ "mchnt_cd": self.mchnt_cd,
+ "sub_mchnt_cd": self.sub_mchnt_cd,
+ "order_date": datetime.now().strftime("%Y%m%d"),
+ "order_id": order_no,
+ "order_amt": total,
+ "page_notify_url": self.notify_url,
+ "back_notify_url": self.notify_url,
+ "ver": "4.0.0",
+ "goods_name": "承包金",
+ "goods_detail": description,
+ "fee_type": "CNY",
+ }
+ pub_key_location = 'pub_key.pem'
+ # pub_key_location = 'E:\YinJian\银建支付对接维护说明\DP\DP-enterprise-wechat-payment-push\pub_key.pem'
+ logger.info(f"======================发起支付===================={param}")
+ # 加密
+ message = json.dumps(param)
+ encrypted_message = rsa_long_encrypt(pub_key_location,message,100)
+ return json.dumps({"message": encrypted_message})
\ No newline at end of file
diff --git a/__pycache__/FuiouPay.cpython-36.pyc b/__pycache__/FuiouPay.cpython-36.pyc
new file mode 100644
index 0000000..7aa9d46
Binary files /dev/null and b/__pycache__/FuiouPay.cpython-36.pyc differ
diff --git a/__pycache__/FuiouPay.cpython-37.pyc b/__pycache__/FuiouPay.cpython-37.pyc
new file mode 100644
index 0000000..af53a57
Binary files /dev/null and b/__pycache__/FuiouPay.cpython-37.pyc differ
diff --git a/__pycache__/app.cpython-37.pyc b/__pycache__/app.cpython-37.pyc
new file mode 100644
index 0000000..fd68221
Binary files /dev/null and b/__pycache__/app.cpython-37.pyc differ
diff --git a/__pycache__/config.cpython-36.pyc b/__pycache__/config.cpython-36.pyc
new file mode 100644
index 0000000..cabcab6
Binary files /dev/null and b/__pycache__/config.cpython-36.pyc differ
diff --git a/__pycache__/config.cpython-37.pyc b/__pycache__/config.cpython-37.pyc
new file mode 100644
index 0000000..3411422
Binary files /dev/null and b/__pycache__/config.cpython-37.pyc differ
diff --git a/__pycache__/dpapp.cpython-37.pyc b/__pycache__/dpapp.cpython-37.pyc
new file mode 100644
index 0000000..825b2fb
Binary files /dev/null and b/__pycache__/dpapp.cpython-37.pyc differ
diff --git a/__pycache__/utils.cpython-36.pyc b/__pycache__/utils.cpython-36.pyc
new file mode 100644
index 0000000..0d858eb
Binary files /dev/null and b/__pycache__/utils.cpython-36.pyc differ
diff --git a/__pycache__/utils.cpython-37.pyc b/__pycache__/utils.cpython-37.pyc
new file mode 100644
index 0000000..d3635a3
Binary files /dev/null and b/__pycache__/utils.cpython-37.pyc differ
diff --git a/config.py b/config.py
new file mode 100644
index 0000000..217fee3
--- /dev/null
+++ b/config.py
@@ -0,0 +1,56 @@
+'''
+coding:utf-8
+@Time:2023/3/28 5:02 PM
+@Author:dyq
+'''
+
+# 调用域名
+base_path = 'https://www.jiyuankeshang.com'
+# 企微应用id 应用ID
+corpid = 'wweb8b852846334c2f'
+zy_corpid = 'wwc276f7a0347c310b'
+SECRET = 'MPa5NNk5SpE51CWrJEr6CkjWOzcpUxA_oIMC47bmj5c'
+ZY_SECRET = 'ozJbEVP-tHzOJyNIfeANlvZ7lIO9Pu0GJYv1pzUmjsE'
+zy_agentid = '1000092'
+agentid = '1000005'
+# 商户号
+#mchid = '1640957093'
+# APIv3密钥
+v3_SECRET = '87568e2507acb94056e7310c9c2ab9d5'
+# 服务器IP
+ip = '101.43.208.145'
+# 商户号证书序列号
+#serial_no = '22E0F3EA849ABD1E687C82D43D26190C46DA5834'
+# 未收付应用id
+pay_app = '675b8d1a24d61bca7bf1cb4c'
+lw_pay_app = '65815f117de49256b1e67e75'
+# # 已收表单Id
+received_id = '67f37759de8bbe9eed71b793'
+lw_received_id = '66038178cdefd20d643ae7c5'
+# # 未收表单Id
+uncollected_id = '67e21d2ebaccd58c66fa7c77'
+lw_uncollected_id = '660376f8e0f50cf16cd2971a'
+# # 充值明细
+pay_details_id = '67ee3fa22e399b68fef8d839'
+lw_pay_details_id = '659fa34cd0365889c7750269'
+# # 个人账户
+accout_id = '67ee40362e399b68fef8e000'
+# 增减项app
+hz_app = '675b8d1a24d61bca7bf1cb4c'
+# 增减项表单
+hz_id = '67f38f4abaccd58c66bd7246'
+# 驾驶员信息表单
+# ht_id = '658e440978f6daedd0db50c3'
+ht_id = '658e233e78f6daedd0da54c6'
+# 收付款事由基础设置表单
+reasons_id = '680ae70dde8bbe9eed7fa8f0'
+# apikey
+apikey = '82bl1lhsgjzhd9ahBYvaMNVAncYYRkbE'
+# 辅助表单(查询驾驶员身份证号)
+fu_app = '6437c223ee895d000812a37d'
+fu_id = '64685d55e6051a000edad530'
+# 财务管理应用ID
+cw_app = '675b8d1a24d61bca7bf1cb4c'
+#驾驶员支付信息
+transactions_id = '66a850d3b3c800c6f541be2f'
+rule_sort = {"收预收承包金": 0, "承包金": 1, "调度费": 2, "保养费": 3, "费税收取-其他": 4}
\ No newline at end of file
diff --git a/dg_priv_key.pem b/dg_priv_key.pem
new file mode 100644
index 0000000..f3972c0
--- /dev/null
+++ b/dg_priv_key.pem
@@ -0,0 +1,3 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC822wv9HcW+qqn8l8ne5ICkUh1rFGGrBuGvrmO0ULemFsGpp3g+opW8u2dKJxy+ezqywe+2IU6vuGqIp32FW4EjjeuTKq1UcD7mAiPc0jmp60DD5Jy1ILBBiwEX1WY4GLVHn5kzG4E5XX9fxAg69zBpxDaI//cUljdBUGY/ZL79qAo22Oq1f2va+wEA+uJA0qir0/BO1tMxraa6PmFRniOAIof+49nIaKS+QKV01P9qcllZ61woI6QzWtDuuTIXllxOM9tFh0SPePHTnuXJrA6/bsqkbYOUGC7b6DA22KQVF51fWFD5bNbWuCYUYi6Sj9ErU1KUmrHs24D2Hd+ON+jAgMBAAECggEBAIUpqlT96OK5CI+3JETwqnlI+3CNekadICOYY7pB7waJItXDsdqqjdTVIZoIwpeHhffgBKwae4Z6hR+znPGhFpv7s2MhB9Ulug8smgyb2zFX1XQtDLQPB8sWkP7cQbyzqrxe7fwg8QpeyR1e9H5iEJwzMny9mXE+Vw4w4JoBYhxqBzZgVn1rn5w4pt+UonFo5peZSoDDYSm37ReJ9Ay6/XzS3SEGOA1cKxYfpltZ7MBTmspAxBSgDlrmW+wjnN6qZuDOQkq9YodmaZUqcv4j+JupGbPPKxbhAOOxvnLTB2QQpWqKBZ4iwlpjb921498zxIZJ1JdTqJ4e2MCM60+/QaECgYEA91DVOv4QZrxN8f1YAWqfdDrE9UZP/9DC06BKOEGv6g8ez/QffKrI7RQDaeE3b6vorbWQuHSfV+3UNCDS/RGN8VNuTpHLMnfV7HS4PtkMSEZeH0dNVIaWtzWFUrnniN+HWwFxJQ/jncBlIannMEWfemmCM0GeumO7TVgZfcrza0kCgYEAw30YHVHC5DuFwW3LYZTZLFPRNnK7ZKFb/TgTBKMGMi3ogiQhKUNuTRa/z+7aq3TGmPqIC157Ua1fnzTm8llnZPaHYCHcrQoE83rwg9mNvkIx9IWEAfGrl5HjmcbnHlAsWPBbFBqzHZZoRAnOYHMHfJfP3YU/yHIy4RZCKV+Jp4sCgYA+WzcoJJ7mCFxuwz3JPaTunVLDtPK+wVgeG7Aa9xTvothV/mth932pqP4jWBGuKl4ETl8q4ty6QtDaQ9xuylpLmomZbdEZ7HUXpWY/EmKyZmuc31F0GmstzmTLMuxZ6mIqY/avLY5qW/QjxL7xwNww9SFK4ySuQi8blTb4LI+rYQKBgEYBTRpqxh0PR7XeCKAYOrFKDrit23eM5TFH3F+jtbtQf1vjblCliiFnDSd8RKhzuA7eYMuZeRXlvUF5I18ULxeTxSTi23DIDr/Wfbzpsn24nMUQ7xX3Iliz8MqH1Qog8dCjuin36b6ltw7uaA5YAw1WHCUa651vb9L1Mpo4UUZDAoGBAKFC4B+n016uGniY8qCDsQtSSz3HfuH4X2zq5KXkeETBkWYD3UK6Z7cluOJSh2qFf9NHvuZEMJCw6pI545zVPrwBoBRwDVxGcSNcUQvCs+G7XWsv5MsZ29h+AnthVB047dFJUrj4t6fzDlOTyJWS1w63FT29CQquRJ4Lp40cinmv
+-----END PRIVATE KEY-----
\ No newline at end of file
diff --git a/dg_pub_key.pem b/dg_pub_key.pem
new file mode 100644
index 0000000..e554c48
--- /dev/null
+++ b/dg_pub_key.pem
@@ -0,0 +1,3 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDKH7pCZGo8n1Lk1F5I034gR6mAMfyIZSvLe2sZdh8QQ+qw+dBNvZZej/c8wwBmKH889zF5f1UEtrywN0e8iEOjkyGAeo55qLcy5ZNyC6/ox1JTyW4kqJRGJZ2tk9rZt/UBkSO3sOK8XPIR47m3qNhioZuuFIIUS03PgRXByHXozwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/dpapp.py b/dpapp.py
new file mode 100644
index 0000000..14049f8
--- /dev/null
+++ b/dpapp.py
@@ -0,0 +1,333 @@
+from flask import Flask, request, redirect, abort, session, jsonify
+from utils import *
+from FuiouPay import H5Main
+# from WXPay import WXPay
+import os, _thread, urllib
+import logging
+from logging.handlers import TimedRotatingFileHandler
+from flask_cors import CORS
+
+
+
+app = Flask(__name__)
+app.config['SECRET_KEY'] = os.urandom(24)
+CORS(app, supports_credentials=True)
+
+def setup_logging():
+ """配置日志系统,按天分割日志文件"""
+ # 创建日志目录
+ log_dir = "logs"
+ os.makedirs(log_dir, exist_ok=True)
+
+ # 设置日志格式
+ log_format = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
+ formatter = logging.Formatter(log_format)
+
+ # 创建按天轮转的文件处理器
+ file_handler = TimedRotatingFileHandler(
+ filename=os.path.join(log_dir, 'dpapp.log'),
+ when='midnight', # 每天午夜轮转
+ interval=1, # 每天一个文件
+ backupCount=30, # 保留30天的日志
+ encoding='utf-8'
+ )
+ file_handler.setFormatter(formatter)
+ file_handler.setLevel(logging.INFO)
+
+ # 创建控制台处理器
+ console_handler = logging.StreamHandler()
+ console_handler.setFormatter(formatter)
+ console_handler.setLevel(logging.DEBUG)
+
+ # 获取根logger并配置
+ logger = logging.getLogger()
+ logger.setLevel(logging.DEBUG)
+ logger.addHandler(file_handler)
+ logger.addHandler(console_handler)
+
+
+# 初始化日志配置
+setup_logging()
+
+# 获取当前模块的 logger
+logger = logging.getLogger(__name__)
+logger.info(f"DPPayApp started") # 会输出到文件和控制台
+
+@app.route('/queryUserId', methods=['GET'])
+def queryUserId():
+ # 获取支付明细
+ try:
+ code = request.args.get('code')
+ data = query_wx_userid(code)
+ if len(data) <= 11:
+ res = query_wx_fj_info(data)
+ data = res
+ return redirect(f'http://web.jiyuankeshang.com/#/DPpay?user={data}&appid={corpid}&agentid={agentid}')
+ except Exception as e:
+ return {}
+
+@app.route('/queryUserIdZY', methods=['GET'])
+def queryUserIdZY():
+ # 获取支付明细
+ try:
+ code = request.args.get('code')
+ data = query_zy_wx_userid(code)
+ if len(data) <= 11:
+ res = query_zy_wx_fj_info(data)
+ data = res
+ return redirect(f'http://web.jiyuankeshang.com/#/DPpay?user={data}&appid={zy_corpid}&agentid={zy_agentid}')
+ except Exception as e:
+ return {}
+
+
+@app.route('/queryUser', methods=['GET'])
+def queryUserApi():
+ # 获取支付明细
+ try:
+ id = request.args.get('user')
+ data = queryUser(id)
+ for item in data['pay_detail']:
+ if 'charge_amount' in item:
+ item['price'] = item.pop('charge_amount')
+ if 'charge_time' in item:
+ item['time'] = item.pop('charge_time')
+ logger.info(f"===================queryUserdata{data}")
+ return data
+ except Exception as e:
+ return {}
+
+
+@app.route('/getPaymentDetails', methods=['GET'])
+def getPaymentDetails():
+ try:
+ id = request.args.get('user', '')
+
+ id = id.replace(" ", "")
+
+ if not id:
+ logger.info(f"no id")
+ return {}
+ data = query_pay_details(id)
+ for item in data:
+ if item == "amount":
+ continue
+ for detail in data[item]['data']:
+ if 'fukuanshiyou' in detail:
+ detail['name'] = detail.pop('fukuanshiyou')
+ return data
+ except Exception as e:
+ logger.info(f"error{e}")
+ return {}
+
+
+@app.route('/paymentCallBack', methods=['POST'])
+def paymentCallBack():
+ # 充值成功后回调 {"pay_amount": 20000, "id": "18515367096"}
+ try:
+ logger.info(f"====================================paymentCallBack=========================================")
+ msg = request.data.decode('UTF-8')
+ logger.info(f"回调参数为===={msg}")
+ msg = eval(msg)
+ logger.info(f"eval参数为===={msg}")
+ if msg['resp_desc'] == '成功':
+ logger.info(f"=================================充值回调SUCCESS==========================================")
+ if msg['mchnt_cd'] == '0001000F7152364':
+ rsa_key = RSA.importKey(open('dg_priv_key.pem').read())
+ # rsa_key = RSA.importKey(open('E:\YinJian\银建支付对接维护说明\DP\DP-enterprise-wechat-payment-push\dg_priv_key.pem').read())
+ else:
+ rsa_key = RSA.importKey(open('priv_key.pem').read())
+ # rsa_key = RSA.importKey(open('E:\YinJian\银建支付对接维护说明\DP\DP-enterprise-wechat-payment-push\priv_key.pem').read())
+ logger.info(f"msg==={msg['message']}")
+ logger.info(f"rsa_key{rsa_key}")
+ whp = rsa_long_decrypt(rsa_key, msg['message'])
+ logger.info(f"报文已解密{whp}")
+ whp_dict = json.loads(whp)
+ # 打印字典中的所有键
+ logger.info(f"1111111{whp_dict.keys()}")
+ # 获取'order_id'键的值并取前18个字符
+ id = whp_dict['order_id'][:18]
+ # 查询机构、分司
+ res = filter_jdy_ht(id)
+ transaction_id = whp_dict['pay_ssn']
+ amount = float(whp_dict['order_amt'])
+ order_pay_type = whp_dict['order_pay_type']
+ # 判断支付类型
+ if order_pay_type[:2] == "We":
+ pay_type = "微信支付"
+ elif order_pay_type[:3] == "Ali":
+ pay_type = "支付宝支付"
+ elif order_pay_type == "0000000000":
+ pay_type = "云闪付支付"
+ amount = amount / 100
+ if whp_dict['mchnt_cd'] == '0001000F7152364':
+ payment_items = "驾驶员履约服务费"
+ info1 = {"pay_amount": amount, "id": id,
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5], "transaction_id": transaction_id, "payment_items": payment_items,
+ "pay_type": pay_type}
+ logger.info(f"充值回调处理{info1}")
+ _thread.start_new_thread(add_payment_lw, ({"pay_amount": amount, "id": id,
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5], "transaction_id": transaction_id, "payment_items": payment_items, "pay_type": pay_type},))
+ else:
+ payment_items = "承包金"
+ info1 = {"pay_amount": amount, "id": id,
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5], "transaction_id": transaction_id, "payment_items": payment_items, "pay_type": pay_type}
+ logger.info(f"充值回调处理{info1}")
+ _thread.start_new_thread(add_payment, ({"pay_amount": amount, "id": id,
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5], "transaction_id": transaction_id, "payment_items": payment_items, "pay_type": pay_type},))
+ return {"code": 200}
+ except Exception as e:
+ return jsonify(error=str(e)), 500
+
+
+@app.route('/test', methods=['POST'])
+def test():
+ # 新增未收付明细 {"pay_amount": 20000, "id": "18515367096"}
+ try:
+ data = request.data.decode("utf-8")
+ logger.info(f"data{data}")
+ return {}
+ except Exception as e:
+ logger.error(f"error{e}")
+ return {}
+
+
+
+
+@app.route('/addUnPayment', methods=['POST'])
+def addno_moneyment():
+ # 新增未收付明细 {"pay_amount": 20000, "id": "18515367096"}
+ try:
+ data = request.data.decode("utf-8")
+ data = data.replace("null", "None")
+ data = eval(data)
+ data = data['data']
+ if data['mode_type'] == "DP":
+ res = filter_jdy_ht(data['id_card'])
+
+ _thread.start_new_thread(add_payment, ({"pay_amount": 0, "id": data['id_card'],
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5]}, 1))
+ return {}
+ else:
+ return {}
+ except Exception as e:
+ logger.error(f"addUnPayment,e{e},res{res}")
+ return {}
+
+
+@app.route('/addPayment', methods=['POST'])
+def addPayment():
+ # 新增充值明细 {"pay_amount": 20000, "id": "18515367096"}
+ try:
+ data = request.data.decode("utf-8")
+ logger.info(f"新增充值明细,data{data}")
+ data = data.replace("null", "None")
+ data = eval(data)
+ data = data['data']
+ if data['mode_type'] == "DP":
+ res = filter_jdy_ht(data['id_card'])
+ if not data['charge_amount']:
+ data['charge_amount'] = 0
+ if not res:
+ # 合同表单未有数据
+ logger.info(f"合同表单未有数据,data{data}")
+ fsfz = data['fsfz']['dept_no'] if data['fsfz'] else ""
+ _thread.start_new_thread(add_payment, ({"pay_amount": data['charge_amount'], "id": data['id_card'],
+ "fs": data['fs'], "jg": data['jg'], "name": data['name'],
+ "fsfz": fsfz, "hphm": data['hphm']}, 1))
+ else:
+ logger.info(f"新增充值明细111,pay_amount: {data['charge_amount']}, id: {data['id_card']},fs: {res[1]}, jg: {res[0]}, name: {res[4]}, shfid: {res[7]},fsfz: {res[6]},hphm: {res[5]}")
+ _thread.start_new_thread(add_payment, ({"pay_amount": data['charge_amount'], "id": data['id_card'],
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5]}, 1))
+ return {"code": 200}
+ else:
+ return {"code": 200}
+ except Exception as e:
+ logger.info(f"addPayment,e{e},data{data}")
+ return {}
+
+@app.route('/addlwPayment', methods=['POST'])
+def addlwPayment():
+ # 新增充值明细 {"pay_amount": 20000, "id": "18515367096"}
+ try:
+ data = request.data.decode("utf-8")
+ logger.info(f"新增充值明细{data}")
+ data = data.replace("null", "None")
+ data = eval(data)
+ data = data['data']
+ res = filter_jdy_ht(data['id_card'])
+ if not data['price']:
+ data['price'] = 0
+ if not res:
+ # 合同表单未有数据
+ fsfz = data['fsfz']['dept_no'] if data['fsfz'] else ""
+ _thread.start_new_thread(add_payment_lw, ({"pay_amount": data['price'], "id": data['id_card'],
+ "fs": data['fs'], "jg": data['jg'], "name": data['name'],
+ "fsfz": fsfz, "hphm": data['hphm']}, 1))
+ else:
+ _thread.start_new_thread(add_payment_lw, ({"pay_amount": data['price'], "id": data['id_card'],
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5]}, 1))
+ return {}
+ except Exception as e:
+ logger.info(f"addlwPayment,e{e},data{data}")
+ return {}
+
+
+@app.route('/transactions', methods=['GET'])
+def transactions():
+ # 调起h5支付
+ try:
+ logger.info(f"开始支付")
+ id = request.args.get('user')
+ price = request.args.get('price')
+ shh = request.args.get('option')
+ logger.info(f"===============费用缴纳类型为{shh}===============")
+ logger.info(f"金额,{price}")
+
+ if not float(price):
+ res = filter_jdy_ht(id)
+ _thread.start_new_thread(add_payment, ({"pay_amount": 0, "id": id,
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5]}, 1))
+ return {}
+ else:
+ # 查询商户号、商户号证书
+ res = filter_jdy_ht(id)
+ logger.info(f"res,{res}")
+ if not res:
+ return "error"
+ logger.info(f"金额,{price}")
+ price = float(price) * 100
+ if shh == '1':
+ if not res[2] or not res[0]:
+ return "error"
+ fy = H5Main(res[2])
+ logger.info(f"发起缴纳承包金,{id}{int(time.time())}{int(price)}")
+ message = fy.unified_order(f"{id}{int(time.time())}", int(price), "订单支付")
+ return message
+ else:
+ fy = H5Main('0001000F7152364')
+ logger.info(f"发起缴纳履约服务费{id}{int(time.time())}, {int(price)}")
+ message = fy.unified_order(f"{id}{int(time.time())}", int(price), "订单支付")
+ return message
+ except Exception as e:
+ logger.error(f"error{e}")
+ return jsonify(error=str(e)), 500
+
+
+if __name__ == '__main__':
+ app.run(host="0.0.0.0", port=3005, processes=True)
diff --git a/logs/dpapp.log b/logs/dpapp.log
new file mode 100644
index 0000000..69e97e2
--- /dev/null
+++ b/logs/dpapp.log
@@ -0,0 +1,46 @@
+2025-05-08 11:41:19,952 - dpapp - INFO - DPPayApp started
+2025-05-08 11:41:19,960 - werkzeug - INFO - * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
+2025-05-08 11:41:40,299 - dpapp - INFO - 新增充值明细,data{"data":{"_id":"681c22c147f52adcb2aeed04","_widget_1743667106306":null,"_widget_1743667108715":"CZMX202505080000001","_widget_1744091796748":[],"appId":"675b8d1a24d61bca7bf1cb4c","car_dept":"金建","charge_amount":1,"charge_note":"","charge_time":"2025-05-08T03:19:22.000Z","collect_pos":"","contract_num":"","createTime":"2025-05-08T03:19:29.185Z","creator":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"deleteTime":null,"deleter":null,"entryId":"67ee3fa22e399b68fef8d839","formName":"充值明细表_财务","form_code":"","form_name":"","fs":"J315车队","fs_p":{"_id":"66d19d41d6eb869c4d32f453","dept_no":1776480,"name":"J315车队","type":0},"hphm":"京BDB5375","hz_month":null,"hz_month1":"","id_card":"450481198712202058","jg":"康建利福汽车服务","mode_type":"DP","name":"曾辉","pay_type":"微信支付","payment_content":"","rq":null,"shfid":"J488912202058","transactionid":"4200002659202504282942276472","type":"转入","updateTime":"2025-05-08T03:19:29.185Z","updater":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"ys":null,"zhtype":"预收款","zxform_code":""},"op":"data_create","opTime":1746674369185}
+
+2025-05-08 11:41:40,430 - dpapp - INFO - 新增充值明细111,pay_amount: 1, id: 450481198712202058,fs: J315车队, jg: 康建利福汽车服务, name: 曾辉, shfid: J488912202058,fsfz: 1776480,hphm: 京BDB5375
+2025-05-08 11:41:40,430 - werkzeug - INFO - 127.0.0.1 - - [08/May/2025 11:41:40] "POST /addPayment HTTP/1.1" 200 -
+2025-05-08 11:41:40,431 - utils - INFO - 开始========data{'pay_amount': 1, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}, type1
+2025-05-08 11:41:40,431 - utils - INFO - 开始查询未收付明细, id_card: 450481198712202058,filter_data: {'app_id': '675b8d1a24d61bca7bf1cb4c', 'entry_id': '67e21d2ebaccd58c66fa7c77', 'limit': 100, 'filter': {'rel': 'and', 'cond': [{'field': 'id_card', 'method': 'eq', 'value': ['450481198712202058']}, {'field': 'no_money', 'method': 'eq', 'value': ['450481198712202058']}]}}
+2025-05-08 11:41:43,134 - utils - INFO - 执行承包金add_payment{'pay_amount': 1, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}
+2025-05-08 11:41:43,134 - utils - INFO - 更新未收付{'2025-03': {'data': [{'creator': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'updater': {'name': '赵学敏', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-05-08T02:09:51.328Z', 'updateTime': '2025-05-08T03:39:51.546Z', 'deleteTime': None, 'code': 'YZWL25050800001', '_widget_1745810482694': 'WSF25031800330', 'type': '收款', 'fukuanshiyou': '交通违法扣款', 'month1': '2025-03', 'month': '2025-02-28T16:00:00.000Z', 'yewubiaodanmingcheng': '替换车辆归还', 'yewubiaodanbianma': 'CLGH-p20250318005', 'sijixingming': '曾辉', 'id_card': '450481198712202058', 'shfid': 'J488912202058', 'company_jc': '', 'xd': '', 'sijisuozaigongsi': '康建利福汽车服务', 'fs': 'J315车队', 'license_plate': '京BD02424', 'fs_p': {'name': 'J315车队', 'dept_no': 1776480, 'type': 0, 'parent_no': 328, 'integrate_id': '1776480', 'status': 1}, 'money': 1200.0, 'pay': 1200.0, 'no_money': 0, 'ys': '2025-03-17T16:00:00.000Z', 'start_time': None, 'end_time': None, 'hz_month': '2025-02-28T16:00:00.000Z', '_widget_1744679600972': '', 'mode_type': 'DP', 'lydunjiao': '月租', 'bill_type': '个人账单', 'contract_num': '', 'car_dept': '金建', 'sy': '', 'shgid': '', '_id': '681c126f2e399b68feb72083', 'appId': '675b8d1a24d61bca7bf1cb4c', 'entryId': '67e21d2ebaccd58c66fa7c77', 'sort': 9999, 'flag': 1, 'flag_m': 1200.0}], '_th_amount': 1200.0, 'hz': []}, 'amount': 1200.0}
+2025-05-08 11:41:43,268 - utils - INFO - 新增已收========={'app_id': '675b8d1a24d61bca7bf1cb4c', 'entry_id': '67f37759de8bbe9eed71b793', 'is_start_trigger': True, 'is_start_workflow': True, 'data': {'code': {'value': 'YZWL25050800001'}, 'type': {'value': '收款'}, 'fukuanshiyou': {'value': '交通违法扣款'}, 'month': {'value': '2025-02-28T16:00:00.000Z'}, 'month1': {'value': '2025-03'}, 'yewubiaodanmingcheng': {'value': '替换车辆归还'}, 'yewubiaodanbianma': {'value': 'CLGH-p20250318005'}, 'sijixingming': {'value': '曾辉'}, 'shfid': {'value': 'J488912202058'}, 'id_card': {'value': '450481198712202058'}, 'pay_time': {'value': '2025-05-08 03:41:43'}, 'company_jc': {'value': ''}, 'xd': {'value': ''}, 'sijisuozaigongsi': {'value': '康建利福汽车服务'}, 'fs': {'value': 'J315车队'}, 'license_plate': {'value': '京BD02424'}, 'money': {'value': 1200.0}, 'pay': {'value': 1200.0}, 'hz_month': {'value': '2025-02-28T16:00:00.000Z'}, 'fs_p': {'value': 1776480}, 'shgid': {'value': ''}, 'mode_type': {'value': 'DP'}, 'sy': {'value': '个人账户抵扣'}, 'ys': {'value': '2025-03-17T16:00:00.000Z'}, 'lydunjiao': {'value': '月租'}, 'bill_type': {'value': '个人账单'}, 'car_dept': {'value': '金建'}, 'contract_num': {'value': ''}}}
+2025-05-08 11:41:43,387 - utils - INFO - 删除=========1200.0, 1200.0
+2025-05-08 11:41:43,387 - utils - INFO - ===========================未收付已清缴,删除未收付明细===============================
+2025-05-08 11:41:43,480 - utils - INFO - 更新个人账户余额update_info
+2025-05-08 11:41:43,684 - utils - INFO - 结束========
+2025-05-08 11:42:20,031 - dpapp - INFO - 新增充值明细,data{"data":{"_id":"681c27af29096e59ac582c25","_widget_1743667106306":null,"_widget_1743667108715":"CZMX202505080000003","_widget_1744091796748":[],"appId":"675b8d1a24d61bca7bf1cb4c","car_dept":"金建","charge_amount":200,"charge_note":"","charge_time":"2025-05-08T03:19:22.000Z","collect_pos":"","contract_num":"","createTime":"2025-05-08T03:40:31.184Z","creator":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"deleteTime":null,"deleter":null,"entryId":"67ee3fa22e399b68fef8d839","formName":"充值明细表_财务","form_code":"","form_name":"","fs":"J315车队","fs_p":{"_id":"66d19d41d6eb869c4d32f453","dept_no":1776480,"name":"J315车队","type":0},"hphm":"京BDB5375","hz_month":null,"hz_month1":"","id_card":"450481198712202058","jg":"康建利福汽车服务","mode_type":"DP","name":"曾辉","pay_type":"微信支付","payment_content":"","rq":null,"shfid":"J488912202058","transactionid":"4200002659202504282942276472","type":"转入","updateTime":"2025-05-08T03:40:31.184Z","updater":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"ys":null,"zhtype":"预收款","zxform_code":""},"op":"data_create","opTime":1746675631184}
+2025-05-08 11:42:20,194 - dpapp - INFO - 新增充值明细111,pay_amount: 200, id: 450481198712202058,fs: J315车队, jg: 康建利福汽车服务, name: 曾辉, shfid: J488912202058,fsfz: 1776480,hphm: 京BDB5375
+2025-05-08 11:42:20,195 - werkzeug - INFO - 127.0.0.1 - - [08/May/2025 11:42:20] "POST /addPayment HTTP/1.1" 200 -
+2025-05-08 11:42:20,197 - utils - INFO - 开始========data{'pay_amount': 200, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}, type1
+2025-05-08 11:42:20,197 - utils - INFO - 开始查询未收付明细, id_card: 450481198712202058,filter_data: {'app_id': '675b8d1a24d61bca7bf1cb4c', 'entry_id': '67e21d2ebaccd58c66fa7c77', 'limit': 100, 'filter': {'rel': 'and', 'cond': [{'field': 'id_card', 'method': 'eq', 'value': ['450481198712202058']}, {'field': 'no_money', 'method': 'eq', 'value': ['450481198712202058']}]}}
+2025-05-08 11:42:21,119 - utils - INFO - 执行承包金add_payment{'pay_amount': 200, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}
+2025-05-08 11:42:21,120 - utils - INFO - 更新未收付{'amount': 0.0}
+2025-05-08 11:42:21,120 - utils - INFO - 更新个人账户余额update_info
+2025-05-08 11:42:21,301 - utils - INFO - 结束========
+2025-05-08 14:57:02,487 - dpapp - INFO - 新增充值明细,data{"data":{"_id":"681c27af29096e59ac582c25","_widget_1743667106306":null,"_widget_1743667108715":"CZMX202505080000003","_widget_1744091796748":[],"appId":"675b8d1a24d61bca7bf1cb4c","car_dept":"金建","charge_amount":200,"charge_note":"","charge_time":"2025-05-08T03:19:22.000Z","collect_pos":"","contract_num":"","createTime":"2025-05-08T03:40:31.184Z","creator":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"deleteTime":null,"deleter":null,"entryId":"67ee3fa22e399b68fef8d839","formName":"充值明细表_财务","form_code":"","form_name":"","fs":"J315车队","fs_p":{"_id":"66d19d41d6eb869c4d32f453","dept_no":1776480,"name":"J315车队","type":0},"hphm":"京BDB5375","hz_month":null,"hz_month1":"","id_card":"450481198712202058","jg":"康建利福汽车服务","mode_type":"DP","name":"曾辉","pay_type":"微信支付","payment_content":"","rq":null,"shfid":"J488912202058","transactionid":"4200002659202504282945276472","type":"转入","updateTime":"2025-05-08T03:40:31.184Z","updater":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"ys":null,"zhtype":"预收款","zxform_code":""},"op":"data_create","opTime":1746675631184}
+2025-05-08 14:57:02,630 - dpapp - INFO - 新增充值明细111,pay_amount: 200, id: 450481198712202058,fs: J315车队, jg: 康建利福汽车服务, name: 曾辉, shfid: J488912202058,fsfz: 1776480,hphm: 京BDB5375
+2025-05-08 14:57:02,631 - werkzeug - INFO - 127.0.0.1 - - [08/May/2025 14:57:02] "POST /addPayment HTTP/1.1" 200 -
+2025-05-08 14:57:02,631 - utils - INFO - 开始========data{'pay_amount': 200, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}, type1
+2025-05-08 14:57:02,631 - utils - INFO - 开始查询未收付明细, id_card: 450481198712202058,filter_data: {'app_id': '675b8d1a24d61bca7bf1cb4c', 'entry_id': '67e21d2ebaccd58c66fa7c77', 'limit': 100, 'filter': {'rel': 'and', 'cond': [{'field': 'id_card', 'method': 'eq', 'value': ['450481198712202058']}, {'field': 'no_money', 'method': 'eq', 'value': ['450481198712202058']}]}}
+2025-05-08 14:57:06,184 - utils - INFO - 执行承包金add_payment{'pay_amount': 200, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}
+2025-05-08 14:57:43,322 - dpapp - INFO - DPPayApp started
+2025-05-08 14:57:43,330 - werkzeug - INFO - * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
+2025-05-08 14:57:49,295 - dpapp - INFO - 新增充值明细,data{"data":{"_id":"681c27af29096e59ac582c25","_widget_1743667106306":null,"_widget_1743667108715":"CZMX202505080000003","_widget_1744091796748":[],"appId":"675b8d1a24d61bca7bf1cb4c","car_dept":"金建","charge_amount":200,"charge_note":"","charge_time":"2025-05-08T03:19:22.000Z","collect_pos":"","contract_num":"","createTime":"2025-05-08T03:40:31.184Z","creator":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"deleteTime":null,"deleter":null,"entryId":"67ee3fa22e399b68fef8d839","formName":"充值明细表_财务","form_code":"","form_name":"","fs":"J315车队","fs_p":{"_id":"66d19d41d6eb869c4d32f453","dept_no":1776480,"name":"J315车队","type":0},"hphm":"京BDB5375","hz_month":null,"hz_month1":"","id_card":"450481198712202058","jg":"康建利福汽车服务","mode_type":"DP","name":"曾辉","pay_type":"微信支付","payment_content":"","rq":null,"shfid":"J488912202058","transactionid":"4200002659202504282945276572","type":"转入","updateTime":"2025-05-08T03:40:31.184Z","updater":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"ys":null,"zhtype":"预收款","zxform_code":""},"op":"data_create","opTime":1746675631184}
+2025-05-08 14:57:49,407 - dpapp - INFO - 新增充值明细111,pay_amount: 200, id: 450481198712202058,fs: J315车队, jg: 康建利福汽车服务, name: 曾辉, shfid: J488912202058,fsfz: 1776480,hphm: 京BDB5375
+2025-05-08 14:57:49,407 - werkzeug - INFO - 127.0.0.1 - - [08/May/2025 14:57:49] "POST /addPayment HTTP/1.1" 200 -
+2025-05-08 14:57:49,408 - utils - INFO - 开始========data{'pay_amount': 200, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}, type1
+2025-05-08 14:57:49,408 - utils - INFO - 开始查询未收付明细, id_card: 450481198712202058,filter_data: {'app_id': '675b8d1a24d61bca7bf1cb4c', 'entry_id': '67e21d2ebaccd58c66fa7c77', 'limit': 100, 'filter': {'rel': 'and', 'cond': [{'field': 'id_card', 'method': 'eq', 'value': ['450481198712202058']}, {'field': 'no_money', 'method': 'eq', 'value': ['450481198712202058']}]}}
+2025-05-08 14:57:52,944 - utils - INFO - 执行承包金add_payment{'pay_amount': 200, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}
+2025-05-08 14:57:52,944 - utils - INFO - 更新未收付{'2025-05': {'data': [{'creator': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'updater': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'deleter': None, 'createTime': '2025-05-08T06:53:55.734Z', 'updateTime': '2025-05-08T06:53:55.734Z', 'deleteTime': None, 'code': 'YZWL25050800005', '_widget_1745810482694': 'WSF25031800330', 'type': '收款', 'fukuanshiyou': '调度费', 'month1': '2025-05', 'month': '2025-04-30T16:00:00.000Z', 'yewubiaodanmingcheng': '承租表单', 'yewubiaodanbianma': 'HT-240800013', 'sijixingming': '曾辉', 'id_card': '450481198712202058', 'shfid': 'J488912202058', 'company_jc': '', 'xd': '', 'sijisuozaigongsi': '康建利福汽车服务', 'fs': 'J315车队', 'license_plate': '京BD02424', 'fs_p': {'name': 'J315车队', 'dept_no': 1776480, 'type': 0, 'parent_no': 328, 'integrate_id': '1776480', 'status': 1}, 'money': 40.0, 'pay': 0.0, 'no_money': 40.0, 'ys': '2025-05-07T16:00:00.000Z', 'start_time': None, 'end_time': None, 'hz_month': '2025-04-30T16:00:00.000Z', '_widget_1744679600972': '', 'mode_type': 'DP', 'lydunjiao': '趸交', 'bill_type': '个人账单', 'contract_num': 'HT-240800013', 'car_dept': '金建', 'sy': '', 'shgid': '', '_id': '681c550329096e59ac5ab3b3', 'appId': '675b8d1a24d61bca7bf1cb4c', 'entryId': '67e21d2ebaccd58c66fa7c77', 'sort': 2, 'flag_m': 0}, {'creator': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'updater': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'deleter': None, 'createTime': '2025-05-08T06:53:39.274Z', 'updateTime': '2025-05-08T06:53:39.274Z', 'deleteTime': None, 'code': 'YZWL25050800004', '_widget_1745810482694': 'WSF25031800330', 'type': '收款', 'fukuanshiyou': '保养费', 'month1': '2025-05', 'month': '2025-04-30T16:00:00.000Z', 'yewubiaodanmingcheng': '承租表单', 'yewubiaodanbianma': 'HT-240800013', 'sijixingming': '曾辉', 'id_card': '450481198712202058', 'shfid': 'J488912202058', 'company_jc': '', 'xd': '', 'sijisuozaigongsi': '康建利福汽车服务', 'fs': 'J315车队', 'license_plate': '京BD02424', 'fs_p': {'name': 'J315车队', 'dept_no': 1776480, 'type': 0, 'parent_no': 328, 'integrate_id': '1776480', 'status': 1}, 'money': 113.0, 'pay': 0.0, 'no_money': 113.0, 'ys': '2025-05-07T16:00:00.000Z', 'start_time': None, 'end_time': None, 'hz_month': '2025-04-30T16:00:00.000Z', '_widget_1744679600972': '', 'mode_type': 'DP', 'lydunjiao': '趸交', 'bill_type': '个人账单', 'contract_num': 'HT-240800013', 'car_dept': '金建', 'sy': '', 'shgid': '', '_id': '681c54f347f52adcb2b19a39', 'appId': '675b8d1a24d61bca7bf1cb4c', 'entryId': '67e21d2ebaccd58c66fa7c77', 'sort': 3, 'flag_m': 0}, {'creator': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'updater': {'name': '赵学敏', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-05-08T05:23:13.088Z', 'updateTime': '2025-05-08T06:53:08.031Z', 'deleteTime': None, 'code': 'YZWL25050800003', '_widget_1745810482694': 'WSF25031800330', 'type': '收款', 'fukuanshiyou': '收预收承包金', 'month1': '2025-05', 'month': '2025-04-30T16:00:00.000Z', 'yewubiaodanmingcheng': '承租表单', 'yewubiaodanbianma': 'HT-240800013', 'sijixingming': '曾辉', 'id_card': '450481198712202058', 'shfid': 'J488912202058', 'company_jc': '', 'xd': '', 'sijisuozaigongsi': '康建利福汽车服务', 'fs': 'J315车队', 'license_plate': '京BD02424', 'fs_p': {'name': 'J315车队', 'dept_no': 1776480, 'type': 0, 'parent_no': 328, 'integrate_id': '1776480', 'status': 1}, 'money': 6000.0, 'pay': 200.0, 'no_money': 5800.0, 'ys': '2025-05-07T16:00:00.000Z', 'start_time': None, 'end_time': None, 'hz_month': '2025-02-28T16:00:00.000Z', '_widget_1744679600972': '', 'mode_type': 'DP', 'lydunjiao': '趸交', 'bill_type': '个人账单', 'contract_num': 'HT-240800013', 'car_dept': '金建', 'sy': '', 'shgid': '', '_id': '681c3fc147f52adcb2affb40', 'appId': '675b8d1a24d61bca7bf1cb4c', 'entryId': '67e21d2ebaccd58c66fa7c77', 'sort': 1, 'flag': 1, 'flag_m': 200.0}], '_th_amount': 6153.0, 'hz': []}, '2025-04': {'data': [{'creator': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'updater': {'name': '赵学敏', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-05-08T02:09:51.328Z', 'updateTime': '2025-05-08T06:53:18.061Z', 'deleteTime': None, 'code': 'YZWL25050800001', '_widget_1745810482694': 'WSF25031800330', 'type': '收款', 'fukuanshiyou': '承包金', 'month1': '2025-04', 'month': '2025-03-31T16:00:00.000Z', 'yewubiaodanmingcheng': '承租表单', 'yewubiaodanbianma': 'HT-240800013', 'sijixingming': '曾辉', 'id_card': '450481198712202058', 'shfid': 'J488912202058', 'company_jc': '', 'xd': '', 'sijisuozaigongsi': '康建利福汽车服务', 'fs': 'J315车队', 'license_plate': '京BD02424', 'fs_p': {'name': 'J315车队', 'dept_no': 1776480, 'type': 0, 'parent_no': 328, 'integrate_id': '1776480', 'status': 1}, 'money': 4478.0, 'pay': 0.0, 'no_money': 4478.0, 'ys': '2025-05-07T16:00:00.000Z', 'start_time': None, 'end_time': None, 'hz_month': '2025-04-30T16:00:00.000Z', '_widget_1744679600972': '', 'mode_type': 'DP', 'lydunjiao': '趸交', 'bill_type': '个人账单', 'contract_num': 'HT-240800013', 'car_dept': '金建', 'sy': '', 'shgid': '', '_id': '681c126f2e399b68feb72083', 'appId': '675b8d1a24d61bca7bf1cb4c', 'entryId': '67e21d2ebaccd58c66fa7c77', 'sort': 1, 'flag_m': 0}], '_th_amount': 4478.0, 'hz': []}, 'amount': 10631.0}
+2025-05-08 14:57:53,061 - utils - INFO - 删除=========0.0, 40.0
+2025-05-08 14:57:53,285 - utils - INFO - 删除=========0.0, 113.0
+2025-05-08 14:57:53,450 - utils - INFO - 新增已收========={'app_id': '675b8d1a24d61bca7bf1cb4c', 'entry_id': '67f37759de8bbe9eed71b793', 'is_start_trigger': True, 'is_start_workflow': True, 'data': {'code': {'value': 'YZWL25050800003'}, 'type': {'value': '收款'}, 'fukuanshiyou': {'value': '收预收承包金'}, 'month': {'value': '2025-04-30T16:00:00.000Z'}, 'month1': {'value': '2025-05'}, 'yewubiaodanmingcheng': {'value': '承租表单'}, 'yewubiaodanbianma': {'value': 'HT-240800013'}, 'sijixingming': {'value': '曾辉'}, 'shfid': {'value': 'J488912202058'}, 'id_card': {'value': '450481198712202058'}, 'pay_time': {'value': '2025-05-08 06:57:53'}, 'company_jc': {'value': ''}, 'xd': {'value': ''}, 'sijisuozaigongsi': {'value': '康建利福汽车服务'}, 'fs': {'value': 'J315车队'}, 'license_plate': {'value': '京BD02424'}, 'money': {'value': 6000.0}, 'pay': {'value': 200.0}, 'hz_month': {'value': '2025-02-28T16:00:00.000Z'}, 'fs_p': {'value': 1776480}, 'shgid': {'value': ''}, 'mode_type': {'value': 'DP'}, 'sy': {'value': '个人账户抵扣'}, 'ys': {'value': '2025-05-07T16:00:00.000Z'}, 'lydunjiao': {'value': '趸交'}, 'bill_type': {'value': '个人账单'}, 'car_dept': {'value': '金建'}, 'contract_num': {'value': 'HT-240800013'}}}
+2025-05-08 14:57:53,552 - utils - INFO - 删除=========200.0, 6000.0
+2025-05-08 14:57:53,664 - utils - INFO - 删除=========0.0, 4478.0
+2025-05-08 14:57:53,664 - utils - INFO - 更新个人账户余额update_info
+2025-05-08 14:57:53,838 - utils - INFO - 结束========
diff --git a/logs/payapp.log b/logs/payapp.log
new file mode 100644
index 0000000..06a1911
--- /dev/null
+++ b/logs/payapp.log
@@ -0,0 +1,35 @@
+2025-05-08 11:23:20,165 - dpapp - INFO - DPPayApp started
+2025-05-08 11:23:20,176 - werkzeug - INFO - * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
+2025-05-08 11:23:23,957 - dpapp - INFO - 新增充值明细,data{"data":{"_id":"681c22c147f52adcb2aeed04","_widget_1743667106306":null,"_widget_1743667108715":"CZMX202505080000001","_widget_1744091796748":[],"appId":"675b8d1a24d61bca7bf1cb4c","car_dept":"金建","charge_amount":200,"charge_note":"","charge_time":"2025-05-08T03:19:22.000Z","collect_pos":"","contract_num":"","createTime":"2025-05-08T03:19:29.185Z","creator":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"deleteTime":null,"deleter":null,"entryId":"67ee3fa22e399b68fef8d839","formName":"充值明细表_财务","form_code":"","form_name":"","fs":"J315车队","fs_p":{"_id":"66d19d41d6eb869c4d32f453","dept_no":1776480,"name":"J315车队","type":0},"hphm":"京BDB5375","hz_month":null,"hz_month1":"","id_card":"450481198712202058","jg":"康建利福汽车服务","mode_type":"DP","name":"曾辉","pay_type":"微信支付","payment_content":"","rq":null,"shfid":"J488912202058","transactionid":"4200002659202504282942276472","type":"转入","updateTime":"2025-05-08T03:19:29.185Z","updater":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"ys":null,"zhtype":"预收款","zxform_code":""},"op":"data_create","opTime":1746674369185}
+
+2025-05-08 11:23:24,035 - utils - INFO - req_tool_jdy{'code': 3005, 'msg': 'The request contains invalid parameter(s).'}
+2025-05-08 11:23:26,101 - utils - INFO - req_tool_jdy{'code': 3005, 'msg': 'The request contains invalid parameter(s).'}
+2025-05-08 11:23:28,184 - utils - INFO - req_tool_jdy{'code': 3005, 'msg': 'The request contains invalid parameter(s).'}
+2025-05-08 11:23:30,233 - utils - INFO - req_tool_jdy{'code': 3005, 'msg': 'The request contains invalid parameter(s).'}
+2025-05-08 11:24:52,308 - dpapp - INFO - DPPayApp started
+2025-05-08 11:24:52,316 - werkzeug - INFO - * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
+2025-05-08 11:24:54,897 - dpapp - INFO - 新增充值明细,data{"data":{"_id":"681c22c147f52adcb2aeed04","_widget_1743667106306":null,"_widget_1743667108715":"CZMX202505080000001","_widget_1744091796748":[],"appId":"675b8d1a24d61bca7bf1cb4c","car_dept":"金建","charge_amount":200,"charge_note":"","charge_time":"2025-05-08T03:19:22.000Z","collect_pos":"","contract_num":"","createTime":"2025-05-08T03:19:29.185Z","creator":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"deleteTime":null,"deleter":null,"entryId":"67ee3fa22e399b68fef8d839","formName":"充值明细表_财务","form_code":"","form_name":"","fs":"J315车队","fs_p":{"_id":"66d19d41d6eb869c4d32f453","dept_no":1776480,"name":"J315车队","type":0},"hphm":"京BDB5375","hz_month":null,"hz_month1":"","id_card":"450481198712202058","jg":"康建利福汽车服务","mode_type":"DP","name":"曾辉","pay_type":"微信支付","payment_content":"","rq":null,"shfid":"J488912202058","transactionid":"4200002659202504282942276472","type":"转入","updateTime":"2025-05-08T03:19:29.185Z","updater":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"ys":null,"zhtype":"预收款","zxform_code":""},"op":"data_create","opTime":1746674369185}
+
+2025-05-08 11:24:55,016 - dpapp - INFO - addPayment,e'price',data{'_id': '681c22c147f52adcb2aeed04', '_widget_1743667106306': None, '_widget_1743667108715': 'CZMX202505080000001', '_widget_1744091796748': [], 'appId': '675b8d1a24d61bca7bf1cb4c', 'car_dept': '金建', 'charge_amount': 200, 'charge_note': '', 'charge_time': '2025-05-08T03:19:22.000Z', 'collect_pos': '', 'contract_num': '', 'createTime': '2025-05-08T03:19:29.185Z', 'creator': {'_id': '66b980a0683f21a2d1429548', 'name': '葛梦伟', 'status': 1, 'type': 0, 'username': '993848'}, 'deleteTime': None, 'deleter': None, 'entryId': '67ee3fa22e399b68fef8d839', 'formName': '充值明细表_财务', 'form_code': '', 'form_name': '', 'fs': 'J315车队', 'fs_p': {'_id': '66d19d41d6eb869c4d32f453', 'dept_no': 1776480, 'name': 'J315车队', 'type': 0}, 'hphm': '京BDB5375', 'hz_month': None, 'hz_month1': '', 'id_card': '450481198712202058', 'jg': '康建利福汽车服务', 'mode_type': 'DP', 'name': '曾辉', 'pay_type': '微信支付', 'payment_content': '', 'rq': None, 'shfid': 'J488912202058', 'transactionid': '4200002659202504282942276472', 'type': '转入', 'updateTime': '2025-05-08T03:19:29.185Z', 'updater': {'_id': '66b980a0683f21a2d1429548', 'name': '葛梦伟', 'status': 1, 'type': 0, 'username': '993848'}, 'ys': None, 'zhtype': '预收款', 'zxform_code': ''}
+2025-05-08 11:24:55,017 - werkzeug - INFO - 127.0.0.1 - - [08/May/2025 11:24:55] "POST /addPayment HTTP/1.1" 200 -
+2025-05-08 11:28:26,818 - dpapp - INFO - DPPayApp started
+2025-05-08 11:28:26,825 - werkzeug - INFO - * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
+2025-05-08 11:28:28,513 - dpapp - INFO - 新增充值明细,data{"data":{"_id":"681c22c147f52adcb2aeed04","_widget_1743667106306":null,"_widget_1743667108715":"CZMX202505080000001","_widget_1744091796748":[],"appId":"675b8d1a24d61bca7bf1cb4c","car_dept":"金建","charge_amount":200,"charge_note":"","charge_time":"2025-05-08T03:19:22.000Z","collect_pos":"","contract_num":"","createTime":"2025-05-08T03:19:29.185Z","creator":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"deleteTime":null,"deleter":null,"entryId":"67ee3fa22e399b68fef8d839","formName":"充值明细表_财务","form_code":"","form_name":"","fs":"J315车队","fs_p":{"_id":"66d19d41d6eb869c4d32f453","dept_no":1776480,"name":"J315车队","type":0},"hphm":"京BDB5375","hz_month":null,"hz_month1":"","id_card":"450481198712202058","jg":"康建利福汽车服务","mode_type":"DP","name":"曾辉","pay_type":"微信支付","payment_content":"","rq":null,"shfid":"J488912202058","transactionid":"4200002659202504282942276472","type":"转入","updateTime":"2025-05-08T03:19:29.185Z","updater":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"ys":null,"zhtype":"预收款","zxform_code":""},"op":"data_create","opTime":1746674369185}
+
+2025-05-08 11:28:28,614 - dpapp - INFO - addPayment,e'price',data{'_id': '681c22c147f52adcb2aeed04', '_widget_1743667106306': None, '_widget_1743667108715': 'CZMX202505080000001', '_widget_1744091796748': [], 'appId': '675b8d1a24d61bca7bf1cb4c', 'car_dept': '金建', 'charge_amount': 200, 'charge_note': '', 'charge_time': '2025-05-08T03:19:22.000Z', 'collect_pos': '', 'contract_num': '', 'createTime': '2025-05-08T03:19:29.185Z', 'creator': {'_id': '66b980a0683f21a2d1429548', 'name': '葛梦伟', 'status': 1, 'type': 0, 'username': '993848'}, 'deleteTime': None, 'deleter': None, 'entryId': '67ee3fa22e399b68fef8d839', 'formName': '充值明细表_财务', 'form_code': '', 'form_name': '', 'fs': 'J315车队', 'fs_p': {'_id': '66d19d41d6eb869c4d32f453', 'dept_no': 1776480, 'name': 'J315车队', 'type': 0}, 'hphm': '京BDB5375', 'hz_month': None, 'hz_month1': '', 'id_card': '450481198712202058', 'jg': '康建利福汽车服务', 'mode_type': 'DP', 'name': '曾辉', 'pay_type': '微信支付', 'payment_content': '', 'rq': None, 'shfid': 'J488912202058', 'transactionid': '4200002659202504282942276472', 'type': '转入', 'updateTime': '2025-05-08T03:19:29.185Z', 'updater': {'_id': '66b980a0683f21a2d1429548', 'name': '葛梦伟', 'status': 1, 'type': 0, 'username': '993848'}, 'ys': None, 'zhtype': '预收款', 'zxform_code': ''}
+2025-05-08 11:28:28,614 - werkzeug - INFO - 127.0.0.1 - - [08/May/2025 11:28:28] "POST /addPayment HTTP/1.1" 200 -
+2025-05-08 11:29:16,713 - dpapp - INFO - DPPayApp started
+2025-05-08 11:29:16,720 - werkzeug - INFO - * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
+2025-05-08 11:29:18,796 - dpapp - INFO - 新增充值明细,data{"data":{"_id":"681c22c147f52adcb2aeed04","_widget_1743667106306":null,"_widget_1743667108715":"CZMX202505080000001","_widget_1744091796748":[],"appId":"675b8d1a24d61bca7bf1cb4c","car_dept":"金建","charge_amount":200,"charge_note":"","charge_time":"2025-05-08T03:19:22.000Z","collect_pos":"","contract_num":"","createTime":"2025-05-08T03:19:29.185Z","creator":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"deleteTime":null,"deleter":null,"entryId":"67ee3fa22e399b68fef8d839","formName":"充值明细表_财务","form_code":"","form_name":"","fs":"J315车队","fs_p":{"_id":"66d19d41d6eb869c4d32f453","dept_no":1776480,"name":"J315车队","type":0},"hphm":"京BDB5375","hz_month":null,"hz_month1":"","id_card":"450481198712202058","jg":"康建利福汽车服务","mode_type":"DP","name":"曾辉","pay_type":"微信支付","payment_content":"","rq":null,"shfid":"J488912202058","transactionid":"4200002659202504282942276472","type":"转入","updateTime":"2025-05-08T03:19:29.185Z","updater":{"_id":"66b980a0683f21a2d1429548","name":"葛梦伟","status":1,"type":0,"username":"993848"},"ys":null,"zhtype":"预收款","zxform_code":""},"op":"data_create","opTime":1746674369185}
+
+2025-05-08 11:29:18,892 - dpapp - INFO - 新增充值明细111,pay_amount: 200, id: 450481198712202058,fs: J315车队, jg: 康建利福汽车服务, name: 曾辉, shfid: J488912202058,fsfz: 1776480,hphm: 京BDB5375
+2025-05-08 11:29:18,892 - werkzeug - INFO - 127.0.0.1 - - [08/May/2025 11:29:18] "POST /addPayment HTTP/1.1" 200 -
+2025-05-08 11:29:18,893 - utils - INFO - 开始========data{'pay_amount': 200, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}, type1
+2025-05-08 11:29:18,893 - utils - INFO - 开始查询未收付明细, id_card: 450481198712202058,filter_data: {'app_id': '675b8d1a24d61bca7bf1cb4c', 'entry_id': '67e21d2ebaccd58c66fa7c77', 'limit': 100, 'filter': {'rel': 'and', 'cond': [{'field': 'id_card', 'method': 'eq', 'value': ['450481198712202058']}, {'field': 'no_money', 'method': 'eq', 'value': ['450481198712202058']}]}}
+2025-05-08 11:29:21,521 - utils - INFO - 执行承包金add_payment{'pay_amount': 200, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '康建利福汽车服务', 'name': '曾辉', 'shfid': 'J488912202058', 'fsfz': 1776480, 'hphm': '京BDB5375'}
+2025-05-08 11:29:21,521 - utils - INFO - 更新未收付{'2025-03': {'data': [{'creator': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'updater': {'name': '葛梦伟', 'username': '993848', 'status': 1, 'type': 0, 'departments': [791], 'integrate_id': '993848'}, 'deleter': None, 'createTime': '2025-05-08T02:09:51.328Z', 'updateTime': '2025-05-08T02:09:51.328Z', 'deleteTime': None, 'code': 'YZWL25050800001', '_widget_1745810482694': 'WSF25031800330', 'type': '收款', 'fukuanshiyou': '交通违法扣款', 'month1': '2025-03', 'month': '2025-02-28T16:00:00.000Z', 'yewubiaodanmingcheng': '替换车辆归还', 'yewubiaodanbianma': 'CLGH-p20250318005', 'sijixingming': '曾辉', 'id_card': '450481198712202058', 'shfid': 'J488912202058', 'company_jc': '', 'xd': '', 'sijisuozaigongsi': '康建利福汽车服务', 'fs': 'J315车队', 'license_plate': '京BD02424', 'fs_p': {'name': 'J315车队', 'dept_no': 1776480, 'type': 0, 'parent_no': 328, 'integrate_id': '1776480', 'status': 1}, 'money': 1200.0, 'pay': 1200.0, 'no_money': 0, 'ys': '2025-03-17T16:00:00.000Z', 'start_time': None, 'end_time': None, 'hz_month': '2025-02-28T16:00:00.000Z', '_widget_1744679600972': '', 'mode_type': 'DP', 'lydunjiao': '月租', 'bill_type': '个人账单', 'contract_num': '', 'car_dept': '金建', 'sy': '', 'shgid': '', '_id': '681c126f2e399b68feb72083', 'appId': '675b8d1a24d61bca7bf1cb4c', 'entryId': '67e21d2ebaccd58c66fa7c77', 'sort': 9999, 'flag': 1, 'flag_m': 1200.0}], '_th_amount': 1200.0, 'hz': []}, 'amount': 1200.0}
+2025-05-08 11:29:21,673 - utils - INFO - 新增已收========={'app_id': '675b8d1a24d61bca7bf1cb4c', 'entry_id': '67f37759de8bbe9eed71b793', 'is_start_trigger': True, 'is_start_workflow': True, 'data': {'code': {'value': 'YZWL25050800001'}, 'type': {'value': '收款'}, 'fukuanshiyou': {'value': '交通违法扣款'}, 'month': {'value': '2025-02-28T16:00:00.000Z'}, 'month1': {'value': '2025-03'}, 'yewubiaodanmingcheng': {'value': '替换车辆归还'}, 'yewubiaodanbianma': {'value': 'CLGH-p20250318005'}, 'sijixingming': {'value': '曾辉'}, 'shfid': {'value': 'J488912202058'}, 'id_card': {'value': '450481198712202058'}, 'pay_time': {'value': '2025-05-08 03:29:21'}, 'company_jc': {'value': ''}, 'xd': {'value': ''}, 'sijisuozaigongsi': {'value': '康建利福汽车服务'}, 'fs': {'value': 'J315车队'}, 'license_plate': {'value': '京BD02424'}, 'money': {'value': 1200.0}, 'pay': {'value': 1200.0}, 'hz_month': {'value': '2025-02-28T16:00:00.000Z'}, 'fs_p': {'value': 1776480}, 'shgid': {'value': ''}, 'mode_type': {'value': 'DP'}, 'sy': {'value': '个人账户抵扣'}, 'ys': {'value': '2025-03-17T16:00:00.000Z'}, 'lydunjiao': {'value': '月租'}, 'bill_type': {'value': '个人账单'}, 'car_dept': {'value': '金建'}, 'contract_num': {'value': ''}}}
+2025-05-08 11:29:21,805 - utils - INFO - 删除=========1200.0, 1200.0
+2025-05-08 11:29:21,805 - utils - INFO - ===========================未收付已清缴,删除未收付明细===============================
+2025-05-08 11:29:21,918 - utils - INFO - 更新个人账户余额update_info
+2025-05-08 11:29:22,106 - utils - INFO - 结束========
diff --git a/priv_key.pem b/priv_key.pem
new file mode 100644
index 0000000..612efe9
--- /dev/null
+++ b/priv_key.pem
@@ -0,0 +1,3 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQC/32miL42GsFcVwII+YDxjbjAdASu6f0SyD6fz5jFl+QWYJ16Z8suIpFOpsrvlVE9t8PD1gX1tJmmJYCi1IjoUrVxdKc6nBZ8w68xhttIdnP341W2bBMjWK1Tr3IWC1BwUFYOaGT4c5RJf886BzmUQpQetxi88nXWJCVbAEedhi4OdCgULS7Z74leTDgIi3+xlU7qLICndcCC4zPQM3IsETt/WQBW0bed+sNYI7RxMaAKQ6PaGcbryjZshDtRby+s8UqgdHVnDXY4++DafJjg+FzflE7rM+TyDBY80gvZduMZXHlGytZm9FQNFZSbhvYW0mOOznuwpq7DDLOank6qzAgMBAAECggEBAIdP/WT9eCeGcMPMUY2/vJa6fH/X9Yi+fCm+1Mkyi5/IcGOPUC3thhBFIyNIAy6FuMZl5uice2HgdwkEoXCsRJ2UbNDezPgJBO0xPZ+jmKZ9srYrffKW+zPetzLm/9j10R9w1LB2INGr0ruMaxQsBCYq3DF21JVAzkToKx+lALJOwC+ZEdjwYBCEzSSAKI/VupEMucuRMlSRRIQQXlqDPO0s5ymSkhynslBstpeKsGhl38hLgRA6aQIuhuvtLO00OlOwLxAfWTxgT+2VKntvvBZ3waoUw7sKLlSpX99dfgfARdAj08+ZR4cD06QtLSgAoiYvCet+/1yX457/coH1UdECgYEA/HUAAsD0dM6LG99ki0879ep3+2nd3Msk+4/IPV6p7J3qKuXpG8yGIXGacXzo+gjTxbfkE0l/xD41TcOz8HV7ZRJHtOBGEy6ZZoyqzqTVFS71FjzUL2W1P7RQjDqOpCxZyuW3vsLFVdVrN3fVuMv0NBHDvnzB55HAAeJFrL6Hj70CgYEAwpDAegggdaOFWj9eo03+oiwqJsutK6O6Fa1OZAA+QPG4tXqgiRIAqQ87HEi+a7GPKbntYkJX0YYNhSDkIUqebT1Fb/7kDVfLuDhF2cRa6Qr4CNrIi+F9KguJo3grNzBk/SWNUyouJsSxnQ3XS9kGbIddIzTMOukrnNmNebvOUy8CgYEAij7HsrpXI1+3bZv3QxIwk4nCCjr+81mK9vbVgEXGZ3xSLwuXi1GEYewD1wG/0qviy/LXQniNLrmiFuOENbkfyUkpWzM1LGvoNO/y2RYKWX9NVtAYoZvglPH46dFnKx/eS+1foWanCUnFXKqSro+BOsI/nqBSzqxRqLZv0RjEw0ECgYBeKr7tkRdcuFrnVfpQ4YPXK7bu9e8HSwPaT/m7zp5SwmsacpJWJP9q03NReienadWXZWRuBRwJzW6nu0aOklXhGyGLVfs8NfzkWV/9SNqTJfrsFi+v+9+fRNxF4PhRirumBdHDqYuSueoY0EUecZh5WH6MdpZOAOJZ1LVzcKEogwKBgQDkA5O4Fcxgo8fZaCkeV7Tlg1C1RJBXDD+E29ToAJw2EOruPkWV+rkrZZSpz+4pwgKgcM9IIZJKo/fI7tKDIwj3D+JzFO+H0RNiyMvrCZe7fDnvaPcFGPwqKwyCpjkurKtUdXYbHz9wapFJzaLpYD9opPRBRwZK8TkmXSWNyJi0Kw==
+-----END PRIVATE KEY-----
\ No newline at end of file
diff --git a/pub_key.pem b/pub_key.pem
new file mode 100644
index 0000000..83dad9f
--- /dev/null
+++ b/pub_key.pem
@@ -0,0 +1,3 @@
+-----BEGIN PUBLIC KEY-----
+MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCg2Sk+UF++991s65lk5rIekfG82nvlzz5P8JKxm98ZA4e2UE4avHvGnFv16maFl6SzOTtKcVMnJzyxJsyTIUZvOeEuBXv2ChdVpqux19h1UJPrUoaSH1gi8sYYSkQkiX8i4JJy4yXEmShdajDEPU/ywZ2/0MqXahO1GlFwQid+wwIDAQAB
+-----END PUBLIC KEY-----
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..304902e
--- /dev/null
+++ b/test.py
@@ -0,0 +1,20 @@
+from flask import Flask, request, redirect, abort, session
+
+from FuiouPay import H5Main
+from utils import *
+import os, _thread, urllib
+
+from utils import *
+# add_payment({'pay_amount': 5000, 'id': '450481198712202058', 'fs': 'J315车队', 'jg': '金建', 'name': '曾辉', 'fsfz': 1776480,
+# 'shfid': 'J488912202058', 'hphm': '京BD02424', 'paymentdetails': []},1)
+id_list = ['411024199002103214','130425199203156312','211381198704144119','210602198306150513','422326197404090017','41082219930630201X','413026197704257299','410311198701065578','131002198910063051','411403199405137232','210905198607031038','142702197203072115','34080219650302041X','412721197606053511','410927199001035018','131121198209030213','410523200311100274','231002197204291515','132801196904071812','232303197608246853','372930198112167358','412722199902065731','410182198203162134','410927198406156016','130726199606110055','131126198302172111','41232219740905339X','410482198110215934','130427199008233119','412723196806056811','320721197103302615','410522199911138135','13262719771129171X','37132519820630091X','430721198211020017','332621197109082770','412728197605121599','410311198710282558','41232719990822131X','342127197411200830','522421197401054894','410103197304162475','410122198212114429','120104198611146012','13212919770913071X','132628198209210516','411503199801054012','519002197404161293','130533198304185332','413026199503010977','413028197410216419','410523200011179355','410603198903230056','131024198710023985','411381198506044552','130429196810033818','513723198508160067','410482197411022357','410523199006115052','130634198609253510','372924199009153318','412723198011142184','130730199305153419','342222198104206050','371312198608046713','412702197605171832','110102197203151112','41052119921227705X','130427199405064718','130423197705012114','342127198002109272','410901198602281152','410927199306026032','230281199505102137','37252319830720845X','410821199010271019','41302619760122841X','130226197507055955','410221197404201417','140302197301191018','410927199905241017','142701197406033611','132130197009086717','131002197010093111','210727198110075139','230202198010292514','132522198006080535','410311198207063016','410523199004101036','410927198708105011','410521199101158090','41052119850529051X','413025197112266312','41052219770205813X']
+for id in id_list:
+ res = filter_jdy_ht(id)
+ if not res:
+ print(f"未查询到数据: {id}")
+ continue
+ add_payment({"pay_amount": 0, "id": id,
+ "fs": res[1], "jg": res[0], "name": res[4], "shfid": res[7],
+ "fsfz": res[6],
+ "hphm": res[5]}, 1)
+ time.sleep(10)
\ No newline at end of file
diff --git a/utils.py b/utils.py
new file mode 100644
index 0000000..f8c8f91
--- /dev/null
+++ b/utils.py
@@ -0,0 +1,1328 @@
+from datetime import datetime
+from Crypto.PublicKey import RSA
+import base64
+from Crypto.Cipher import PKCS1_v1_5
+import requests, time, json, uuid, datetime
+from flask import jsonify
+from config import *
+from dateutil.relativedelta import relativedelta
+import threading
+import urllib3
+from Crypto.Cipher import AES
+from base64 import b64encode, b64decode
+import logging
+
+logger = logging.getLogger(__name__)
+
+urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
+
+lock = threading.Lock()
+
+
+def format_uct(origin_date_str):
+ origin_date_str = origin_date_str.split('.')[0]
+ utc_date = datetime.datetime.strptime(origin_date_str, "%Y-%m-%dT%H:%M:%S")
+ local_date = utc_date + datetime.timedelta(hours=8)
+ local_date_str = datetime.datetime.strftime(local_date, '%Y-%m-%d %H:%M:%S')
+ return local_date_str
+
+
+def filter_jdy_ht(id):
+ """筛选简道云合同表单中驾驶员对应信息"""
+ url = f'{base_path}/api/v5/app/entry/data/list'
+ filter_data = {
+ "app_id": fu_app,
+ "entry_id": ht_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id",
+ "method": "eq",
+ "value": [id]
+ }
+ ]
+ }
+ }
+ ht_detail = turn_page(url, filter_data)
+ if not ht_detail:
+ return []
+ ht_detail = ht_detail[0]
+ # 机构
+ jg = ht_detail['jg']
+ # 分司
+ fs = ht_detail['ssbm']
+ # 商户号
+ sh = ht_detail['sh']
+ # 商户号证书
+ shzs = '38C5F89F06EC667D54936A4FF0DC93A227BFC128'
+
+ # 姓名
+ name = ht_detail['name']
+ # 车牌号
+ hphm = ht_detail['hphm']
+ # 分司负责人
+ fsfz = ht_detail['fsfz']['dept_no'] if ht_detail['fsfz'] else ""
+ shfid = ht_detail['shfid']
+ return [jg, fs, sh, shzs, name, hphm, fsfz, shfid]
+
+
+def queryUser(id):
+ # 查询充值明细
+ # user = get_user_info(id)
+ url = f'{base_path}/api/v5/app/entry/data/list'
+ filter_data = {
+ "app_id": pay_app,
+ "entry_id": pay_details_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "pay_type",
+ "method": "in",
+ "value": ["微信支付","支付宝支付","云闪付支付"]
+ },
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ }
+ ]
+ }
+ }
+ filter_data_lw = {
+ "app_id": lw_pay_app,
+ "entry_id": lw_pay_details_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "pay_type",
+ "method": "in",
+ "value": ["微信支付","支付宝支付","云闪付支付"]
+ },
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ }
+ ]
+ }
+ }
+ pay_detail1 = turn_page(url, filter_data)
+ pay_detail2 = turn_page(url, filter_data_lw)
+ pay_detail = pay_detail1 + pay_detail2
+ for i in pay_detail:
+ i['charge_time'] = format_uct(i['charge_time'])
+ # 查询个人余额
+ info = {
+ "app_id": pay_app,
+ "entry_id": accout_id,
+ "filter": {"rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "date",
+ "method": "empty",
+
+ }
+ ]}
+ }
+ # 查询个人余额账户表
+ res = req_tool_jdy(url, info)
+ balance = 0
+ if res['data']:
+ balance = res['data'][0]['balance']
+ balance = float("%.2f" % balance)
+ return {"balance": balance, "pay_detail": pay_detail}
+
+def querydpUser(id):
+ # 查询充值明细
+ # user = get_user_info(id)
+ url = f'{base_path}/api/v5/app/entry/data/list'
+ filter_data = {
+ "app_id": pay_app,
+ "entry_id": pay_details_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "pay_type",
+ "method": "in",
+ "value": ["微信支付","支付宝支付","云闪付支付"]
+ },
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ }
+ ]
+ }
+ }
+ pay_detail = turn_page(url, filter_data)
+ for i in pay_detail:
+ i['charge_time'] = format_uct(i['charge_time'])
+ # 查询个人余额
+ info = {
+ "app_id": pay_app,
+ "entry_id": accout_id,
+ "filter": {"rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "mode_type",
+ "method": "eq",
+ "value": ['DP']
+ },
+ {
+ "field": "date",
+ "method": "empty",
+
+ }
+ ]}
+ }
+ # 查询个人余额账户表
+ res = req_tool_jdy(url, info)
+ balance = 0
+ if res['data']:
+ balance = res['data'][0]['balance']
+ balance = float("%.2f" % balance)
+ return {"balance": balance, "pay_detail": pay_detail}
+
+def get_last_8_hour():
+ _time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time() - 8 * 60 * 60))
+ return _time
+
+
+def turn_page(url, data):
+ """翻页查询"""
+ info = []
+ while 1:
+ try:
+ res = req_tool_jdy(url, data)
+ info += res['data']
+ if len(res['data']) < 100:
+ return info
+ data["data_id"] = res["data"][-1]["_id"]
+ except Exception as e:
+ logger.error(f"turn_page,e{e}, res{res}")
+
+
+def get_user_info(id, type=None):
+ """获取用户信息"""
+ url = f'{base_path}/api/v5/app/entry/data/list'
+ if type:
+ filter_data = {
+ "app_id": fu_app,
+ "entry_id": fu_id,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ }
+ ]
+ }
+ }
+ else:
+ filter_data = {
+ "app_id": fu_app,
+ "entry_id": fu_id,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "user",
+ "method": "eq",
+ "value": [id]
+ }
+ ]
+ }
+ }
+ res = req_tool_jdy(url, filter_data)
+ if res['data']:
+ return res['data'][0]
+ return ''
+
+
+def query_pay_details(id):
+ # 查询某人未收付明细
+ url = f'{base_path}/api/v5/app/entry/data/list'
+ filter_data = {
+ "app_id": pay_app,
+ "entry_id": uncollected_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "bill_type",
+ "method": "eq",
+ "value": "个人账单"
+ },
+ {
+ "field": "no_money",
+ "method": "eq",
+ "value": [id]
+ },
+ ]
+ }
+ }
+ filter_data_lw = {
+ "app_id": lw_pay_app,
+ "entry_id": lw_uncollected_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "no_money",
+ "method": "eq",
+ "value": [id]
+ },
+ ]
+ }
+ }
+
+ uncollected_data1 = turn_page(url, filter_data)
+ for i in uncollected_data1:
+ flag = False
+ if i['bill_type'] == "个人账单":
+ flag = True
+ break
+ uncollected_data2 = turn_page(url, filter_data_lw)
+ uncollected_data = uncollected_data1 + uncollected_data2
+ _data = []
+ for i in uncollected_data:
+ flag = False
+ for j in ["收预收承包金", "承包金", "调度费", "保养费", "营运服务费", "费税收取-其他", "维修费", "违约金", "驾驶员履约服务费", "发票罚款", "停车费", "交通违法扣款", "车辆管理费"]:
+ if j == i['fukuanshiyou']:
+ flag = True
+ break
+ if not flag:
+ continue
+ i['money'] = float("%.2f" % i['money']) if i['money'] else 0
+ i['pay'] = float("%.2f" % i['pay']) if i['pay'] != None and i['pay'] != '' else 0
+ i['no_money'] = float("%.2f" % i['no_money']) if i['no_money'] != None and i['no_money'] != '' else 0
+ i['sort'] = 9999
+ for j in rule_sort:
+ if j in i['fukuanshiyou']:
+ i['sort'] = rule_sort[j]
+ _data.append(i)
+ uncollected_data = _data
+ uncollected_data = sorted(uncollected_data, key=lambda x: x['createTime'], reverse=True)
+ # 过滤已结清数据
+ uncollected_data = [i for i in uncollected_data if i['money'] != i['pay']]
+ undata = {}
+ # 按月份归类 uncollected_data
+ for un in uncollected_data:
+ if un['month1'] in undata.keys():
+ undata[un['month1']]['data'].append(un)
+ else:
+ undata[un['month1']] = {"data": []}
+ undata[un['month1']]['data'] = [un]
+ # # 按月查询增减项 flowState结束
+ amount = 0
+ for un in undata:
+ _th_amount = 0
+ del_list = []
+ filter_data = {
+ "app_id": hz_app,
+ "entry_id": hz_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "month1",
+ "method": "eq",
+ "value": [un]
+ },
+ ]
+ }
+ }
+ hz_data_list = turn_page(url, filter_data)
+ # 应付总额 承包金定额=应收承包金-增减项
+ zj_sum = sum(item['jine'] for item in hz_data_list)
+ for index, j in enumerate(undata[un]['data']):
+ j['no_money'] = j['no_money'] if j['no_money'] else j['money']
+
+ if '承包金' in j['fukuanshiyou'] and j['yewubiaodanmingcheng'] == '费税计划':
+ if j['pay'] - zj_sum == j['money']:
+ del_list.append(index)
+ continue
+ # 定额 de = 表单中的金额-增减
+ # 应付金额 money = 表单中的金额
+ # 未付金额 no_money = 应付金额-增减-已付金额
+ j['pay'] = j['pay'] if j['pay'] else 0
+
+ undata[un]['de'] = j['money'] - zj_sum
+ # j['money'] = undata[un]['de'] + zj_sum
+ j['no_money'] = j['money'] - j['pay']
+ amount += j['no_money'] if j['no_money'] else j['money']
+ _th_amount += j['no_money'] if j['no_money'] else j['money']
+ undata[un]['_th_amount'] = _th_amount
+ undata[un]['hz'] = hz_data_list
+ for d in del_list:
+ undata[un]['data'].pop(d)
+ undata['amount'] = float("%.2f" % amount)
+ for i in list(undata.keys()):
+ if i != 'amount' and not undata[i]['data']:
+ del undata[i]
+ return undata
+
+def query_dp_pay_details(id):
+ # 查询某人未收付明细
+ url = f'{base_path}/api/v5/app/entry/data/list'
+ filter_data = {
+ "app_id": pay_app,
+ "entry_id": uncollected_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "mode_type",
+ "method": "eq",
+ "value": ['DP']
+ },
+ {
+ "field": "no_money",
+ "method": "eq",
+ "value": [id]
+ },
+ ]
+ }
+ }
+ logger.info(f"开始查询未收付明细, id_card: {id},filter_data: {filter_data} ")
+ uncollected_data = turn_page(url, filter_data)
+ _data = []
+ for i in uncollected_data:
+ flag = False
+ for j in ["收预收承包金", "承包金", "调度费", "保养费", "营运服务费", "费税收取-其他", "维修费", "违约金", "驾驶员履约服务费", "发票罚款", "停车费", "交通违法扣款", "车辆管理费"]:
+ if j == i['fukuanshiyou']:
+ if i['bill_type'] == "个人账单":
+ flag = True
+ break
+ if not flag:
+ continue
+ i['money'] = float("%.2f" % i['money']) if i['money'] else 0
+ i['pay'] = float("%.2f" % i['pay']) if i['pay'] != None and i['pay'] != '' else 0
+ i['no_money'] = float("%.2f" % i['no_money']) if i['no_money'] != None and i['no_money'] != '' else 0
+ i['sort'] = 9999
+ for j in rule_sort:
+ if j in i['fukuanshiyou']:
+ i['sort'] = rule_sort[j]
+ _data.append(i)
+ uncollected_data = _data
+ uncollected_data = sorted(uncollected_data, key=lambda x: x['createTime'], reverse=True)
+ # 过滤已结清数据
+ uncollected_data = [i for i in uncollected_data if i['money'] != i['pay']]
+ undata = {}
+ # 按月份归类 uncollected_data
+ for un in uncollected_data:
+ if un['month1'] in undata.keys():
+ undata[un['month1']]['data'].append(un)
+ else:
+ undata[un['month1']] = {"data": []}
+ undata[un['month1']]['data'] = [un]
+ # # 按月查询增减项 flowState结束
+ amount = 0
+ for un in undata:
+ _th_amount = 0
+ del_list = []
+ filter_data = {
+ "app_id": hz_app,
+ "entry_id": hz_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "mode_type",
+ "method": "eq",
+ "value": ['DP']
+ },
+ {
+ "field": "month1",
+ "method": "eq",
+ "value": [un]
+ },
+ ]
+ }
+ }
+ hz_data_list = turn_page(url, filter_data)
+ # 应付总额 承包金定额=应收承包金-增减项
+ zj_sum = sum(item['jine'] for item in hz_data_list)
+ for index, j in enumerate(undata[un]['data']):
+ j['no_money'] = j['no_money'] if j['no_money'] else j['money']
+
+ if '承包金' in j['fukuanshiyou'] and j['yewubiaodanmingcheng'] == '费税计划':
+ if j['pay'] - zj_sum == j['money']:
+ del_list.append(index)
+ continue
+ # 定额 de = 表单中的金额-增减
+ # 应付金额 money = 表单中的金额
+ # 未付金额 no_money = 应付金额-增减-已付金额
+ j['pay'] = j['pay'] if j['pay'] else 0
+
+ undata[un]['de'] = j['money'] - zj_sum
+ # j['money'] = undata[un]['de'] + zj_sum
+ j['no_money'] = j['money'] - j['pay']
+ amount += j['no_money'] if j['no_money'] else j['money']
+ _th_amount += j['no_money'] if j['no_money'] else j['money']
+ undata[un]['_th_amount'] = _th_amount
+ undata[un]['hz'] = hz_data_list
+ for d in del_list:
+ undata[un]['data'].pop(d)
+ undata['amount'] = float("%.2f" % amount)
+ for i in list(undata.keys()):
+ if i != 'amount' and not undata[i]['data']:
+ del undata[i]
+ return undata
+
+def query_lw_pay_details(id):
+ # 查询某人未收付明细
+ url = f'{base_path}/api/v5/app/entry/data/list'
+ filter_data_lw = {
+ "app_id": lw_pay_app,
+ "entry_id": lw_uncollected_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "no_money",
+ "method": "eq",
+ "value": [id]
+ },
+ ]
+ }
+ }
+
+ uncollected_data = turn_page(url, filter_data_lw)
+ _data = []
+ for i in uncollected_data:
+ flag = False
+ for j in ["收预收承包金", "承包金", "调度费", "保养费", "营运服务费", "费税收取-其他", "维修费", "违约金", "驾驶员履约服务费", "交通违法扣款"]:
+ if j == i['fukuanshiyou']:
+ flag = True
+ break
+ if not flag:
+ continue
+ i['money'] = float("%.2f" % i['money']) if i['money'] else 0
+ i['pay'] = float("%.2f" % i['pay']) if i['pay'] != None and i['pay'] != '' else 0
+ i['no_money'] = float("%.2f" % i['no_money']) if i['no_money'] != None and i['no_money'] != '' else 0
+ i['sort'] = 9999
+ for j in rule_sort:
+ if j in i['fukuanshiyou']:
+ i['sort'] = rule_sort[j]
+ _data.append(i)
+ uncollected_data = _data
+ uncollected_data = sorted(uncollected_data, key=lambda x: x['createTime'], reverse=True)
+ # 过滤已结清数据
+ uncollected_data = [i for i in uncollected_data if i['money'] != i['pay']]
+ undata = {}
+ # 按月份归类 uncollected_data
+ for un in uncollected_data:
+ if un['month1'] in undata.keys():
+ undata[un['month1']]['data'].append(un)
+ else:
+ undata[un['month1']] = {"data": []}
+ undata[un['month1']]['data'] = [un]
+ # # 按月查询增减项 flowState结束
+ amount = 0
+ for un in undata:
+ _th_amount = 0
+ del_list = []
+ filter_data = {
+ "app_id": hz_app,
+ "entry_id": hz_id,
+ "limit": 100,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [id]
+ },
+ {
+ "field": "month1",
+ "method": "eq",
+ "value": [un]
+ },
+ ]
+ }
+ }
+ hz_data_list = turn_page(url, filter_data)
+ # 应付总额 承包金定额=应收承包金-增减项
+ zj_sum = sum(item['jine'] for item in hz_data_list)
+ for index, j in enumerate(undata[un]['data']):
+ j['no_money'] = j['no_money'] if j['no_money'] else j['money']
+
+ if '承包金' in j['fukuanshiyou'] and j['yewubiaodanmingcheng'] == '费税计划':
+ if j['pay'] - zj_sum == j['money']:
+ del_list.append(index)
+ continue
+ # 定额 de = 表单中的金额-增减
+ # 应付金额 money = 表单中的金额
+ # 未付金额 no_money = 应付金额-增减-已付金额
+ j['pay'] = j['pay'] if j['pay'] else 0
+
+ undata[un]['de'] = j['money'] - zj_sum
+ # j['money'] = undata[un]['de'] + zj_sum
+ j['no_money'] = j['money'] - j['pay']
+ amount += j['no_money'] if j['no_money'] else j['money']
+ _th_amount += j['no_money'] if j['no_money'] else j['money']
+ undata[un]['_th_amount'] = _th_amount
+ undata[un]['hz'] = hz_data_list
+ for d in del_list:
+ undata[un]['data'].pop(d)
+ undata['amount'] = float("%.2f" % amount)
+ for i in list(undata.keys()):
+ if i != 'amount' and not undata[i]['data']:
+ del undata[i]
+ return undata
+
+def req_tool_jdy(url, data):
+ headers = {"Authorization": f"Bearer {apikey}"}
+ while 1:
+ try:
+ res = requests.post(url, headers=headers, json=data, timeout=20, verify=False).json()
+ if "code" in res.keys():
+ logger.info(f"req_tool_jdy{res}")
+ time.sleep(2)
+ continue
+ return res
+ except Exception as e:
+ logger.error(f"error, {e}")
+
+
+def req_tool_vx(url, data=None, flag=None):
+ while 1:
+ try:
+ if not flag:
+ res = requests.post(url, json=data, timeout=10, verify=False).json()
+ else:
+ res = requests.get(url, timeout=10, verify=False).json()
+ return res
+ except Exception as e:
+ logger.error(f"error, {e}")
+
+
+def update_no_money(data):
+ """更新未收付,添加已收付明细"""
+ url = f'{base_path}/api/v5/app/entry/data/update'
+ add_url = f'{base_path}/api/v5/app/entry/data/create'
+ del_url = f'{base_path}/api/v1/app/{pay_app}/entry/{uncollected_id}/data_delete'
+ for i in data:
+ if 'amount' == i:
+ continue
+ for j in data[i]['data']:
+ if j['fukuanshiyou'] == '驾驶员履约服务费':
+ continue
+ info = {
+ "app_id": pay_app,
+ "entry_id": uncollected_id,
+ "data_id": j['_id'],
+ "is_start_trigger": True,
+ "is_start_workflow": True,
+ "data": {
+ "pay": {"value": j['pay']},
+ "no_money": {"value": j['no_money']}
+ }
+ }
+ req_tool_jdy(url, info)
+ now_time = get_last_8_hour()
+ # 新增已收付明细
+ if 'flag' in j.keys() and float(j['flag_m']):
+ if not j['flag_m'] or not float(j['flag_m']):
+ continue
+ fs_p = j['fs_p']['dept_no'] if j['fs_p'] else ""
+ add_info = {
+ "app_id": pay_app,
+ "entry_id": received_id,
+ "is_start_trigger": True,
+ "is_start_workflow": True,
+ "data": {
+ "code": {"value": j['code']}, "type": {"value": "收款"},
+ "fukuanshiyou": {"value": j['fukuanshiyou']}, "month": {"value": j['month']},
+ "month1": {"value": j['month1']},"yewubiaodanmingcheng": {"value": j['yewubiaodanmingcheng']},
+ "yewubiaodanbianma": {"value": j['yewubiaodanbianma']},
+ "sijixingming": {"value": j['sijixingming']},"shfid": {"value": j['shfid']},
+ "id_card": {"value": j['id_card']},"pay_time": {"value": now_time},
+ "company_jc": {"value": j['company_jc']}, "xd": {"value": j['xd']},
+ "sijisuozaigongsi": {"value": j['sijisuozaigongsi']}, "fs": {"value": j['fs']},
+ "license_plate": {"value": j['license_plate']}, "money": {"value": j['money']},
+ "pay": {"value": j['flag_m']}, "hz_month": {"value": j['hz_month']}, "zjin_status": {"value": "未结算"},
+ "fs_p": {"value": fs_p}, "shgid": {"value": j['shgid']}, "mode_type": {"value": j['mode_type']},
+ "sy": {"value": "个人账户抵扣"},"ys": {"value": j['ys']},"lydunjiao": {"value": j['lydunjiao']},"bill_type": {"value": j['bill_type']},
+ "car_dept": {"value": j['car_dept']},"contract_num": {"value": j['contract_num']}
+ }
+ }
+ logger.info(f"新增已收========={add_info}")
+ req_tool_jdy(add_url, add_info)
+ logger.info(f"删除========={j['pay']}, {j['money']}" )
+ if j['sijixingming'] == '姓名':
+ logger.info(f"j,{j}")
+ if j['pay'] == j['money']:
+ # 未收付已清缴,删除未收付明细
+ del_info = {
+ "data_id": j["_id"],
+ "is_start_trigger": True
+ }
+ # 新增劳务佣金
+ # today_str = datetime.datetime.now().strftime('%Y-%m-%d')
+ # if j['name'] == "承包金":
+ # add_info = {
+ # "app_id": pay_app,
+ # "entry_id": uncollected_id,
+ # "is_start_trigger": True,
+ # "is_start_workflow": True,
+ # "data": {
+ # "type": {"value": "付款"},
+ # "name": {"value": "劳务佣金"}, "month": {"value": j['month']},
+ # "yewubiaodanmingcheng": {"value": "已收付表单"},
+ # "yewubiaodanbianma": {"value": j['yewubiaodanbianma']},
+ # "sijixingming": {"value": j['sijixingming']},
+ # "id_card": {"value": j['id_card']},
+ # "sijisuozaigongsi": {"value": j['sijisuozaigongsi']}, "fs": {"value": j['fs']},
+ # "_widget_1704357037281": {"value": j['_widget_1704357037281']},
+ # "abbreviation": {"value": j['abbreviation']}, "money": {"value": j['lw_money']},
+ # "pay": {"value": 0}, "no_money": {"value": j['lw_money']},
+ # "fs_p": {"value": fs_p}, "status1": {"value": "已清缴"},
+ # "lw_money": {"value": j['lw_money']},"hz_month": {"value": j['hz_month']},
+ # "ys": {"value": today_str}, "month1": {"value": j['month1']},
+ # "bill_type": {"value": "劳务"}
+ # }
+ # }
+ # req_tool_jdy(add_url, add_info)
+ logger.info(f"===========================未收付已清缴,删除未收付明细===============================")
+ req_tool_jdy(del_url, del_info)
+
+def update_lw_no_money(data):
+ """更新未收付,添加已收付明细"""
+ url = f'{base_path}/api/v5/app/entry/data/update'
+ add_url = f'{base_path}/api/v5/app/entry/data/create'
+ del_url = f'{base_path}/api/v1/app/{lw_pay_app}/entry/{lw_uncollected_id}/data_delete'
+ for i in data:
+ if 'amount' == i:
+ continue
+ for j in data[i]['data']:
+ if j['fukuanshiyou'] != '驾驶员履约服务费':
+ continue
+ info = {
+ "app_id": lw_pay_app,
+ "entry_id": lw_uncollected_id,
+ "data_id": j['_id'],
+ "is_start_trigger": True,
+ "is_start_workflow": True,
+ "data": {
+ "pay": {"value": j['pay']},
+ "no_money": {"value": j['no_money']},
+ }
+ }
+ logger.info(f"更新未收{info}")
+ req_tool_jdy(url, info)
+ # 新增已收付明细
+ if 'flag' in j.keys() and float(j['flag_m']):
+ if not j['flag_m'] or not float(j['flag_m']):
+ continue
+ fs_p = j['fs_p']['dept_no'] if j['fs_p'] else ""
+ add_info = {
+ "app_id": lw_pay_app,
+ "entry_id": lw_received_id,
+ "is_start_trigger": True,
+ "is_start_workflow": True,
+ "data": {
+ "code": {"value": j['code']}, "type": {"value": "收款"},
+ "fukuanshiyou": {"value": j['fukuanshiyou']}, "month": {"value": j['month']},
+ "yewubiaodanmingcheng": {"value": j['yewubiaodanmingcheng']},
+ "yewubiaodanbianma": {"value": j['yewubiaodanbianma']},
+ "sijixingming": {"value": j['sijixingming']},
+ "sijishenfenzhenghao": {"value": j['id_card']},"shfid": {"value": j['shfid']},
+ "sijisuozaigongsi": {"value": j['sijisuozaigongsi']}, "fs": {"value": j['fs']},
+ "license_plate": {"value": j['car_num']},"abbreviation": {"value": j['abbreviation']}, "jine": {"value": j['money']},
+ "pay": {"value": j['flag_m']},
+ "fs_p": {"value": fs_p}, "status1": {"value": "已清缴"},
+ "status": {"value": "已收款"}, "month1": {"value": j['month1']}
+ }
+ }
+ logger.info(f"=====================新增已收付{data}")
+ req_tool_jdy(add_url, add_info)
+ logger.info(f"删除========={j['pay']}, {j['money']}")
+ if j['sijixingming'] == '姓名':
+ logger.info(f"j,{j}")
+ if j['pay'] == j['money']:
+ # 未收付已清缴,删除未收付明细
+ del_info = {
+ "data_id": j["_id"],
+ "is_start_trigger": True
+ }
+ logger.info(f"===========================履约服务费已清缴,删除未收付明细===============================")
+ req_tool_jdy(del_url, del_info)
+
+
+def update_info(cz, _balcace, balance, user_info):
+ # 余额 = 累计充值金额-累计抵扣金额
+ # 本次抵扣=本次充值+本次余额-剩余金额
+ di = cz + balance - _balcace
+ """更新个人账户余额"""
+ # if pay_amount:
+ # # 支付完有剩余余额可直接更新
+ # amount = pay_amount
+ # else:
+ # # 查询未收付历史数据
+ # details = query_pay_details(user_info['user']['username'])
+ # amount = details['amount']
+ # amount *= -1
+ url = f'{base_path}/api/v5/app/entry/data/list'
+ info = {
+ "app_id": pay_app,
+ "entry_id": accout_id,
+ "filter": {"rel": "and",
+ "cond": [
+ {
+ "field": "id_card",
+ "method": "eq",
+ "value": [user_info['id']]
+ },
+ {
+ "field": "date",
+ "method": "empty"
+ },
+ ]}
+ }
+ # 查询个人余额账户表 没有新增,有更新
+ res = req_tool_jdy(url, info)
+ if res['data']:
+ # 更新
+ url = f'{base_path}/api/v5/app/entry/data/update'
+ pay = res['data'][-1]['pay'] + cz
+ di = di + (res['data'][-1]['deduction'] if res['data'][-1]['deduction'] else 0)
+ amount = pay - di # 累计充值-累计抵扣
+ info = {
+ "app_id": pay_app,
+ "entry_id": accout_id,
+ "data_id": res['data'][-1]["_id"],
+ "is_start_workflow": True,
+ "is_start_trigger": True,
+ "data": {
+ "pay": {"value": pay}, "balance": {"value": amount},
+ "deduction": {"value": di}
+ }
+ }
+ else:
+ # 新增
+ amount = cz - di # 本次充值-本次抵扣
+ if 'name' in user_info.keys():
+ name = user_info['name']
+ else:
+ name = ""
+ url = f'{base_path}/api/v5/app/entry/data/create'
+ info = {
+ "app_id": pay_app,
+ "entry_id": accout_id,
+ "is_start_workflow": True,
+ "is_start_trigger": True,
+ "data": {
+ "id_card": {"value": user_info['id']},
+ "name": {"value": name},
+ "pay": {"value": cz},
+ "deduction": {"value": di},
+ "account_type": {"value": "预收款"},
+ "balance": {"value": amount},
+ "jg": {"value": user_info['jg']},
+ "mode_type": {"value": "DP"},
+ "car_dept": {"value": "DP"},
+ "fs": {"value": user_info['fs']},
+ "fsfz": {"value": user_info['fsfz']},
+ "hphm": {"value": user_info['hphm']},
+ "shfid": {"value": user_info['shfid']},
+ }
+ }
+ req_tool_jdy(url, info)
+
+
+def add_payment(data, type=None):
+ lock.acquire()
+ logger.info(f"开始========data{data}, type{type}")
+ # user = get_user_info(data['id'])
+ # 充值成功后 回写充值明细
+ now_month = datetime.datetime.now().strftime("%Y-%m")
+ now_time = get_last_8_hour()
+ url = f'{base_path}/api/v5/app/entry/data/create'
+ if not type:
+ # 查询是否已存在
+ query_url = f'{base_path}/api/v5/app/entry/data/list'
+ _query_tmp = {
+ "app_id": pay_app,
+ "entry_id": pay_details_id,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "transactionid",
+ "method": "eq",
+ "value": [data['transaction_id']]
+ }
+ ]
+ }
+ }
+ res = req_tool_jdy(query_url, _query_tmp)
+ if res['data']:
+ logger.info(f"充值明细已存在========{data['transaction_id']}")
+ lock.release()
+ return
+ info = {
+ "app_id": pay_app,
+ "entry_id": pay_details_id,
+ "is_start_workflow": True,
+ "is_start_trigger": True,
+ "data": {
+ "id_card": {"value": data['id']}, "name": {"value": data['name']},
+ "charge_amount": {"value": data['pay_amount']}, "pay_type": {"value": data['pay_type']},
+ "coll_type": {"value": "网银"}, "month": {"value": now_month},"fsfz": {"value": data['fsfz']},
+ "jg": {"value": data['jg']}, "fs": {"value": data['fs']},"mode_type": {"value": "DP"},"collect_pos": {"value": data['jg']},
+ "hphm": {"value": data['hphm']},"shfid":{"value": data['shfid']},"zhtype": {"value": "预收款"},"type": {"value": "转入"},
+ "charge_time": {"value": now_time}, "transactionid": {"value": data['transaction_id']}
+ }
+ }
+ if data['fsfz']:
+ info['data']["fsfz"] = {"value": data['fsfz']}
+ req_tool_jdy(url, info)
+ details = query_dp_pay_details(data['id'])
+ dates = list(details.keys())
+ dates.sort()
+ dates.remove('amount')
+ pay_amount = data['pay_amount']
+ # 查询余额
+ balance = querydpUser(data['id'])
+ pay_amount += balance['balance']
+ if pay_amount <= 0:
+ logger.info(f"余额为0结束========{data}")
+ lock.release()
+ return
+ logger.info(f"执行承包金add_payment{data}")
+ next_month = (datetime.datetime.now().date() - relativedelta(months=-1)).strftime("%Y-%m")
+ if next_month in dates:
+ _tmp = details[next_month]['data']
+ _tmp = sorted(_tmp, key=lambda x: x['sort'])
+ for i in _tmp:
+ if pay_amount:
+ i['flag'] = 1
+ if '承包金' in i['fukuanshiyou']:
+ # 承包金实际需要缴纳的
+ if pay_amount < i['money'] - i['pay']:
+ # 修改 i['pay'] 充值金额,推送修改
+ i['pay'] += pay_amount
+ i['no_money'] = i['money'] - i['pay']
+ i['flag_m'] = pay_amount
+ pay_amount = 0
+ else:
+ pay_amount -= (i['money'] - i['pay'])
+ i['flag_m'] = (i['money'] - i['pay'])
+ i['pay'] = i['money']
+ i['no_money'] = 0
+
+ else:
+ if i['money'] != i['pay']:
+ # 根据未支付的金额,扣除总金额
+ df = i['money'] - i['pay']
+ if pay_amount < df:
+ # 修改 i['pay'] 充值金额,推送修改
+ i['pay'] += pay_amount
+ i['no_money'] = i['money'] - i['pay']
+ i['flag_m'] = pay_amount
+ pay_amount = 0
+ else:
+ pay_amount -= df
+ i['pay'] = i['money']
+ i['no_money'] = 0
+ i['flag_m'] = df
+ if now_month in dates:
+ _tmp = details[now_month]['data']
+ _tmp = sorted(_tmp, key=lambda x: x['sort'])
+ for i in _tmp:
+ if pay_amount:
+ i['flag'] = 1
+ if '承包金' in i['fukuanshiyou']:
+ # 承包金实际需要缴纳的
+ if pay_amount < i['money'] - i['pay']:
+ # 修改 i['pay'] 充值金额,推送修改
+ i['pay'] += pay_amount
+ i['no_money'] = i['money'] - i['pay']
+ i['flag_m'] = pay_amount
+ pay_amount = 0
+ else:
+ pay_amount -= (i['money'] - i['pay'])
+ i['flag_m'] = (i['money'] - i['pay'])
+ i['pay'] = i['money']
+ i['no_money'] = 0
+
+ else:
+ if i['money'] != i['pay']:
+ # 根据未支付的金额,扣除总金额
+ df = i['money'] - i['pay']
+ if pay_amount < df:
+ # 修改 i['pay'] 充值金额,推送修改
+ i['pay'] += pay_amount
+ i['no_money'] = i['money'] - i['pay']
+ i['flag_m'] = pay_amount
+ pay_amount = 0
+ else:
+ pay_amount -= df
+ i['pay'] = i['money']
+ i['no_money'] = 0
+ i['flag_m'] = df
+ for i in dates:
+ if i == next_month or i == now_month:
+ continue
+ _tmp = details[i]['data']
+ _tmp = sorted(_tmp, key=lambda x: x['sort'])
+ for i in _tmp:
+ if pay_amount:
+ i['flag'] = 1
+ if '承包金' in i['fukuanshiyou']:
+ # 承包金实际需要缴纳的
+ if pay_amount < i['money'] - i['pay']:
+ # 修改 i['pay'] 充值金额,推送修改
+ i['pay'] += pay_amount
+ i['no_money'] = i['money'] - i['pay']
+ i['flag_m'] = pay_amount
+ pay_amount = 0
+
+ else:
+ pay_amount -= (i['money'] - i['pay'])
+ i['flag_m'] = (i['money'] - i['pay'])
+ i['pay'] = i['money']
+ i['no_money'] = 0
+
+ else:
+ if i['money'] != i['pay']:
+ # 根据未支付的金额,扣除总金额
+ df = i['money'] - i['pay']
+ if pay_amount < df:
+ # 修改 i['pay'] 充值金额,推送修改
+ i['pay'] += pay_amount
+ i['no_money'] = i['money'] - i['pay']
+ i['flag_m'] = pay_amount
+ pay_amount = 0
+
+ else:
+ pay_amount -= df
+ i['pay'] = i['money']
+ i['no_money'] = 0
+ i['flag_m'] = df
+ # 根据抵扣规则,更新未支付的数据,将清缴数据新增至已收付明细
+ logger.info(f"更新未收付{details}")
+ update_no_money(details)
+ # 未收付更新完后,更新个人账户余额update_info
+ logger.info(f"更新个人账户余额update_info")
+ update_info(data['pay_amount'], pay_amount, balance['balance'], data)
+ lock.release()
+ logger.info(f"结束========")
+
+def add_payment_lw(data, type=None):
+ lock.acquire()
+ logger.info(f"开始========{data}")
+ logger.info(f"data{data}, type{type}")
+ # user = get_user_info(data['id'])
+ # 充值成功后 回写充值明细
+ now_month = datetime.datetime.now().strftime("%Y-%m")
+ now_time = get_last_8_hour()
+ url = f'{base_path}/api/v5/app/entry/data/create'
+ if not type:
+ # 查询是否已存在
+ query_url = f'{base_path}/api/v5/app/entry/data/list'
+ _query_tmp = {
+ "app_id": lw_pay_app,
+ "entry_id": lw_pay_details_id,
+ "filter": {
+ "rel": "and",
+ "cond": [
+ {
+ "field": "transactionid",
+ "method": "eq",
+ "value": [data['transaction_id']]
+ }
+ ]
+ }
+ }
+ res = req_tool_jdy(query_url, _query_tmp)
+ if res['data']:
+ logger.info(f"充值明细已存在========{data}"['transaction_id'])
+ lock.release()
+ return
+ info = {
+ "app_id": lw_pay_app,
+ "entry_id": lw_pay_details_id,
+ "is_start_workflow": True,
+ "is_start_trigger": True,
+ "data": {
+ "id_card": {"value": data['id']}, "name": {"value": data['name']},
+ "price": {"value": data['pay_amount']}, "pay_type": {"value": data['pay_type']},
+ "month": {"value": now_month},"shfid": {"value": data['shfid']},
+ "jg": {"value": data['jg']}, "fs": {"value": data['fs']},
+ "hphm": {"value": data['hphm']},"pay_status": {"value": "付款成功"},
+ "charge_time": {"value": now_time}, "transactionid": {"value": data['transaction_id']}
+ }
+ }
+ if data['fsfz']:
+ info['data']["fsfz"] = {"value": data['fsfz']}
+ req_tool_jdy(url, info)
+ details = query_lw_pay_details(data['id'])
+ dates = list(details.keys())
+ dates.sort()
+ dates.remove('amount')
+ pay_amount = float(data['pay_amount'])
+
+ logger.info(f"执行履约服务费add_payment{data}")
+ next_month = (datetime.datetime.now().date() - relativedelta(months=-1)).strftime("%Y-%m")
+ # if next_month in dates:
+ # _tmp = details[next_month]['data']
+ # _tmp = sorted(_tmp, key=lambda x: x['sort'])
+ # for i in _tmp:
+ # if pay_amount:
+ # i['flag'] = 1
+ # if '承包金' in i['name']:
+ # # 承包金实际需要缴纳的
+ # if pay_amount < i['money'] - i['pay']:
+ # # 修改 i['pay'] 充值金额,推送修改
+ # i['pay'] += pay_amount
+ # i['no_money'] = i['money'] - i['pay']
+ # i['flag_m'] = pay_amount
+ # pay_amount = 0
+ # else:
+ # pay_amount -= (i['money'] - i['pay'])
+ # i['flag_m'] = (i['money'] - i['pay'])
+ # i['pay'] = i['money']
+ # i['no_money'] = 0
+ #
+ # else:
+ # if i['money'] != i['pay']:
+ # # 根据未支付的金额,扣除总金额
+ # df = i['money'] - i['pay']
+ # if pay_amount < df:
+ # # 修改 i['pay'] 充值金额,推送修改
+ # i['pay'] += pay_amount
+ # i['no_money'] = i['money'] - i['pay']
+ # i['flag_m'] = pay_amount
+ # pay_amount = 0
+ # else:
+ # pay_amount -= df
+ # i['pay'] = i['money']
+ # i['no_money'] = 0
+ # i['flag_m'] = df
+ # if now_month in dates:
+ # _tmp = details[now_month]['data']
+ # _tmp = sorted(_tmp, key=lambda x: x['sort'])
+ # for i in _tmp:
+ # if pay_amount:
+ # i['flag'] = 1
+ # if '承包金' in i['name']:
+ # # 承包金实际需要缴纳的
+ # if pay_amount < i['money'] - i['pay']:
+ # # 修改 i['pay'] 充值金额,推送修改
+ # i['pay'] += pay_amount
+ # i['no_money'] = i['money'] - i['pay']
+ # i['flag_m'] = pay_amount
+ # pay_amount = 0
+ # else:
+ # pay_amount -= (i['money'] - i['pay'])
+ # i['flag_m'] = (i['money'] - i['pay'])
+ # i['pay'] = i['money']
+ # i['no_money'] = 0
+ #
+ # else:
+ # if i['money'] != i['pay']:
+ # # 根据未支付的金额,扣除总金额
+ # df = i['money'] - i['pay']
+ # if pay_amount < df:
+ # # 修改 i['pay'] 充值金额,推送修改
+ # i['pay'] += pay_amount
+ # i['no_money'] = i['money'] - i['pay']
+ # i['flag_m'] = pay_amount
+ # pay_amount = 0
+ # else:
+ # pay_amount -= df
+ # i['pay'] = i['money']
+ # i['no_money'] = 0
+ # i['flag_m'] = df
+ for i in dates:
+ # if i == next_month or i == now_month:
+ # continue
+ _tmp = details[i]['data']
+ _tmp = sorted(_tmp, key=lambda x: x['sort'])
+ for i in _tmp:
+ if pay_amount:
+ i['flag'] = 1
+ # if '承包金' in i['name']:
+ # # 承包金实际需要缴纳的
+ # if pay_amount < i['money'] - i['pay']:
+ # # 修改 i['pay'] 充值金额,推送修改
+ # i['pay'] += pay_amount
+ # i['no_money'] = i['money'] - i['pay']
+ # i['flag_m'] = pay_amount
+ # pay_amount = 0
+ #
+ # else:
+ # pay_amount -= (i['money'] - i['pay'])
+ # i['flag_m'] = (i['money'] - i['pay'])
+ # i['pay'] = i['money']
+ # i['no_money'] = 0
+ #
+ # else:
+ if i['money'] != i['pay']:
+ # 根据未支付的金额,扣除总金额
+ df = i['money'] - i['pay']
+ if pay_amount < df:
+ # 修改 i['pay'] 充值金额,推送修改
+ logger.info(f"==========================================================支付小于待付")
+ i['pay'] += pay_amount
+ i['no_money'] = i['money'] - i['pay']
+ i['flag_m'] = pay_amount
+ pay_amount = 0
+ else:
+ logger.info(f"==========================================================支付不小于待付")
+ pay_amount -= df
+ i['pay'] = i['money']
+ i['no_money'] = 0
+ i['flag_m'] = df
+ # 根据抵扣规则,更新未支付的数据,将清缴数据新增至已收付明细
+ logger.info(f"更新未收付{details}")
+ update_lw_no_money(details)
+ lock.release()
+ logger.info(f"结束========")
+
+def rsa_long_decrypt(priv_key, msg, length=256):
+ """
+ 1024bit的证书用128,2048bit证书用256位
+ """
+ try:
+ privobj = PKCS1_v1_5.new(priv_key)
+ res = []
+ b64_msg = base64.b64decode(msg)
+ for i in range(0, len(b64_msg), length):
+ chunk = b64_msg[i:i + length]
+ decrypted_chunk = privobj.decrypt(chunk, 'xyz').decode('GBK')
+ res.append(decrypted_chunk)
+ logger.info(f"解密回调完成:{res}")
+ except Exception as e:
+ logger.error(f"解密回调失败:{e}")
+ return jsonify(error=str(e)), 500
+ return "".join(res)
+
+def decode_notify_data(res_json):
+ try:
+ ciphertext = res_json['resource']['ciphertext']
+ nonce = res_json['resource']['nonce']
+ associated_data = res_json['resource']['associated_data']
+ cipher = AES.new(v3_SECRET.encode(), AES.MODE_GCM, nonce=nonce.encode())
+ cipher.update(associated_data.encode())
+ en_data = b64decode(ciphertext.encode('utf-8'))
+ auth_tag = en_data[-16:]
+ _en_data = en_data[:-16]
+ plaintext = cipher.decrypt_and_verify(_en_data, auth_tag)
+ decodejson = json.loads(plaintext.decode())
+ except Exception as e:
+ logger.error(f"解密回调失败:{e}")
+ return None
+ return decodejson
+
+
+def get_wx_token():
+ url = f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={corpid}&corpsecret={SECRET}'
+ res = req_tool_vx(url, flag=1)
+ return res['access_token']
+
+def get_zy_wx_token():
+ url = f'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid={zy_corpid}&corpsecret={ZY_SECRET}'
+ res = req_tool_vx(url, flag=1)
+ return res['access_token']
+
+
+def query_wx_fj_info(id):
+ """查询企微中的附加信息"""
+ token = get_wx_token()
+ url = f'https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token={token}&userid={id}'
+ res = req_tool_vx(url, flag=1)
+ val = ""
+ logger.info(f"query_wx_fj_info,res{res},id{id}")
+ for i in res['extattr']['attrs']:
+ if i['name'] == '附加信息':
+ val = i['value']
+ return val
+
+
+def query_wx_userid(code):
+ """查询企微中的userid"""
+ token = get_wx_token()
+ url = f'https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token={token}&code={code}'
+ res = req_tool_vx(url, flag=1)
+ return res['userid']
+
+def query_zy_wx_fj_info(id):
+ """查询企微中的附加信息"""
+ token = get_zy_wx_token()
+ url = f'https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token={token}&userid={id}'
+ res = req_tool_vx(url, flag=1)
+ val = ""
+ logger.info(f"query_wx_fj_info{res},{id}")
+ for i in res['extattr']['attrs']:
+ if i['name'] == '附加信息':
+ val = i['value']
+ return val
+
+
+def query_zy_wx_userid(code):
+ """查询企微中的userid"""
+ token = get_zy_wx_token()
+ url = f'https://qyapi.weixin.qq.com/cgi-bin/auth/getuserinfo?access_token={token}&code={code}'
+ res = req_tool_vx(url, flag=1)
+ return res['userid']