文件
xionggeshop/addons/shopro_huifu/docs/generate_contract_docx.py
可乐加冰 a8cdc763cb ```
chore(brand): 统一将品牌名从雄戈小酒更改为橙虎小酒

- 更新alisms插件配置中的签名值
- 修改shopro插件中所有SQL脚本的品牌名称引用
- 更新商城配置、商品分类、演示数据中的品牌名称
- 替换后台登录页面的品牌标识
- 更新汇付分账配置中的媒介名称
- 修改登录预览生成脚本中的品牌显示
```
2026-10-28 14:55:54 +08:00

363 行
22 KiB
Python

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

# -*- coding: utf-8 -*-
"""生成汇付分账相关 Word 文档"""
from pathlib import Path
from docx import Document
from docx.enum.text import WD_ALIGN_PARAGRAPH, WD_LINE_SPACING
from docx.oxml.ns import qn
from docx.shared import Cm, Pt
DOCS_DIR = Path(__file__).parent
# 甲方(平台)信息 — 修改此处后重新运行脚本即可
COMPANY = {
"name": "贵州宥川商贸有限公司",
"credit_code": "91520402MAKD45F14Y",
"huifu_id": "6666000237529347",
"legal_person": "周成",
"address": "贵州省织金县实兴乡上坝村周家寨组",
"phone": "13368531489",
"sign_place": "贵州省织金县",
"miniprogram": "橙虎小酒",
}
def output_paths():
suffix = COMPANY["name"]
return (
DOCS_DIR / f"多方分账业务合作协议-{suffix}.docx",
DOCS_DIR / f"汇付分账40%申请填写说明-{suffix}.docx",
)
def set_run_font(run, name="宋体", size=12, bold=False):
run.font.name = name
run._element.rPr.rFonts.set(qn("w:eastAsia"), name)
run.font.size = Pt(size)
run.font.bold = bold
def add_para(doc, text, align=WD_ALIGN_PARAGRAPH.JUSTIFY, size=12, bold=False, space_after=6, first_line_indent=None):
p = doc.add_paragraph()
p.alignment = align
p.paragraph_format.line_spacing_rule = WD_LINE_SPACING.ONE_POINT_FIVE
p.paragraph_format.space_after = Pt(space_after)
if first_line_indent is not None:
p.paragraph_format.first_line_indent = Cm(first_line_indent)
run = p.add_run(text)
set_run_font(run, size=size, bold=bold)
return p
def add_heading_text(doc, text, level=1):
sizes = {1: 16, 2: 14, 3: 12}
add_para(
doc,
text,
align=WD_ALIGN_PARAGRAPH.CENTER if level == 1 else WD_ALIGN_PARAGRAPH.LEFT,
size=sizes.get(level, 12),
bold=True,
space_after=10,
)
def add_info_table(doc, rows):
table = doc.add_table(rows=len(rows), cols=2)
table.style = "Table Grid"
for i, (k, v) in enumerate(rows):
table.rows[i].cells[0].text = k
table.rows[i].cells[1].text = v
for cell in table.rows[i].cells:
for para in cell.paragraphs:
para.paragraph_format.line_spacing_rule = WD_LINE_SPACING.SINGLE
for run in para.runs:
set_run_font(run, size=11)
doc.add_paragraph()
def build():
contract_output, _ = output_paths()
c = COMPANY
doc = Document()
section = doc.sections[0]
section.top_margin = Cm(2.54)
section.bottom_margin = Cm(2.54)
section.left_margin = Cm(3.17)
section.right_margin = Cm(3.17)
add_heading_text(doc, "多方分账业务合作协议", level=1)
add_para(doc, "合同编号:XGXJ-FS-________", align=WD_ALIGN_PARAGRAPH.LEFT, space_after=4)
add_para(doc, f"签订地点:{c['sign_place']}", align=WD_ALIGN_PARAGRAPH.LEFT, space_after=4)
add_para(doc, "签订日期:________年____月____日", align=WD_ALIGN_PARAGRAPH.LEFT, space_after=12)
add_heading_text(doc, "甲方(平台/分账发起方)", level=2)
add_info_table(doc, [
("名称", c["name"]),
("统一社会信用代码", c["credit_code"]),
("法定代表人", c["legal_person"]),
("住所", c["address"]),
("联系电话", c["phone"]),
("汇付商户号", c["huifu_id"]),
])
add_heading_text(doc, "乙方(分账接收方)", level=2)
add_para(doc, "主体类型(择一填写):□ 个体工商户 □ 个人(汇付进件用户)", space_after=8)
add_info_table(doc, [
("姓名/字号", "____________"),
("身份证号码", "____________________"),
("住所/经营场所", "____________________"),
("联系电话", "____________"),
("汇付商户号", "____________"),
("合作角色", "□ 推广员 □ 区域代理(区域:____________)"),
])
add_para(
doc,
f"鉴于甲方依法经营“{c['miniprogram']}”微信小程序商城,乙方自愿成为甲方推广员和/或区域代理;"
"双方依据《中华人民共和国民法典》及相关法规,就通过汇付天下有限公司(以下简称“汇付”)"
"支付通道进行延时分账结算事宜,达成如下协议:",
first_line_indent=0.74,
space_after=10,
)
articles = [
("第一条 合作内容与范围", [
"1.1 乙方在甲方平台注册并通过甲方审核后,以推广员和/或区域代理身份开展市场拓展、客户维护及销售促成活动。乙方非甲方员工,不建立劳动关系。",
"1.2 甲方负责商品供应、定价、订单处理、发货、开票(如需)及售后服务;乙方应遵守甲方公布的《分销管理办法》《区域代理管理办法》及平台规则。",
"1.3 乙方不得擅自以甲方名义对外签约、收款或销售非甲方授权商品;不得发布虚假广告或实施误导消费者行为。",
]),
("第二条 服务费计算与结算", [
"2.1 乙方服务费自甲方与消费者之间真实、合法、有效的商品交易产生,按甲方系统在订单生成时已生效的规则计算:",
"(1)推广员:按订单商品实付金额(不含运费,下同)及乙方等级对应比例计算推广服务费;具体比例以甲方后台“分销等级”配置及商品独立规则为准。",
"(2)区域代理:按订单收货地址所在行政区域及乙方代理层级,以实付金额为基数按约定比例或固定金额计算区域服务费;具体以甲方后台“区域公司等级”配置为准。",
"2.2 结算时点:消费者确认收货或订单达到“已完成”状态后,甲方系统触发分账。此前服务费处于待结算状态,不视为已到期应付。",
f"2.3 分账方式:甲方通过汇付延时分账功能,将乙方应得服务费划转至乙方汇付商户号(huifu_id)。乙方应配合完成汇付进件、实名认证、银行卡绑定及与甲方主商户({c['huifu_id']})的分账关系建立。",
"2.4 上限说明:单笔订单向全部分账接收方(含各级推广员、区域代理)划转总额不超过该笔订单实付金额的40%。若规则计算结果超过上限,按甲方系统裁切规则执行,乙方无异议。",
"2.5 退款扣减:订单发生退款、退货或撤销的,对应推广服务费、区域服务费予以扣减或追回;已分账的,乙方应在收到甲方通知后配合退回或同意从后续结算中抵扣。",
"2.6 甲方不向乙方承诺固定收入或最低收益。乙方因推广活动产生的通讯、交通、税费(除汇付及法定代扣代缴外)等成本由乙方自行承担。",
]),
("第三条 汇付分账授权", [
f"3.1 乙方知悉并同意:甲方作为汇付主商户(商户号:{c['huifu_id']}),在符合本协议及平台规则的前提下,通过汇付接口将属于乙方的服务费直接分账至乙方汇付账户,该行为已获乙方授权,视为甲方已向乙方履行付款义务。",
"3.2 乙方汇付账户提现、结算周期及手续费,按汇付公示及乙方进件协议执行,与甲方无关。",
"3.3 乙方应确保进件信息、结算银行卡真实有效;因乙方账户异常导致分账失败的,甲方有权暂缓支付并在乙方更正后重新发起,不构成违约。",
]),
("第四条 双方权利义务", [
"4.1 甲方权利义务",
"(1)按本协议及平台规则计算并发起分账;",
"(2)向乙方提供必要的后台查询、业绩统计;",
"(3)对乙方违规行为有权警告、暂停分账、取消资格;",
"(4)依法履行平台经营义务及消费者保护责任。",
"4.2 乙方权利义务",
"(1)合法合规开展推广,维护甲方品牌形象;",
"(2)对获知的消费者信息、价格政策、商业数据保密;",
"(3)不得恶意刷单、虚假交易、套取分账;",
"(4)配合甲方及汇付、监管部门的合规核查,提供真实资料。",
]),
("第五条 知识产权与宣传规范", [
f"5.1 “{c['miniprogram']}”商标、Logo、商品图片、文案等知识产权归甲方或权利人所有。乙方仅在推广范围内非独占使用,不得申请注册相同或近似标识。",
"5.2 乙方对外宣传内容须与甲方官方信息一致;未经书面许可,不得使用“官方独家”“保底收益”等表述。",
]),
("第六条 保密条款", [
"6.1 一方对另一方的商业信息、技术信息、客户名单、分账规则细节等负有保密义务,未经书面同意不得向第三方披露,法律法规或监管机构要求除外。",
"6.2 本条款在协议终止后仍有效,期限为三年。",
]),
("第七条 协议期限与终止", [
"7.1 本协议自双方签字/盖章之日起生效,有效期一年;期满前30日未书面提出终止的,自动续期一年,续期次数不限。",
"7.2 出现下列情形之一,守约方可单方解除协议:",
"(1)一方严重违约,经书面催告后7日内未纠正;",
"(2)乙方存在虚假交易、洗钱、传销、销售假冒伪劣商品等违法行为;",
"(3)乙方汇付账户被冻结、注销且30日内无法恢复;",
"(4)法律法规或监管要求必须终止。",
"7.3 协议终止后,对已发生且符合结算条件的交易,甲方仍应按本协议完成分账;未结算的合法收益不受影响。终止不影响违约责任及保密义务。",
]),
("第八条 违约责任", [
"8.1 乙方违反本协议给甲方造成损失的,应赔偿甲方全部直接损失及合理维权费用。",
"8.2 因乙方虚假交易、违规宣传导致甲方被投诉、处罚的,乙方承担全部责任及费用。",
"8.3 甲方无正当理由拖延符合结算条件的分账超过15个工作日的,可按中国人民银行同期贷款市场报价利率(LPR)向乙方支付迟延部分利息。",
]),
("第九条 不可抗力", [
"因地震、洪水、战争、政府行为、支付通道系统故障、网络攻击等不可抗力导致不能履行义务的,受影响方应及时通知对方并提供证明,相应顺延履行期限;持续超过60日的,任何一方可解除协议。",
]),
("第十条 争议解决", [
"因本协议引起的争议,双方应协商解决;协商不成的,提交甲方住所地有管辖权的人民法院诉讼解决。",
]),
("第十一条 其他", [
"11.1 本协议未尽事宜,按甲方平台公示规则执行;规则与本协议冲突的,以本协议为准。",
"11.2 本协议一式两份,甲乙双方各执一份,具有同等法律效力。电子签章与原件具有同等效力(如适用)。",
"11.3 附件为本协议组成部分,与正文具有同等效力:",
"附件一:乙方身份证复印件/营业执照副本",
"附件二:汇付进件及分账关系确认截图",
"附件三:甲方当期分销/区域代理等级及比例说明(后台导出)",
]),
]
for title, items in articles:
add_heading_text(doc, title, level=3)
for item in items:
add_para(doc, item, first_line_indent=0.74, space_after=4)
doc.add_page_break()
add_heading_text(doc, "签署页", level=2)
add_para(doc, f"甲方(盖章):{c['name']}", space_after=8)
add_para(doc, "法定代表人/授权代表(签字):________________", space_after=8)
add_para(doc, "日期:________年____月____日", space_after=24)
add_para(doc, "乙方(签字/捺印):________________", space_after=8)
add_para(doc, "(个体工商户须加盖字号公章)", space_after=8)
add_para(doc, "日期:________年____月____日", space_after=24)
doc.add_page_break()
add_heading_text(doc, "附件四:分账授权确认书", level=2)
add_para(
doc,
f"本人/本单位____________(汇付商户号:____________),"
f"系{c['name']}(汇付主商户号:{c['huifu_id']})之推广员/区域代理。",
first_line_indent=0.74,
space_after=8,
)
add_para(
doc,
f"现确认:授权甲方在“{c['miniprogram']}”商城真实交易项下,依据双方签署的《多方分账业务合作协议》"
"及平台有效规则,通过汇付延时分账接口将本人/本单位应得推广服务费/区域服务费直接分账至上述汇付商户号。"
"本人/本单位已开通汇付收单及结算功能,结算银行卡为本人/本单位实名账户。",
first_line_indent=0.74,
space_after=8,
)
add_para(
doc,
"本授权自签署之日起生效,至双方协议终止且待结算款项全部结清之日止。",
first_line_indent=0.74,
space_after=16,
)
add_para(doc, "授权人(签字/盖章):________________ 日期:________", space_after=8)
doc.save(str(contract_output))
print(f"已生成: {contract_output}")
def build_apply_guide():
_, apply_output = output_paths()
c = COMPANY
doc = Document()
section = doc.sections[0]
section.top_margin = Cm(2.54)
section.bottom_margin = Cm(2.54)
section.left_margin = Cm(3.17)
section.right_margin = Cm(3.17)
add_heading_text(doc, "汇付多方分账 40% 申请填写说明", level=1)
add_para(
doc,
f"商户:{c['name']} | 汇付商户号:{c['huifu_id']} | 小程序:{c['miniprogram']}",
align=WD_ALIGN_PARAGRAPH.CENTER,
space_after=12,
)
add_heading_text(doc, "一、表单字段填写", level=2)
table = doc.add_table(rows=6, cols=3)
table.style = "Table Grid"
headers = ["字段", "填写值", "说明"]
rows = [
("分账规则来源", "接口动态规则", "与商城系统一致,支付成功后由接口 delaytrans/confirm 传入 acct_split_bunch"),
("申请分账最大比例", "40%", "见下文三段说明中的比例测算"),
("分账手续费率", "0.05%", "与进件结算配置一致"),
("分账手续费固定金额", "0.5元", "按汇付控台要求填写"),
("分账模式", "线上/其他", "线上小程序零售"),
]
for j, h in enumerate(headers):
table.rows[0].cells[j].text = h
for run in table.rows[0].cells[j].paragraphs[0].runs:
set_run_font(run, size=11, bold=True)
for i, row in enumerate(rows, start=1):
for j, val in enumerate(row):
table.rows[i].cells[j].text = val
for run in table.rows[i].cells[j].paragraphs[0].runs:
set_run_font(run, size=11)
doc.add_paragraph()
sections = [
("二、业务模式说明(复制到汇付表单)", (
f"我司为{c['name']}(以下简称“平台”),统一社会信用代码{c['credit_code']},"
"依法持有有效营业执照,主营酒类商品零售。"
f"平台运营微信小程序“{c['miniprogram']}”,向终端消费者在线销售自有及授权经销的酒类商品,"
"负责商品展示、订单管理、收款、发货及售后处理。\n\n"
"平台采用“自营零售 + 推广分销 + 区域代理”模式开展经营,参与主体及权利义务如下:\n\n"
"(1)平台(收款商户):提供商品货源、定价、仓储发货、客服及退换货服务;承担商品质量、物流及消费者权益保障责任;"
f"通过汇付斗拱收单(主商户号:{c['huifu_id']}),并按订单结算规则向分账接收方支付推广服务费、区域代理服务费。\n\n"
"(2)推广员(分账接收方):经平台审核后成为分销商,通过分享商品链接、发展客户促成交易;"
"按平台《分销管理办法》及对应等级比例获得推广服务费;不得擅自变更价格、不得销售非平台授权商品。\n\n"
"(3)区域代理(分账接收方):经平台审核并绑定省/市/区县服务区域,按订单收货地址匹配;"
"负责区域内市场维护、客户咨询对接;按平台《区域代理管理办法》获得区域服务费;同一区域、同一层级仅设一家正式代理。\n\n"
"(4)消费者:在小程序下单支付,由平台统一发货,享有法定及平台承诺的售后服务。\n\n"
"分账金额依据订单实付金额及后台已生效的分销/区域规则计算,在消费者确认收货后执行延时分账,"
"单笔订单分账总额不超过订单实付金额的40%。"
)),
("三、资金流向说明(复制到汇付表单)", (
"本业务资金全程通过汇付斗拱支付通道闭环流转,不涉及平台外私人账户代收代付。\n\n"
f"(1)资金流入:消费者在“{c['miniprogram']}”微信小程序选购商品,通过微信支付完成付款,"
f"资金进入平台汇付商户号(主商户号:{c['huifu_id']})账户,交易类型为延时分账(delay_acct_flag=Y),"
"支付成功后资金暂存于汇付待确认分账余额。\n\n"
"(2)分账划出:订单达到分账条件(一般为确认收货或订单完成)后,平台系统调用汇付“交易确认/分账”接口,"
"按订单实时计算结果向各分账接收方汇付子商户号(huifu_id)划转对应金额,主要包括:"
"①推广员推广服务费;②区域代理区域服务费。分账指令由系统接口动态生成,与控台静态规则无关。\n\n"
"(3)平台留存:分账完成后,订单实付金额扣除支付手续费及已分出金额后的余额,"
f"留存在平台主商户({c['huifu_id']})汇付账户,作为货款及平台服务收入。\n\n"
"(4)资金流出:各分账接收方通过其汇付子商户账户,按汇付结算规则(T+1/D+1)"
"提现至其本人实名绑定的银行账户;平台主商户按同样规则将留存资金结算至公司对公账户。\n\n"
"(5)退款处理:发生退款时,按汇付及微信平台规则原路退回消费者;"
"已分账部分按平台制度及接口能力做回退或线下追偿处理,确保资金账实相符。\n\n"
"全部账户均为汇付体系内商户号或银行账户,可逐笔追溯、对账。"
)),
("四、功能开通用途说明(复制到汇付表单)", (
f"我司({c['name']},汇付商户号:{c['huifu_id']})申请开通汇付延时分账功能并将最大分账比例调整至40%,用途如下:\n\n"
f"(1)业务场景:{c['miniprogram']}商城存在推广分销(一至三级)及省/市/区县区域代理两类合作方,"
"单笔订单可能同时产生推广服务费与区域服务费,需在消费者确认收货后自动、准确结算至各合作方汇付子商户,"
"避免人工转账效率低、差错率高及合规风险。\n\n"
"(2)使用方式:支付环节开启延时分账;确认收货后,由商城后台系统调用汇付接口,"
"依据订单绑定的推广关系、收货地址及商品分账规则,动态计算各接收方金额并发起分账。"
"分账接收方须事先完成汇付个人/商户进件并与主商户建立分账关系。\n\n"
"(3)分账对象类型:已签约的注册推广员、已审核通过的区域代理,"
"均为与平台签署《多方分账业务合作协议》的独立民事主体。\n\n"
"(4)申请40%的原因:在三级分销叠加及区域代理“独占/级差”配置下,"
"单笔订单理论分账比例峰值可能接近35%—38%;申请40%作为系统上限,用于覆盖规则调整余量。"
"实际运行中,单笔订单平均分账比例约15%—25%,平台主商户留存比例通常不低于60%。\n\n"
"(5)合规承诺:分账基于真实交易及已签署协议,不用于洗钱、套现、资金池归集等违规用途;"
"分账材料与业务实际一致,接受汇付及监管核查。"
)),
]
for title, body in sections:
add_heading_text(doc, title, level=2)
for para in body.split("\n\n"):
add_para(doc, para, first_line_indent=0.74, space_after=6)
add_heading_text(doc, "五、附件上传建议", level=2)
for item in [
f"1. 《多方分账业务合作协议》盖章扫描件(至少 1—2 份已签约样本,甲方:{c['name']});",
"2. 平台营业执照副本;",
f"3. 小程序“{c['miniprogram']}”首页及订单流程截图;",
"4. 分销/区域代理管理制度或后台规则截图。",
]:
add_para(doc, item, space_after=4)
add_heading_text(doc, "六、提交前核对", level=2)
for item in [
"□ 控台 rule_origin=01(接口发起),与商城配置一致",
f"□ 主商户 {c['huifu_id']} 已开通延时分账",
"□ 表单比例 40% ≥ 商城 split_max_rate 配置",
f"□ 三份说明中公司名称、信用代码、商户号与营业执照及汇付控台一致",
"□ 已备至少一份与分账接收方签署的盖章协议",
]:
add_para(doc, item, space_after=4)
doc.save(str(apply_output))
print(f"已生成: {apply_output}")
if __name__ == "__main__":
build()
build_apply_guide()