PaymentKit 的點數計費系統允許客戶透過儲值來補充其點數餘額。您可以將點數貨幣設定為可儲值,從而啟用手動單次儲值和餘額低於設定閾值時的自動儲值。
本指南將引導您以程式化方式設定點數貨幣以進行儲值。客戶的實際自動儲值設定(例如,低餘額閾值和儲值金額)由客戶直接透過 Payment Kit 計費入口網站管理,以確保無縫的使用者體驗。
儲值工作流程概覽
在深入實作之前,從使用者的角度了解整個儲值流程會很有幫助。當點數貨幣設定為可儲值時,會產生一個結帳連結。您的應用程式會將使用者重新導向到此連結以完成付款,PaymentKit 會在成功後自動處理點數的授予。

步驟 1:建立儲值包
儲值包是一個標準的 Product 和 Price,它定義了客戶收到的點數數量以及他們支付的金額。關鍵是在產品的元資料中嵌入一個 credit_config 物件。
首先,建立一個代表點數包的產品。元資料應指定此產品補充的點數貨幣以及購買後授予的點數數量。
為儲值包建立產品
const topUpProduct = await payment.products.create({
name: '1000 點數包',
description: '為您的帳戶儲值 1000 點數。',
type: 'service',
metadata: {
// 購買此產品時授予點數
credit_config: {
currency_id: 'pc_credit_xxxxxx', // 您的點數貨幣 ID
amount: '1000', // 要授予的點數數量
},
},
});接下來,為此產品建立一個一次性價格。此價格將決定儲值的成本和支付貨幣(例如,USDT、ETH)。
為儲值包建立價格
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 與點數貨幣關聯,使其可用於儲值。
參數
| Name | Type | Description |
|---|---|---|
id | string | 必要。 要設定的點數貨幣 ID(例如,pc_credit_xxxxxx)。 |
data.base_price_id | string | 必要。 作為儲值包的 Price 物件 ID。 |
範例
設定點數貨幣以進行儲值
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('儲值設定已更新:', updatedCurrency.recharge_config);
} catch (error) {
console.error('設定儲值時出錯:', error.message);
}
}
configureRecharge();範例回應
{
"currency_id": "pc_credit_xxxxxx",
"recharge_config": {
"base_price_id": "price_yyyyyyyy"
},
"message": "儲值設定已成功更新"
}步驟 3:擷取儲值設定
要啟動儲值,您的應用程式需要擷取 payment_url。使用 getRechargeConfig 方法來擷取完整的儲值設定,包括結帳 URL 和關於基礎價格的詳細資訊。
getRechargeConfig(id)
擷取指定點數貨幣的儲值設定。
參數
| Name | Type | Description |
|---|---|---|
id | string | 必要。 點數貨幣的 ID。 |
傳回值
傳回一個包含貨幣資訊及其 recharge_config 的物件。設定中的 payment_url 是您將用來引導使用者到結帳頁面的連結。
範例
取得儲值 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.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",
// ... other price details
"product": {
"id": "prod_zzzzzzzz",
"name": "1000 點數包",
// ... other product details
}
},
"payment_url": "https://payment.arcblock.io/checkout/pay/pl_xxxxxxxx"
}
}完成這些步驟後,您的點數貨幣現在已完全啟用儲值功能。您的應用程式可以擷取付款 URL,並為使用者提供一種無縫的方式來為其帳戶增加更多點數。有關更廣泛的點數系統的更多詳細資訊,請參閱 基於點數的計費 指南。