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']