积分充值


PaymentKit 的基于积分的计费系统允许客户通过充值来补充其积分余额。您可以将一种积分货币配置为可充值,从而实现手动单次充值和当余额低于设定阈值时的自动充值。

本指南将引导您完成以编程方式为积分货币设置充值的过程。客户的实际自动充值设置(例如,低余额阈值和充值金额)由客户直接通过 Payment Kit 计费门户管理,以确保无缝的用户体验。

充值工作流程概述#

在深入实施之前,从用户的角度了解整个充值过程会很有帮助。当积分货币被配置为可充值时,会生成一个结账链接。您的应用程序将用户重定向到此链接以完成支付,PaymentKit 会在成功后自动处理积分的发放。

Credit Top-Up

步骤 1:创建充值套餐#

充值套餐是一个标准的 ProductPrice,它定义了客户可以获得多少积分以及他们需要支付多少费用。关键是在产品的元数据中嵌入一个 credit_config 对象。

首先,创建一个代表积分包的产品。元数据应指定该产品补充哪种积分货币以及购买后授予的积分数量。

Create a Product for the Top-Up Package

const topUpProduct = await payment.products.create({
  name: '1000 Credits Pack',
  description: 'Top up your account with 1000 credits.',
  type: 'service',
  metadata: {
    // 购买此产品可授予积分
    credit_config: {
      currency_id: 'pc_credit_xxxxxx', // 您的积分货币 ID
      amount: '1000', // 授予的积分数量
    },
  },
});

接下来,为此产品创建一个一次性价格。此价格将决定充值的成本和支付货币(例如,USDT、ETH)。

Create a Price for the Top-Up Package

const topUpPrice = await payment.prices.create({
  product_id: topUpProduct.id,
  type: 'one_time',
  unit_amount: '10', // 例如,10 USDT
  currency_id: 'pc_usdt_xxxxxx', // 用于支付积分的货币
});

步骤 2:配置积分货币#

一旦您为充值套餐设定了价格,就需要将其链接到您的积分货币。这可以通过使用 updateRechargeConfig 方法来完成,该方法将您的新价格指定为充值的基础套餐。

updateRechargeConfig(id, data)#

此方法将 base_price_id 与积分货币关联,从而启用充值功能。

参数

名称

类型

描述

id

string

必需。 要配置的积分货币的 ID(例如,pc_credit_xxxxxx)。

data.base_price_id

string

必需。 作为充值套餐的 Price 对象的 ID。

示例

Configure a Credit Currency for Recharge

import payment from '@blocklet/payment-js';

async function configureRecharge() {
  try {
    const creditCurrencyId = 'pc_credit_xxxxxx'; // 您的积分货币 ID
    const topUpPriceId = 'price_yyyyyyyy'; // 步骤 1 中的价格 ID

    const updatedCurrency = await payment.paymentCurrencies.updateRechargeConfig(
      creditCurrencyId,
      {
        base_price_id: topUpPriceId,
      }
    );

    console.log('Recharge config updated:', updatedCurrency.recharge_config);
  } catch (error) {
    console.error('Error configuring recharge:', error.message);
  }
}

configureRecharge();

示例响应

{
  "currency_id": "pc_credit_xxxxxx",
  "recharge_config": {
    "base_price_id": "price_yyyyyyyy"
  },
  "message": "充值配置已成功更新"
}

步骤 3:检索充值配置#

要发起充值,您的应用程序需要获取 payment_url。使用 getRechargeConfig 方法检索完整的充值配置,包括结账 URL 和基础价格的详细信息。

getRechargeConfig(id)#

获取指定积分货币的充值配置。

参数

名称

类型

描述

id

string

必需。 积分货币的 ID。

返回

返回一个包含货币信息及其 recharge_config 的对象。配置中的 payment_url 是您用来引导用户到结账页面的链接。

示例

Get the Top-Up URL

import payment from '@blocklet/payment-js';

async function getTopUpLink(creditCurrencyId) {
  try {
    const config = await payment.paymentCurrencies.getRechargeConfig(creditCurrencyId);

    if (config.recharge_config && config.recharge_config.payment_url) {
      console.log('将用户重定向到此 URL:', config.recharge_config.payment_url);
      return config.recharge_config.payment_url;
    } else {
      console.log('此货币未配置充值。');
      return null;
    }
  } catch (error) {
    console.error('Error fetching recharge config:', error.message);
  }
}

getTopUpLink('pc_credit_xxxxxx');

示例响应

{
  "currency_id": "pc_credit_xxxxxx",
  "currency_info": {
    "id": "pc_credit_xxxxxx",
    "name": "应用积分",
    "symbol": "CRD",
    "decimal": 2,
    "type": "credit"
  },
  "recharge_config": {
    "base_price_id": "price_yyyyyyyy",
    "basePrice": {
      "id": "price_yyyyyyyy",
      "unit_amount": "1000",
      "currency_id": "pc_usdt_xxxxxx",
      // ...其他价格详情
      "product": {
        "id": "prod_zzzzzzzz",
        "name": "1000 Credits Pack",
        // ...其他产品详情
      }
    },
    "payment_url": "https://payment.arcblock.io/checkout/pay/pl_xxxxxxxx"
  }
}

完成这些步骤后,您的积分货币现已完全启用充值功能。您的应用程序可以获取支付 URL,并为用户提供一种无缝的方式来向其账户添加更多积分。有关更广泛的积分系统的更多详细信息,请参阅 基于积分的计费 指南。