必须使用已备案的企业主体营业执照开通微信支付jsapi,配置商户号、appid、apiv3密钥及证书;自建flask中转服务对接dify webhook,调用微信统一下单并处理支付回调,更新dify用户状态实现付费对话解锁。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要让Dify聊天助手在微信里提供付费对话服务,必须绕过微信官方不开放支付接口给个人/非认证公众号的限制,转而通过微信支付商户平台生成预支付订单,再由用户在微信内完成支付确认,最后将支付成功状态回传给Dify触发对话权限解锁。
准备微信支付商户资质与API密钥
登录微信支付商户平台(pay.weixin.qq.com),完成企业主体认证并开通JSAPI支付能力。未认证个体户无法调用JSAPI,【必须使用已备案的企业主体营业执照】。
进入「账户中心 → API安全」,设置APIv3密钥(32位字母数字组合),并下载平台证书(apiclient_cert.p12)——该证书后续需部署到Dify后端服务所在服务器。
记录下商户号(mch_id)、APPID(公众号或小程序的AppID)、APIv3密钥这三项,缺一不可。
在Dify中配置支付回调与用户状态管理
打开Dify控制台,进入「Settings → API Keys」,创建一个具备读写权限的API密钥,用于支付服务端调用Dify的用户元数据更新接口。
在Dify应用的「Prompt编排」中,为对话流程添加条件分支:当用户发送“/pay”或“我要开通会员”时,跳转至支付引导节点,该节点返回结构化消息包含「支付按钮URL」和「订单描述」。
注意:Dify原生不支持直接发起微信支付,必须由你自建一个中间服务接收Dify的webhook事件,再调用微信统一下单API。这个中间服务需能解析Dify的chat-messages响应中的user字段,并将其映射为微信OpenID。
部署支付中转服务并对接Dify Webhook
第一步:在你的服务器上新建Python Flask服务,安装weixin-python SDK和requests库。
第二步:配置Dify应用的「Webhook」地址为你Flask服务的/public/callback路径,事件类型勾选message_received和message_success。
第三步:在Flask中实现统一下单逻辑:收到Dify发来的用户ID后,调用微信API v3 /v3/pay/transactions/jsapi 接口,传入mchid、appid、description、notify_url(指向同一Flask的/notify路径)、payer.openid等参数。
第四步:微信支付成功后,会向notify_url推送加密JSON,Flask需用APIv3密钥解密,并校验签名。验证通过后,调用Dify的/user/update接口,将该用户status字段设为“paid”,有效期写入expires_at时间戳。
第五步:在Dify工作流中加入「检查用户支付状态」步骤,每次对话前查询/user/{user_id},若status≠“paid”或expires_at已过期,则返回提示语“请先支付开通服务”,并附带新的支付链接。











