Skip to Content

微信支付(Web 端)

Zion Web 端仅支持微信 JSAPI 支付,而且页面必须在微信客户端内打开。该渠道支持单次支付和退款。开始前,请先阅读支付功能概述

开始前

  • 准备完成企业认证的微信服务号。
  • 在服务号中配置网页授权域名。使用项目的 Web 发布域名;如果项目使用自定义域名,则填写自定义域名。

在微信公众号后台配置网页授权域名

  • 按微信公众号后台提示下载域名校验文件,并将校验文件上传到 Zion 项目根目录。

在微信公众号后台下载网页授权域名校验文件

  • 微信支付商户平台注册商户号并开通 JSAPI 支付。
  • 配置支付授权目录。填写项目的 Web 发布地址;使用自定义域名时填写对应的自定义域名。

在微信支付商户平台配置支付授权目录

  • 将商户号与服务号 AppID 关联。

在微信支付商户平台关联服务号 AppID

  • 获取服务号 AppID、商户号和 API v2 密钥。

在微信支付商户平台获取商户号和 API v2 密钥

配置微信授权登录

Web JSAPI 支付需要获取当前微信用户的身份,因此必须同时配置微信授权登录:

  1. 在微信公众号后台的 设置与开发 → 基本配置 中获取服务号 AppID 和 AppSecret。
  2. 在 Zion 打开 行为 → 登录,进入微信登录配置。
  3. 配置 微信授权登录,填写服务号的 AppID 和 AppSecret。
  4. 确认该服务号 AppID 已与支付使用的商户号关联。
  5. 发布登录和支付配置,再从微信客户端内打开 Web 页面测试。
⚠️

微信授权登录使用的是服务号 AppID 和 AppSecret。微信扫码登录使用的是微信开放平台网页应用的 AppID 和 AppSecret,两者不能混用。Web JSAPI 支付依赖前者。

配置微信支付

激活微信支付

打开 行为 → 支付 → 微信支付(Web),点击 激活。如果这是项目中第一个支付渠道,请选择订单表。

填写商户信息

配置项必填说明
AppID已与商户号关联的服务号 AppID
商户号微信支付商户号
商户密钥商户平台设置的 API v2 密钥
apiclient_cert.p12 文件仅退款需要微信支付 API 证书

保存配置后,从 关联行为流 可以打开系统生成的单次支付处理和退款处理行为流。

发布并测试

发布支付配置、系统表、行为流和页面修改。测试时必须从微信客户端打开已经发布的 Web 地址;普通浏览器无法完成 JSAPI 支付。

单次支付

创建订单并添加行为

先在已绑定的订单表中创建订单,再从组件触发器的 支付 菜单添加 微信支付 → 单次支付

参数类型必填说明
订单表 id长整数已绑定订单表中的订单记录 id
金额小数单位为元,不能小于 0.01,小数点后最多两位
商品介绍文本本次交易的商品描述

支付行为的 成功时 用于处理前端支付交互结果,不能配置修改数据的行为。最终支付结果必须由支付回调确认。

处理支付回调

系统生成的单次支付处理行为流会更新支付表,并提供:

结果类型说明
orderId长整数本次支付关联的订单 id
paymentFound布尔值是否找到对应的支付记录
paymentStatus文本SUCCESSFULFAILED
alreadyProcessed布尔值当前状态是否已经处理过

仅当 paymentFoundtruealreadyProcessedfalse 时,根据 paymentStatus 执行业务逻辑。支付成功前应核对订单和支付记录中的金额,再更新订单或发放权益。

显示最终结果

前端查询订单表或支付表显示最终结果。需要及时更新时,可以使用实时数据源或重新查询页面数据。

退款

配置权限并添加行为

退款行为默认不向普通用户开放。在 设置 → 权限 → 支付 中,只为可信任的管理员角色开启微信退款权限。

支付 菜单添加 微信支付 → 退款

参数类型必填说明
支付表 id长整数需要退款的支付记录 id,不是订单 id
退款金额小数单位为元;多次退款的总额不能超过原支付金额

处理退款回调

系统生成的退款处理行为流会更新退款表,并提供:

结果类型说明
orderId长整数退款对应的订单 id
refundFound布尔值是否找到对应的退款记录
paymentStatus文本REFUNDEDFAILED
alreadyProcessed布尔值当前退款状态是否已处理过

仅在 refundFoundtruealreadyProcessedfalse 时处理对应结果。

常见问题

  1. 微信外部浏览器无法支付:Web JSAPI 支付只能在微信客户端内使用。
  2. 提示 JSAPI缺少参数 total_fee:确认金额有值、不小于 0.01,且小数点后不超过两位;同时检查商户号状态。
  3. 提示 JSAPI缺少参数 appId:确认服务号 AppID、微信授权登录配置和商户号关联关系一致。
  4. 退款失败:检查当前角色的退款权限,并确认已经上传 apiclient_cert.p12
  5. 前端显示成功但订单未更新:检查单次支付处理行为流是否已发布,以及支付成功分支中是否配置了订单更新逻辑。
Last updated on