@ariary/pay

中文文档
2.2.0发布于 2026/03/25ISCTypeScriptESM + CJS零依赖近 30 天下载 2606

阿里派支付SDK(ariari.mg)——接受马达加斯加的移动货币支付. 创建支付链接,管理产品,跟踪支付状况,处理webhooks. 支持MVola,Orange Money,Airtel Money. 多功能,TypeScript先行.

中文使用文档
文档目录11 节
  1. 安装
  2. 拿你的证件
  3. 设置
  4. 如何运作
  5. 创建付款
  6. 钩子
  7. 跟踪支付
  8. 这个 status 字段
  9. 获取现有付款
  10. 产品
  11. 多个实例

@ 薪金/ 薪金

通过Ariari API为马达加斯加移动货币支付SDK.

仅服务器侧 -  secret 绝对不能在客户端代码中曝光.

安装

yarn add @ariary/pay

拿你的证件

  1. 签名于 ariari.mg (意大利语)
  2. 创建工程
  3. 你会得到一个 secret

设置

import Ariari from '@ariary/pay'

Ariari.config({
  secret: 'your-secret',
})

如何运作

  1. 您的服务器创建 付款 数额(以阿里亚斯为单位)
  2. 你把终端用户引向返回的 payment.url - ariari.mg上的主页
  3. 最终用户通过移动货币将钱寄给阿里耶数字并收到 票号
  4. 最终用户在付款页上输入其票号(或你收集票并打电话) .pay() 从后端)
  5. 可在 多个步骤 ——应用的每个出票码都是部分付款
  6. 全部支付后, 便会呼叫和/ 或重定向用户

创建付款

Ariari.create() 接受以下字段:

外地类型需求说明
amount编号是(无) productId(中文(简体) )Ariary的付款额
productId字符串没有产品标识——解决 amount, (中文(简体) ), name, (中文(简体) ), imgUrl 自动
name字符串没有支付页面上显示的支付标签
imgUrl字符串没有支付页面上显示的图像 URL
hooks.redirectSuccess字符串没有URL 用户在成功时重定向到
hooks.redirectFailure字符串没有URL 用户在失败时被重定向到
hooks.silentSuccess字符串没有支付全部完成时呼叫 Webhook
hooks.silentProgress字符串没有Webhook 调用每笔部分付款
hooks.silentFailure字符串没有Webhook 呼叫付款失败
// with amount only
const payment = await Ariari.create({ amount: 5000 })
console.log(payment.url) // https://pay.ariari.mg/abc123encrypted

// with product (amount, name, imgUrl resolved automatically)
const payment = await Ariari.create({ productId: product.id })

// with product + override amount
const payment = await Ariari.create({ productId: product.id, amount: 3000 })

// with hooks
const payment = await Ariari.create({
  amount: 10000,
  name: 'T-shirt bleu',
  imgUrl: 'https://example.com/img.png',
  hooks: {
    redirectSuccess: 'https://yoursite.com/payment/success',
    redirectFailure: 'https://yoursite.com/payment/failure',
    silentSuccess: 'https://yoursite.com/api/webhook/payment-success',
    silentProgress: 'https://yoursite.com/api/webhook/payment-progress',
    silentFailure: 'https://yoursite.com/api/webhook/payment-failure',
  },
})

钩子

redirect* 钩子是浏览器-侧重定向. 在用户完成或失败支付页面后,他们的浏览器会浏览给定的URL. 当支付页面取代当前页面(同为tab导航)时最合适. 如果您在新标签中打开支付页面( N)target="_blank"),重定向钩对母页没有任何影响——取而代之的是使用无声钩.

silent* 钩子是服务器对服务器的webhooks由Ariari后端直接调用. 它们必须是具有有效域名(例如. https://yoursite.com/api/webhook) (中文(简体) ). localhost 或当地实施伙伴将不起作用——使用ngrok这样的隧道服务促进发展.

两者可以一起使用——例如重定向用户并同时通知您的服务器.

跟踪支付

Ariari.create() 返回 a Payment 具有两种方法的对象:

  • payment.status() ——从服务器获取全额支付细节(见下表)
  • payment.pay(ticketCode) ——应用后端的出票码(付款页的替代)
const payment = await Ariari.create({ amount: 5000 })

// fetch payment details
const info = await payment.status()
// info.status → the payment's current state (see below)
// info.rest   → remaining amount to pay
// info.parts  → list of partial payments applied so far

// apply a ticket code from your backend
const result = await payment.pay('Y-1234')

这个 status 字段

这个 info.status 字段(不与 .status() )表示付款的当前状态:

数值说明
Status.PENDING创建付款, 尚未应用出票码
Status.INCOMPLETE至少适用一个票号,剩余金额 > 0
Status.PAID全额支付
Status.FAILED服务器侧出错( 在正常情况下不应发生)
import { Status } from '@ariary/pay'

if (info.status === Status.PAID) { ... }

获取现有付款

存储 payment.id 待会再拿回来 .getPayment()调用 .status() 返回全额支付细节 :

外地类型说明
id字符串支付身份
amount编号Ariary合计
rest编号剩余数额
productId绳子?链接产品标识
name绳子?付款标签
imgUrl绳子?图像 URL
status状态PENDING | INCOMPLETE | PAID | FAILED
parts付款部分部分缴款清单
createdAt字符串创建日期
updatedAt字符串上次更新日期
url字符串支付页面 URL
const payment = await Ariari.create({ amount: 5000 })
const paymentId = payment.id // save this

// later
const payment = Ariari.getPayment(paymentId)
const info = await payment.status()

产品

产品是一个可重复使用的模板,所以你不必发送同样的 name, (中文(简体) ), price,以及 imgUrl 每次你创造报酬。 当你通过一个 productId 改为 Ariari.create(),产品的数据自动应用于支付.

// create
const product = await Ariari.products.create({ name: 'Forfait Premium', price: 5000, imgUrl: 'https://example.com/img.png' })

// list all
const products = await Ariari.products.list()

// update
const updated = await Ariari.products.update(product.id, { name: 'Forfait Gold', price: 8000 })

// delete
await Ariari.products.delete(product.id)

多个实例

使用 name 管理不同证书的 Ariari 实例. Ariari.config() 直接返回实例.

const shop = Ariari.config({
  name: 'shop',
  secret: 'secret-a',
})

const billing = Ariari.config({
  name: 'billing',
  secret: 'secret-b',
})

await shop.create({ amount: 5000 })
await billing.create({ productId: 'prod-123' })

您也可以稍后检索一个命名实例 Ariari.get()。 。 。 .

const shop = Ariari.get('shop')

无 name,实例默认为 "main" 并采用静态方法(Ariari.create, (中文(简体) ), Ariari.products, (中文(简体) ), Ariari.getPayment) (中文(简体) ).

版本与发布记录

@ariary/pay 共发布 14 个版本,首次发布于 2026/02/23;过去 12 个月发布了 14 个版本。

版本发布日期距今
2.2.0latest2026/03/257 个月前
2.1.02026/03/247 个月前
2.0.22026/03/058 个月前
2.0.12026/03/058 个月前
2.0.02026/02/288 个月前
1.0.82026/02/278 个月前

关于 @ariary/pay 的常见问题

@ariary/pay 是什么?

阿里派支付SDK(ariari.mg)——接受马达加斯加的移动货币支付. 创建支付链接,管理产品,跟踪支付状况,处理webhooks. 支持MVola,Orange Money,Airtel Money. 多功能,TypeScript先行.

如何安装 @ariary/pay?

在项目目录运行 npm install @ariary/pay,或使用 pnpm add / yarn add / bun add。

@ariary/pay 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ariary/pay 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@ariary/pay 可以商用吗?

@ariary/pay 使用 ISC 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ariary/pay 的下载量有多少?

根据 npm 官方下载统计,@ariary/pay 在 2026/10/07 – 2026/11/05 这 30 天内被下载 2,606 次,日均约 87 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ariary/pay 还在维护吗?

最新版本 2.2.0 发布于 2026/03/25(7 个月前);至今共发布 14 个版本,其中过去 12 个月发布了 14 个;首次发布于 2026/02/23。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。