Skip to Content

微信支付(小程序端)

Zion 微信小程序使用微信 JSAPI 支付,支持单次支付和退款。开始前,请先阅读支付功能概述,准备订单表并了解支付回调的处理方式。

开始前

  • 使用完成企业认证的小程序;个人小程序不能开通微信支付。
  • 微信支付商户平台注册商户号并开通 JSAPI 支付。
  • 将商户号与当前小程序的 AppID 关联。

在微信支付商户平台关联小程序 AppID

  • 获取商户号和 API v2 密钥。

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

配置微信支付

激活微信支付

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

填写商户信息

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

小程序 AppID 来自当前项目的小程序配置,无需在支付配置中重复填写。保存配置后,从 关联行为流 可以打开系统生成的单次支付处理和退款处理行为流。

发布并测试

发布支付配置、系统表、行为流和页面修改,再使用真实的小程序用户测试。商户号、AppID 或密钥不匹配时,微信支付无法拉起。

单次支付

创建订单

调用支付行为前,先在已绑定的订单表中创建订单。订单金额、商品和用户等业务数据应保存在订单表中。

添加支付行为

在按钮或其他组件的触发器中,从 支付 菜单添加 微信支付,选择 单次支付

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

支付行为的 成功时 表示前端调用已成功返回,但最终支付状态仍需由支付回调确认。出于安全考虑,成功时 不能配置修改数据的行为。

处理支付回调

微信发送支付结果后,系统生成的单次支付处理行为流会更新支付表,并提供以下结果:

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

仅当 paymentFoundtruealreadyProcessedfalse,并且 paymentStatus 符合预期时,才执行对应业务逻辑。支付成功分支通常用于核对订单金额、更新订单状态和发放权益。

显示最终结果

前端查询订单表或支付表显示最终状态。需要及时刷新时,可以使用实时数据源或在页面重新加载时重新查询。

退款

开放退款权限

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

添加退款行为

支付 菜单添加 微信支付,选择 退款

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

可以根据订单 id 查询对应的支付记录,再绑定其 id。发起退款前应检查支付状态和累计成功退款金额。

处理退款回调

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

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

仅在 refundFoundtruealreadyProcessedfalse 时处理对应结果。退款成功后,可以在预留分支中更新订单或回收已发放的权益。

常见问题

  1. 提示 JSAPI缺少参数 total_fee:确认金额有值、不小于 0.01,且小数点后不超过两位;同时检查商户号状态。
  2. 提示 JSAPI缺少参数 appId:确认商户号已关联当前小程序 AppID,并检查小程序配置。
  3. 退款行为不可选或执行失败:检查当前角色的支付权限,并确认已上传 apiclient_cert.p12
  4. 前端显示成功但订单未更新:检查单次支付处理行为流是否已发布,以及支付成功分支中是否配置了订单更新逻辑。
Last updated on