文件
xionggeshop/plan/chat-backup/subagents/a5138654-969e-46af-8283-1236021ac35c/291aed90-8b94-4b41-9939-a34ddb92b39a.jsonl

16 行
26 KiB
JSON

{"role":"user","message":{"content":[{"type":"text","text":"<timestamp>Tuesday, Sep 8, 2026, 5:55 PM (UTC+8)</timestamp>\n<user_query>\nExplore the codebase at f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com for existing payment implementations. Search for:\n1. WeChat pay / wxpay / 微信支付 related code\n2. Huifu / 汇付 related code\n3. Payment controllers, services, configs in addons/shopro\n4. Order payment flow\n5. Any profit sharing / 分账 / commission split logic\n\nReturn: key file paths, current payment architecture, how orders are paid today, any existing third-party payment gateway patterns, and relevant config keys.\n</user_query>"}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"Searching the codebase for WeChat Pay, Huifu, order payment flow, and profit-sharing logic.\n\n[REDACTED]"},{"type":"tool_use","name":"UpdateCurrentStep","input":{"current_step":"Exploring payment implementations","final_summary":""}},{"type":"tool_use","name":"Grep","input":{"pattern":"wxpay|微信支付|WeChatPay|wechat.*pay|WxPay","path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com","-i":true,"output_mode":"files_with_matches","head_limit":80}},{"type":"tool_use","name":"Grep","input":{"pattern":"汇付|huifu|Huifu|HF_","path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com","-i":true,"output_mode":"files_with_matches","head_limit":80}},{"type":"tool_use","name":"Grep","input":{"pattern":"分账|profit.?shar|commission.?split|profitsharing","path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com","-i":true,"output_mode":"files_with_matches","head_limit":80}},{"type":"tool_use","name":"Glob","input":{"glob_pattern":"**/addons/shopro/**/*pay*","target_directory":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com"}},{"type":"tool_use","name":"Glob","input":{"glob_pattern":"**/addons/shopro/**/*Payment*","target_directory":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com"}},{"type":"tool_use","name":"Grep","input":{"pattern":"payment|PayService|pay_type|pay_method","path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro","-i":true,"output_mode":"files_with_matches","head_limit":80}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\PayService.php"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\controller\\Pay.php"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\split\\ProfitSharingService.php"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\epay\\config.php"}},{"type":"tool_use","name":"Grep","input":{"pattern":"huifu|汇付|HF_|dg\\.|dougong|斗拱","-i":true,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com","glob":"*.{php,js,json,sql,html}","head_limit":50}},{"type":"tool_use","name":"Grep","input":{"pattern":"pay_type|payment|PayService|epay|wechat|alipay|balance","-i":true,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro","glob":"*.{php,sql}","head_limit":100}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\split\\SplitExecutor.php"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\split\\SplitCalculator.php"}},{"type":"tool_use","name":"Glob","input":{"glob_pattern":"**/addons/shopro/library/split/**","target_directory":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com"}},{"type":"tool_use","name":"Grep","input":{"pattern":"paymentProcess|payed|payed|OrderPayed","glob":"*.php","head_limit":40,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\hooks.php"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\upgrade_payment_split.sql"}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\split\\Config.php"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\listener\\split\\SplitHook.php"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\traits\\model\\order\\OrderOper.php","offset":770,"limit":80}},{"type":"tool_use","name":"Grep","input":{"glob":"*.{php,sql,js,html}","head_limit":60,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro","pattern":"'name'\\s*=>\\s*'(wechat|alipay|wechat_app|wallet|payment|pay)"}},{"type":"tool_use","name":"Glob","input":{"glob_pattern":"**/addons/epay/**/*.php","target_directory":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com"}},{"type":"tool_use","name":"Read","input":{"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\epay\\library\\Service.php","limit":80}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Grep","input":{"glob":"install.sql","head_limit":80,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro","pattern":"INSERT.*shopro_config|'wechat'|'alipay'|payment"}},{"type":"tool_use","name":"Grep","input":{"glob":"*.{php,js,html}","head_limit":40,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com","pattern":"checkEnv\\('yansongda'\\)|shopro_config.*wechat"}},{"type":"tool_use","name":"Read","input":{"limit":100,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\model\\UserWalletApply.php"}},{"type":"tool_use","name":"Glob","input":{"glob_pattern":"**/application/admin/controller/shopro/split/**","target_directory":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com"}},{"type":"tool_use","name":"Read","input":{"limit":80,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\listener\\order\\Payed.php"}},{"type":"tool_use","name":"Read","input":{"limit":100,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\commission\\Commission.php"}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Read","input":{"limit":120,"offset":3855,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\install.sql"}},{"type":"tool_use","name":"Grep","input":{"glob":"*.{php,js,html}","head_limit":40,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\application\\admin","pattern":"wechat|alipay|payment|pay_type"}},{"type":"tool_use","name":"Read","input":{"limit":80,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\command\\SplitRetry.php"}},{"type":"tool_use","name":"Grep","input":{"glob":"*.php","head_limit":30,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro","pattern":"transfer\\(|PayService.*transfer|企业付款|提现"}},{"type":"tool_use","name":"Read","input":{"limit":80,"offset":200,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\model\\UserWalletApply.php"}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Grep","input":{"glob":"install.sql","head_limit":30,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro","pattern":"'wechat'|'alipay'|wechat_app"}},{"type":"tool_use","name":"Read","input":{"limit":120,"offset":880,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\application\\admin\\view\\shopro\\config\\platform.html"}},{"type":"tool_use","name":"Grep","input":{"glob":"*.php","head_limit":30,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\application\\admin\\controller\\shopro","pattern":"wechat|alipay|payment"}},{"type":"tool_use","name":"Read","input":{"limit":60,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\job\\OrderPayed.php"}},{"type":"tool_use","name":"Grep","input":{"glob":"*.php","head_limit":20,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\commission","pattern":"commission_event|settle|wallet"}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Grep","input":{"glob":"*.php","head_limit":25,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com","pattern":"PayService.*refund|->refund\\("}},{"type":"tool_use","name":"Read","input":{"limit":80,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\commission\\Config.php"}},{"type":"tool_use","name":"Read","input":{"limit":80,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\application\\admin\\view\\shopro\\split\\config\\index.html"}},{"type":"tool_use","name":"Glob","input":{"glob_pattern":"**/addons/epay/controller/**","target_directory":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com"}},{"type":"tool_use","name":"Grep","input":{"glob":"*.php","head_limit":20,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\regional_agent","pattern":"commission|reward|settle"}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Read","input":{"limit":80,"offset":845,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\traits\\model\\order\\OrderOper.php"}},{"type":"tool_use","name":"Read","input":{"limit":50,"offset":95,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\commission\\Config.php"}},{"type":"tool_use","name":"Grep","input":{"glob":"install.sql","head_limit":30,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro","pattern":"shopro_commission_config|commission_event"}},{"type":"tool_use","name":"Read","input":{"limit":50,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\epay\\controller\\Api.php"}},{"type":"tool_use","name":"Grep","input":{"glob":"*.php","head_limit":15,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com","pattern":"addons\\\\\\\\epay|get_addon_config\\('epay'\\)"}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Read","input":{"limit":40,"offset":5238,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\install.sql"}},{"type":"tool_use","name":"Grep","input":{"glob":"*.{php,js,html,sql}","head_limit":20,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com","pattern":"wechat_app"}},{"type":"tool_use","name":"Read","input":{"limit":60,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\split\\SplitRetryJob.php"}},{"type":"tool_use","name":"Read","input":{"limit":60,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\listener\\commission\\CommissionHook.php"}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"Grep","input":{"glob":"*.php","head_limit":15,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro","pattern":"pay_type.*score|score.*pay|payment.*score"}},{"type":"tool_use","name":"Read","input":{"limit":50,"path":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\listener\\order\\Create.php","offset":100}},{"type":"tool_use","name":"Glob","input":{"glob_pattern":"**/addons/shopro/model/split/**","target_directory":"f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com"}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"[REDACTED]"},{"type":"tool_use","name":"UpdateCurrentStep","input":{"current_step":"Compiling payment architecture report","completed_subtitle":"Mapped payment and split architecture","final_summary":"The codebase uses **Yansongda Pay** (WeChat + Alipay) via Shopro’s `PayService`, with no Huifu/汇付 integration. Orders pay through `Pay::prepay` → gateway callback → `paymentProcess`, and a newer **WeChat profit-sharing** module splits funds to promoters/regional agents at the gateway level (separate from wallet-based commission)."}}]}}
{"role":"assistant","message":{"content":[{"type":"text","text":"## Payment Architecture Overview\n\nThe project is a **FastAdmin + Shopro** e-commerce stack. All live order payments go through **Shopro’s own payment layer** (`PayService`), which wraps the **Yansongda Pay SDK** (v2/v3 bundled under `addons/epay/library/`). There is **no Huifu/汇付 integration** anywhere in source code.\n\nTwo payment-related addons coexist:\n\n| Layer | Role |\n|---|---|\n| `addons/shopro` | **Primary** — order pay, refund, withdraw, profit sharing |\n| `addons/epay` | **Standalone FastAdmin payment addon** — generic submit/notify API, not wired into Shopro order flow |\n\n---\n\n## 1. WeChat Pay / 微信支付\n\n### Key files\n\n| Path | Purpose |\n|---|---|\n| `f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\PayService.php` | Core gateway wrapper (prepay, notify, refund, transfer) |\n| `f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\controller\\Pay.php` | API: `prepay`, `notifyx`, `notifyr`, `alipay`, `walletPay` |\n| `f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\Wechat.php` | EasyWeChat wrapper (OAuth, JSSDK, mini-program QR — **not payment**) |\n| `f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\controller\\Wechat.php` | Official account server, JSSDK, mini-program code |\n| `f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\shopro\\library\\split\\ProfitSharingService.php` | WeChat profit-sharing API (分账) |\n| `f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\addons\\epay\\library\\v3\\Yansongda\\Pay\\Plugin\\Wechat\\Fund\\Profitsharing\\*` | Yansongda WeChat profit-sharing plugins (library only) |\n| `f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\vendor\\overtrue\\wechat\\src\\Payment\\ProfitSharing\\*` | EasyWeChat profit-sharing client (vendor, unused by Shopro split) |\n| `f:\\修改的项目\\贵州宥川商贸有限公司\\chufang.gynhc.com\\chufang.gynhc.com\\application\\admin\\view\\shopro\\config\\platform.html` | Admin UI for WeChat/Alipay merchant config |\n\n### WeChat payment behavior\n\n- Config loaded from `shopro_config` row **`name = 'wechat'`** (not `epay` config).\n- Platform-specific app IDs merged from `wxOfficialAccount`, `wxMiniProgram`, `H5`, `App`.\n- Supports **normal** and **service provider** (`mode: normal|service`) merchants.\n- Method mapping: `mp` / `miniapp` / `wap` / `app` per client platform.\n- When profit sharing is enabled, prepay adds `settle_info.profit_sharing = true`.\n- App WeChat pay uses separate config key **`wechat_app`**.\n\n---\n\n## 2. Huifu / 汇付\n\n**No implementation found.** Searched for `汇付`, `huifu`, `HF_`, `dougong`, `斗拱` — only false positives in vendor/cache files. There is no Huifu SDK, controller, service, or config in this codebase.\n\n---\n\n## 3. Payment Controllers, Services, Configs in `addons/shopro`\n\n### Controllers\n\n| File | Endpoints / role |\n|---|---|\n| `addons/shopro/controller/Pay.php` | Main payment API |\n| `addons/shopro/controller/Wechat.php` | WeChat social/OAuth (not pay) |\n| `addons/shopro/controller/User.php` | Mini-program / OA login (openid for pay) |\n\n### Services / libraries\n\n| File | Role |\n|---|---|\n| `addons/shopro/library/PayService.php` | Yansongda gateway abstraction |\n| `addons/shopro/library/split/ProfitSharingService.php` | WeChat 分账 API calls |\n| `addons/shopro/library/split/SplitExecutor.php` | Execute/retry/return split orders |\n| `addons/shopro/library/split/SplitCalculator.php` | Compute split amounts from commission rewards |\n| `addons/shopro/library/split/Config.php` | Split module config reader |\n| `addons/shopro/library/split/SplitRetryJob.php` | Failed split retry batch |\n| `addons/shopro/command/SplitRetry.php` | CLI: `shopro:split-retry` |\n| `addons/shopro/model/UserWalletApply.php` | Withdraw via WeChat/Alipay transfer |\n\n### Admin (split module)\n\n| File |\n|---|\n| `application/admin/controller/shopro/split/Config.php` |\n| `application/admin/controller/shopro/split/Order.php` |\n| `application/admin/controller/shopro/split/Receiver.php` |\n| `application/admin/controller/shopro/split/Rule.php` |\n| `application/admin/view/shopro/split/config/index.html` |\n\n### SQL / migrations\n\n| File |\n|---|\n| `addons/shopro/upgrade_payment_split.sql` |\n| `addons/shopro/upgrade_payment_split_menu.sql` |\n\n---\n\n## 4. How Orders Are Paid Today\n\n```mermaid\nsequenceDiagram\n participant Client\n participant PayCtrl as Pay.php\n participant PaySvc as PayService\n participant Gateway as Yansongda/WeChat/Alipay\n participant Order as OrderOper.paymentProcess\n participant Hooks as order_payed_after hooks\n participant Queue as OrderPayed job\n\n Client->>PayCtrl: POST prepay (order_sn, payment, openid)\n PayCtrl->>PaySvc: create(order_data)\n PaySvc->>Gateway: prepay params\n Gateway-->>Client: pay_data (JSAPI/wap/app)\n Client->>Gateway: user pays\n Gateway->>PayCtrl: notifyx callback\n PayCtrl->>Order: paymentProcess(order, notify)\n Order->>Hooks: commission / regional / split\n Order->>Queue: OrderPayed@payed (stock, groupon, score)\n```\n\n### Supported `payment` values in `prepay`\n\n| Type | Mechanism |\n|---|---|\n| `wechat` | Yansongda WeChat prepay → async `notifyx` |\n| `alipay` | Yansongda Alipay (H5/wap redirect via `/addons/shopro/pay/alipay`) |\n| `wallet` | Internal balance debit, immediate `paymentProcess` |\n| `group` | Balance + WeChat for remainder (`pay_type = group`) |\n| `score` | Auto on zero-amount/score orders at create time (not via prepay) |\n\n### Post-payment pipeline (`OrderOper::paymentProcess`)\n\n1. Set order status paid, save `transaction_id`, `pay_fee`, `pay_type`, `payment_json`\n2. Fire `order_payed_after` hooks (see below)\n3. Push async queue `addons/shopro/job/OrderPayed@payed` (stock, groupon, invoice, consume-score)\n\n### Refunds\n\n- `OrderOper::refund()` → `PayService::refund()` → `notifyr` (WeChat) or `notifyx` (Alipay refund close)\n- If split was done, `SplitHook::orderRefundAfter` → `SplitExecutor::returnByOrderId()` (WeChat 分账回退)\n\n### Withdrawals (not order pay)\n\n- Admin approves `UserWalletApply` → `PayService::transfer()` (WeChat enterprise transfer / Alipay direct transfer)\n\n---\n\n## 5. Profit Sharing / 分账 / Commission Split Logic\n\nThere are **two separate systems**:\n\n### A. Internal commission (钱包分佣) — default behavior\n\n| Area | Key files |\n|---|---|\n| Promoter/distributor commission | `addons/shopro/library/commission/Commission.php`, `Reward.php`, `Config.php` |\n| Hooks | `addons/shopro/listener/commission/CommissionHook.php` |\n| Regional agent commission | `addons/shopro/library/regional_agent/Commission.php`, `listener/regional_agent/RegionalAgentHook.php` |\n\nFlow on `order_payed_after`:\n1. Calculate commission orders/rewards per order item\n2. Settle rewards into **user wallet balance** (not gateway split)\n3. Default `commission_event = confirm` in DB, but hook runs reward on `payed` in `CommissionHook`\n\nConfig table: **`shopro_commission_config`** \nKey keys: `commission_event`, `commission_level`, `commission_price_type`, `refund_commission_reward`, `chain_commission_enable`, etc.\n\n### B. WeChat gateway profit sharing (微信分账) — newer module\n\nEnabled when `shopro_split_config.split_enable = 1`.\n\n| File | Role |\n|---|---|\n| `SplitCalculator.php` | Builds split items from `commission_reward` + `regional_agent_reward` |\n| `SplitExecutor.php` | Calls WeChat `profitsharing/orders` via `ProfitSharingService` |\n| `SplitHook.php` | Runs on `payed` / `confirm` / `finish` per `split_timing`; refund triggers return |\n\n**Only WeChat-paid orders** (`pay_type === 'wechat'`) are eligible.\n\nReceivers:\n- Promoters / regional agents → `PERSONAL_OPENID` (auto-created from `UserOauth`)\n- Platform → `MERCHANT_ID` from `platform_receiver_account`\n\nTables: `shopro_split_receiver`, `shopro_split_rule`, `shopro_split_order`, `shopro_split_order_receiver`, `shopro_split_config`\n\n---\n\n## 6. Third-Party Gateway Pattern\n\nThe established pattern for adding/changing gateways:\n\n1. **Config** stored as JSON in `shopro_config` (`wechat`, `alipay`, `wechat_app`)\n2. **Service class** `PayService` loads config, maps platform → SDK method, handles certs\n3. **Controller** `Pay.php` exposes REST endpoints with notify URLs like:\n - Pay: `/addons/shopro/pay/notifyx/payment/{wechat|alipay}/platform/{platform}`\n - Refund: `/addons/shopro/pay/notifyr/payment/{payment}/platform/{platform}`\n4. **SDK**: `Yansongda\\Pay\\Pay::wechat($config)->$method($order)` / `Pay::alipay(...)`\n5. **Order completion**: always funnel through `Order::paymentProcess()` — do not bypass hooks/queue\n6. **Optional gateway-level split**: hook into `PayService::create()` + post-pay `SplitExecutor`\n\nThe standalone `addons/epay` addon follows a similar Yansongda pattern but uses **`get_addon_config('epay')`** and its own notify URLs — a reference implementation, not the Shopro order path.\n\n---\n\n## 7. Relevant Config Keys\n\n### `shopro_config` (table `fa_shopro_config`)\n\n| `name` | Keys / purpose |\n|---|---|\n| `wechat` | `platform[]`, `mode`, `mch_id`, `key`, `cert_client`, `cert_key`, `sub_mch_id`, `app_id`, `miniapp_id`, `appid`, `sub_*` |\n| `wechat_app` | App-specific WeChat pay config |\n| `alipay` | `platform[]`, `mode`, `app_id`, `pid`, `private_key`, `ali_public_key`, `app_cert_public_key`, `alipay_root_cert` |\n| `withdraw` | `methods[]`, `wechat_alipay_auto`, `service_fee`, `min`, `max`, `perday_num` |\n| `wxOfficialAccount` / `wxMiniProgram` / `H5` / `App` | Platform app_id/secret for OAuth + pay appId binding |\n| `shopro` | `domain` (used for Alipay return_url) |\n\n### `shopro_split_config`\n\n| Key | Default | Meaning |\n|---|---|---|\n| `split_enable` | `0` | Master switch |\n| `split_mode` | `wechat` | `wallet` / `wechat` / `both` |\n| `split_timing` | `payed` | `payed` / `confirm` / `finish` |\n| `split_max_rate` | `30` | Max % of order to split |\n| `split_retry_max` | `5` | Retry limit |\n| `split_retry_interval` | `300` | Retry interval (seconds) |\n| `platform_receiver_account` | — | Platform merchant ID |\n| `platform_receiver_name` | `平台` | Platform receiver name |\n\n### `shopro_commission_config`\n\n| Key | Default | Meaning |\n|---|---|---|\n| `commission_event` | `confirm` | Settlement trigger (`payed`/`confirm`/`finish`) |\n| `commission_price_type` | `pay_price` | Base amount for commission |\n| `commission_level` | `2` | Distribution depth |\n| `refund_commission_reward` | `1` | Deduct commission on refund |\n\n### `addons/epay/config.php` (separate addon, not used by Shopro orders)\n\n| Key | Notes |\n|---|---|\n| `version` | `v2` or `v3` SDK version |\n| `wechat` | `mch_id`, `key`, `key_v3`, certs, `mode`, `sub_*` |\n| `alipay` | `app_id`, certs, `private_key`, `notify_url`, `return_url` |\n\n---\n\n## Summary\n\n- **Today’s order payments**: WeChat + Alipay via **Yansongda Pay** in `PayService`, plus internal **wallet**, **group** (wallet+WeChat), and **score** for zero-amount/score orders.\n- **No Huifu**: nothing to integrate against yet; any Huifu work would be net-new.\n- **Commission**: internal wallet-based distributor + regional agent systems.\n- **Gateway split (分账)**: optional WeChat profit-sharing module that reads commission/regional rewards and splits at payment gateway level — disabled by default (`split_enable = 0`).\n- **Best extension point for a new gateway** (e.g. Huifu): mirror `PayService` + `Pay.php` prepay/notify/refund pattern, then route through `paymentProcess()`.\n\n[REDACTED]"}]}}
{"type":"turn_ended","status":"success"}