Install
openclaw skills install @huanglin88/cnyepay# 粤收付对接专家 SKILL 说明 ## 1. 技能概述 - 技能名称:粤收付多语言接口对接专家 - 技能定位:解决粤收付(open.cnyepay.com)接口对接全流程问题,覆盖 PHP/Java/Python/Go/Node.js 等主流语言,提供咨询、代码生成、问题排查、合规校验等能力 - 适用人群:开发者、技术运维、商户对接人员 - 核心数据源:粤收付官方接口文档 + 开源 PHP 对接工具(yuepay-laravel)最佳实践
openclaw skills install @huanglin88/cnyepay| 能力模块 | 能力描述 | 覆盖场景 |
|---|---|---|
| 接口知识库咨询 | 解答粤收付接口规则(签名/验签、参数、错误码、回调)、对接流程、环境配置等 | 「统一下单接口的必选参数有哪些?」「粤收付沙箱环境怎么配置?」「签名失败的常见原因?」 |
| 多语言代码生成 | 按用户需求生成指定语言的粤收付对接代码(下单/查询/退款/回调验签) | 「生成Python版粤收付统一下单代码」「Go版回调验签怎么写?」「Java版退款接口示例」 |
| 问题排查 | 分析对接中的报错(签名错误、接口返回异常、网络问题)并给出解决方案 | 「接口返回错误码4001是什么意思?」「PHP版签名生成后验签失败怎么排查?」 |
| 合规校验 | 校验对接代码/参数是否符合粤收付官方规范(签名逻辑、参数格式、回调处理) | 「帮我检查这段Python签名代码是否合规」「回调参数没验签有什么风险?」 |
| 最佳实践输出 | 输出各语言对接的最佳实践(安全规范、性能优化、异常处理) | 「粤收付对接如何防止密钥泄露?」「高并发下订单查询接口怎么优化?」 |
| 语言 | 核心依赖 | 用途 |
|---|---|---|
| PHP | curl、openssl扩展 | HTTP请求、RSA2签名/验签 |
| Java | okhttp3、commons-codec | HTTP请求、SHA256withRSA签名 |
| Python | requests、pycryptodome | HTTP请求、RSA2签名/验签 |
| Go | net/http、crypto/rsa | HTTP请求、RSA2签名/验签 |
| Node.js | axios、crypto | HTTP请求、RSA2签名/验签 |
| 错误码 | 含义 | 解决方案 |
|---|---|---|
| 4001 | 签名错误 | 检查参数排序/空值过滤/私钥格式(PKCS#8)/Base64编码 |
| 4002 | 商户号不存在 | 核对商户号/切换环境(沙箱≠生产) |
| 4003 | 订单号重复 | 确保out_trade_no唯一 |
| 5001 | 接口服务异常 | 重试/联系粤收付技术支持 |
| 分类 | wayCode | 说明 / channelExtra 要求 |
|---|---|---|
| 收银台 | WEB_CASHIER | Web收银台,跳转粤收付收银台页面 |
| 聚合 | QR_CASHIER | 聚合扫码(用户扫商家),可传 entryPageType=h5/lite |
| 聚合 | AUTO_BAR | 聚合条码(商家扫用户),需 authCode |
| 聚合 | AUTO_POS | 聚合POS |
| 支付宝 | ALI_BAR | 支付宝条码,需 authCode |
| 支付宝 | ALI_JSAPI | 支付宝生活号,需 buyerUserId |
| 支付宝 | ALI_LITE | 支付宝小程序,需 buyerUserId |
| 支付宝 | ALI_APP / ALI_WAP / ALI_PC / ALI_QR | App内/网页/扫码,ALI_WAP/ALI_PC可传 payDataType |
| 微信 | WX_BAR | 微信条码,需 authCode |
| 微信 | WX_JSAPI | 微信公众号,需 openid(自有公众号另需 subAppId) |
| 微信 | WX_LITE | 微信小程序,需 openid(自有小程序另需 subAppId) |
| 微信 | WX_APP / WX_H5 / WX_NATIVE | App内/H5/扫码,WX_NATIVE可传 payDataType |
| 云闪付 | YSF_BAR | 云闪付条码,需 authCode |
| 云闪付 | YSF_JSAPI | 云闪付JS(小程序/H5拉起) |
| 数币 | DCEP_BAR / DCEP_QR | 数字人民币条码/扫码 |
| 银行 | BANK_QUICK / BANK_B2B / BANK_B2C | 银行快捷/企业网银等 |
注意:实际可用支付方式以商户在粤收付后台开通的支付通道为准;wayCode 必须与已开通渠道匹配,否则下单报错。
流程:申请开通分账 → 后台建分组 → 绑定接收方 → 下单(divisionMode) → 支付成功后发起分账 → 查询 → 提现。
| 接口 | 路径 | 要点 |
|---|---|---|
| 绑定分账用户 | POST /api/division/receiver/bind | 必填 ifCode(wxpay/alipay)、receiverAlias、receiverGroupId、accType(0个人/1商户)、accNo(微信openid/支付宝userId)、relationType(见枚举)、divisionProfit(默认比例如0.3);返回 receiverId 供分账用;微信 accName 选填、支付宝必填 |
| 发起订单分账 | POST /api/division/exec | payOrderId 与 mchOrderNo 二选一;useSysAutoDivisionReceivers(0/1);receivers 为分账接收者 JSON 数组字符串(含 receiverId 等);返回 state:1成功/2失败/3处理中/4已受理 + batchOrderId 分账批次号 |
| 订单分账查询 | POST /api/division/query | 必填 batchOrderId;可传 payOrderId/mchOrderNo、receiverId 过滤;返回 records(JSON数组字符串) |
| 查询分账用户可用余额 | POST /api/division/receiver/channelBalanceQuery | 必填 receiverId;返回 balanceAmount(分) |
| 分账用户余额提现 | POST /api/division/receiver/channelBalanceCashout | 必填 receiverId、cashoutAmount(分);state:1成功/0失败;建议先查余额再提现 |
流程:开通转账通道 → 确认渠道余额 → 发起转账 → 回调+查询确认终态 → 对账;商户余额提现走提现接口。
| 接口 | 路径 | 要点 |
|---|---|---|
| 发起转账 | POST /api/transferOrder | 必填 mchOrderNo(≤64,幂等键)、ifCode(wxpay/alipay/aliaqfpay)、entryType(WX_CASH/ALIPAY_CASH/BANK_CARD/BANK_CARD_CORPORATE/DG_BALANCE)、amount(分)、currency=CNY、accountNo(微信openid/支付宝登录账号);选填 accountName(填则上游核名)、bankName、clientIp、transferDesc、notifyUrl、channelExtra、extParam(回调原样返回);返回 transferId+state |
| 查询转账订单 | POST /api/transfer/query | transferId 与 mchOrderNo 二选一;返回 state、amount、channelOrderNo、errCode/errMsg、createdAt/successTime(13位) 等全字段 |
| 查询转账可用余额 | POST /api/transfer/balance/query | 必填 ifCode(如 aliaqfpay);返回 balanceAmount(分) |
| 手动提现 | POST /api/cashout/order/create | 必填 mchOrderNo(≤30)、amount(分)、ifCode(如 dgpay)、notifyUrl、remark;返回 cashoutOrderId+state |
| 查询提现详情 | POST /api/cashout/order/query | cashoutOrderId 与 mchOrderNo 二选一;返回 state、amount、balance(提现前余额)、bankName/accountNo/accountName(成功时返回)、successTime |
流程:校验原单可退 → 发起退款(mchRefundNo 幂等) → 退款回调+查询双确认终态 → 原支付单变"已退款"。
| 接口 | 路径 | 要点 |
|---|---|---|
| 统一退款 | POST /api/refund/refundOrder | 原单 payOrderId 与 mchOrderNo 二选一;必填 mchRefundNo(≤64,幂等键)、refundAmount(分)、currency=CNY、refundReason;选填 notifyUrl(退款回调)、clientIp、channelExtra、extParam(回调原样返回);返回 refundOrderId+state |
| 查询退款订单 | POST /api/refund/query | refundOrderId 与 mchRefundNo 二选一;返回 payOrderId、payAmount、refundAmount、state、channelOrderNo、successTime(13位) |
| 版本 | 更新时间 | 更新内容 |
|---|---|---|
| v1.0 | 2024-XX-XX | 初始版本,覆盖核心接口对接 |
| v1.1 | 2026-08-13 | 修正签名算法为 RSA2(SHA256withRSA+Base64,末尾不加密钥);补充金额/时间/货币规范;依赖表更新(openssl/pycryptodome/crypto.rsa) |
| v1.2 | 2026-08-13 | 新增 4.4 支付方式枚举(24 种 wayCode 全量 + channelExtra 要求) |
| v1.3 | 2026-08-13 | 新增 4.5 分账接口(绑定/发起/查询/余额/提现 5 接口 + divisionMode + relationType 枚举) |
| v1.4 | 2026-08-13 | 新增 4.6 转账/提现接口(发起转账/查询转账/余额查询/手动提现/提现详情 5 接口 + state 状态机 + 幂等/双确认要点) |
| v1.5 | 2026-08-13 | 新增 4.7 退款/回调接口(统一退款/查询退款 + 退款状态机 + 支付回调 Webhook:form-urlencoded 格式、14 必填字段、state 含5已退款、重试 0/30/60/90/120/150s) |
| v1.6 | 2026-08-13 | 新增 4.8 费率/汇率说明(官方接口无费率字段、境内全 CNY 无汇率、数币 1:1、市场参考区间 0.25%~1%) |