更新记录

1.0.0(2026-01-14)

1.0.0

  • 支持支付宝小程序支付:统一下单(createOrder)
  • 支持订单查询(queryOrder)
  • 支持退款(refund)
  • 支持关闭订单(closeOrder)
  • 提供支付回调云函数:回调验签与支付结果处理(ziyu-alipay-notify)
  • 提供订单状态回写示例:可按配置写回 uniCloud 数据库订单集合
  • 提供完整接入文档与配置指引(AppID/密钥/notifyUrl/URL化部署)

平台兼容性

云端兼容性

阿里云 腾讯云 支付宝云
× ×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


支付宝支付模块(ziyu-alipay-pay)

适用于 uniCloud + 支付宝小程序 的支付场景,提供统一下单、订单查询、退款、关闭订单、异步回调等能力。

所有需要用户自定义的内容都集中在两个 config.js当中。

所有需要填写的appid、公钥、私钥等内容请自行参考说明到支付宝开放平台进行申请。

调用支付云函数前必须先获取用户的userIdopenId,否则无法创建订单!

目录结构

uni_modules/
└─ ziyu-alipay-pay/
   ├─ README.md
   ├─ package.json
   └─ uniCloud/
      └─ cloudfunctions/
         ├─ ziyu-alipay-pay/        # 支付主云函数(含 config.js、index.js、package.json)
         └─ ziyu-alipay-notify/     # 回调云函数(含 config.js、index.js)

安装方式

  1. 下载本插件到自己的项目。
  2. 导入后,插件会自动出现在项目的 uni_modules/ziyu-alipay-pay/ 目录下。
  3. 展开 uni_modules/ziyu-alipay-pay/uniCloud/cloudfunctions/,即可看到两个云函数。

配置步骤

1. 支付主云函数 ziyu-alipay-pay/config.js

字段 必填 说明
appId 支付宝小程序 AppID,支付宝开放平台获取。
privateKey 应用私钥(PKCS8)。若你手上是 PEM 文件,需去掉 BEGIN/END 标记,仅保留中间内容;若使用支付宝开放平台生成的纯文本,直接粘贴即可。
alipayPublicKey 支付宝公钥。若复制自 PEM 文件请去掉 BEGIN/END 标记;若是支付宝开放平台提供的纯文本,同样可直接使用。
notifyUrl ziyu-alipay-notify URL 化后的 HTTPS 地址。
buyerIdType 用户标识类型,'userId''openId',详见下方说明。
keyType 默认 PKCS8,如使用 PKCS1 私钥可改。
gateway 默认 https://openapi.alipay.com/gateway.do。沙箱可改为 https://openapi.alipaydev.com/gateway.do
signType 默认 RSA2,如确有需要可调。
pid 商户 PID(2088 开头)。普通商户模式下 AppID 已与 PID 绑定,可不填;如为服务商/代运营模式,或需要在回调、对账中显式校验商户主体,请填写。

不填写必填项会导致 SDK 初始化失败或无法调用支付宝接口;可选项不改则使用默认值。

用户标识类型说明

你的前端能获取到哪种类型的id,就在这里配置什么类型,不同类型的id区别如下:

类型 格式 适用场景
userId 2088开头的16位数字 2021年9月前创建的老应用,或已开启"UID兼容模式"的应用
openId 字母数字组成的长字符串 2021年9月后创建的新应用(默认只返回 openId)

2. 回调云函数 ziyu-alipay-notify/config.js

字段 必填 说明
alipayPublicKey 支付宝公钥,用于回调验签。建议填写纯文本内容(不带 BEGIN/END)。
callbackFunction 支付成功后调用的业务云函数名称。留空则仅验签,不做任何业务处理。
signType 签名类型,默认 RSA2

本模块采用纯支付职责设计,回调云函数只负责验签,不直接操作数据库。订单状态更新等业务逻辑由开发者在自己的业务云函数中实现。

业务回调机制

配置 callbackFunction 后,支付成功时会自动调用你的业务云函数,传入以下参数:

{
  action: 'paymentSuccess',
  data: {
    tradeNo: '支付宝交易号',
    outTradeNo: '商户订单号',
    totalAmount: '支付金额',
    buyerId: '买家支付宝用户ID',
    gmtPayment: '支付时间',
    tradeStatus: '交易状态'
  }
}

比如你有一个用于更新订单数据的云函数:'my-order-handler',如果你需要在支付出结果之后更新订单数据到你自己的数据库,就可以在 ziyu-alipay-notify/config.js 中配置:

callbackFunction: 'my-order-handler'

云函数部署与 URL 化

  1. 部署
    • 在 HBuilderX 中分别右键 ziyu-alipay-payziyu-alipay-notify → “上传部署”。
  2. URL 化
    • 打开 uniCloud 控制台 → 云函数 → ziyu-alipay-notify → 详情 → 开启 云函数 URL 化
    • 设置路径(示例 /ziyu-alipay-notify),复制完整 HTTPS 地址,回填到 ziyu-alipay-pay/config.jsnotifyUrl 字段。
    • Url化需要有自己的域名,没有域名可以用默认url用于临时测试,默认域名的格式是类似于:'https://你的space-id/http/ziyu-alipay-notify'

后续操作(查询/退款/关闭)

通过调用 action: 'queryOrder' | 'refund' | 'closeOrder' 完成后续操作。

API 说明(云函数 action

action 功能 入参关键字段
createOrder 创建订单 buyerIdtotalAmountsubjectorderId?body?
queryOrder 查询订单 tradeNo? / outTradeNo?(二选一)
refund 申请退款 tradeNo? / outTradeNo?refundAmountrefundReason?
closeOrder 关闭订单 tradeNo? / outTradeNo?

返回结构统一为 { code, message, data },其中 code === 0 表示成功。

获取支付宝配置指引

  1. 登录 支付宝开放平台 → 指定小程序的控制台 → 开发设置。
  2. 获取 AppID(页面左上角小程序名称下方的数字,可以直接复制)、生成并下载应用私钥(接口加签方式(密钥/证书)这一项)。
  3. 在“接口加签方式”中查看 支付宝公钥
  4. 如需 PID,到 支付宝商家中心 查询。

版本与依赖

  • 插件版本:见 package.json
  • 依赖:alipay-sdk@^3.6.1(已在 ziyu-alipay-pay 云函数 package.json 声明)。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

> 本插件自身不主动采集终端个人信息。 > 支付流程涉及与支付宝开放平台接口通信,云函数会处理支付相关参数(如商户订单号 out_trade_no、支付宝交易号 trade_no、金额 total_amount、交易状态 trade_status 等)用于创建订单、查询、退款及回调验签/业务方订单状态更新。 > 数据通信目的:完成支付宝支付能力对接与支付结果确认。 > 数据存储:是否写入 uniCloud 数据库由使用者自行配置与实现。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。