微信支付

支付功能于2024年8月30日进行了更新,本教程适用于更新后的版本。如果你的项目在此之前做过支付配置,将无法使用新版支付。旧版配置流程请见:小程序微信支付 v202201

微信支付目前支持JSAPI方式,同时支持小程序端和H5端,它们的整体配置基本一样。H5端只有在微信端打开的H5页面内才能使用,且需要一些额外配置(请查看本文最后一章)。

一、准备工作

这里的准备工作主要指小程序端的支付。

准备资料

以下资料用于注册企业小程序和商户号

  • 营业执照:彩色扫描件或数码照片
  • 组织机构代码证:彩色扫描件或数码照片,若已三证合一,则无需提供
  • 法人身份证:彩色扫描件或数码照片
  • 对公银行账户:包含开户行省市信息,开户账号

准备企业小程序

个人小程序无法使用支付,确保项目绑定的是企业小程序。如需注册请查看:企业小程序

准备微信商户号

  1. 注册商户号 a. 准备好拥有与所开发的项目运营内容相关的营业执照 b. 访问 注册微信商户号 并按照网页提示完成注册 c. 如有疑问,可查看详细教程:如何申请商户号
  2. 开通支付 a. 开通:产品中心 - 我的产品 - JSAPI支付 b. 授权:产品中心 - 开发配置 - JSAPI支付 - 授权目录:https://zion-app.functorz.com/
  3. 关联小程序 a. 获取小程序AppID:在微信公众平台的基本设置里或Zion预发布界面中 b. 商户号关联小程序:产品中心 - AppID账号管理 - 关联 AppID 将小程序的 AppID 填入之后确认绑定

将项目升级至专业版及以上

当前支付行为只支持专业版及以上,且专业版项目降级后,原有的支付行为也会失效

二、项目内创建订单表

在开始支付配置前,确保你在项目内创建好订单表,这张订单表将会和系统的支付表关联起来。如果原来就已经创建好了,可以跳过这步。

三、填写基础信息

激活支付功能

首次使用支付时,需要前往“配置”中的“支付”激活

激活时,需要绑定前面第二步创建的订单表,系统会自动给订单表和支付表创建一对多的关系。需注意:

  • 所有的支付方式共用一张订单表
  • 绑定后将无法解绑或换绑,且订单表将无法删除,因此绑定时一定要谨慎

绑定订单表并激活后,系统将自动完成以下操作:

  • 数据模型中创建三张表。开发者不可删除不可修改,且数据由系统写入,用户只能从中获取数据:
    • 支付表:用于保存支付记录。订单表1:N支付表,因此一笔订单可以有多笔支付
    • 周期性支付表:保存周期支付的记录。由于微信周期支付的开通条件比较严苛,暂不支持周期支付(支付宝和stripe支持)
    • 退款表:用于保存退款记录。支付表1:N退款表,因此一笔支付可以分多次退款
  • 自动创建两个行为流:支付回调、退款回调
    • 支付回调行为流:支付行为完成后触发的行为流
    • 退款回调行为流:退款行为完成后触发的行为流

填写商户号信息

前往微信商户号获取以下内容

  • 微信商户号ID:产品中心 - 开发配置 - 商户号
  • 商户号API Key:账号中心 - API安全 - APIv2密钥
  • 如需要退款功能,还需要获取apiclient_cert.p12文件。获取方式见 微信支付安全规范 中获取API证书的部分

四、使用支付/退款行为

添加行为

在行为列表中找到微信支付行为

如果你的行为名称为“(旧)微信支付v202201”,说明是旧版行为,不适用于新版功能。请将其删除后重新添加。 配置行为参数 1.支付行为

  • 订单号:整数类型,必须是绑定的订单表里某一行的ID
  • 金额:小数类型,单位为元,小数点后不能超两位
  • 商品介绍:文本类型,商品的描述

2.退款行为

  • 支付ID:整数类型,必须为支付表某一行的ID
  • 退款金额:小数类型,单位为元,小数点后不能超两位

配置行为权限

在权限系统中可以配置行为的权限。尤其是退款行为,建议对普通用户关闭,否则可能会造成金钱上的损失。更正确的做法是新建一个类似管理员的角色,给它开放退款权限。

五、配置行为完成后的业务逻辑

前端页面不安全(比如可以绕过支付,用接口直接调用“成功时”里的行为),因此在支付相关的“成功时”里禁止修改数据。更为安全的机制是:行为完成后,微信支付平台给项目后端发通知,触发相应的行为流。行为流在后端运行,因此非常安全。

微信支付回调行为流

微信支付行为完成后,该行为流会被触发。行为流内置了几个节点:

  • 代码块 callback handler。此代码块用于解析支付相关数据,并提取关键信息(如订单ID、支付状态等),代码块会三个输出:
    • orderId - 调用支付行为时传入的orderId
    • paymentStatus - 支付状态
    • callbackProcessed - 用于判断由于支付的回调是否是重复发送,和 paymentStatus 一起判断支付的真正状态
  • 条件分支
    • 用paymentStatus和callbackProcessed的状态判断支付是否成功
    • 在分支内配置你自己的业务逻辑

微信退款回调行为流

微信退款行为完成后,该行为流会被触发。行为流内置了几个节点:

  • 代码块 callback handler,此代码块用于解析支付相关数据,并提取关键信息(如订单ID、支付状态等)代码块会有三个输出:
    • orderId:对应的订单表id
    • paymentStatus:支付状态,REDUNDED - 退款成功,FAILED - 退款失败
    • callbackProcessed:用于判断是否为重复触发
  • 条件分支。用于处理支付成功和失败的后续逻辑(更新订单表等),需要你自己去配置

六、获取支付/退款结果

由于更新订单表/支付表/退款表是在自定义行为流中进行的,而且需要一定的时间。前端页面需要用订阅的方式,获取最新的数据。 例如调用支付行为后,页面上可以通过订阅支付表的方式,实时接收支付表的状态变化。

七、H5端使用微信支付

该支付方式只有在微信端打开的H5页面内才能使用,另外需要以下额外配置:

  1. 准备公众号 a. 必须是服务号,且已认证 b. 需要在公众号中进行网页授权域名,用web发布地址中的域名(配自定义域名后用自定义域名)
  2. 商户号授权:需要在商户号中配置支付授权目录,地址是web的发布地址(配自定义域名后用自定义域名)
  3. Zion里的配置:Web端必须使用微信授权登录,授权用公众号AppID和APP Secret
Copyright © FunctorZ 2024 all right reserved修订时间: 2024-10-11 10:43:32

results matching ""

    No results matching ""