Skip to content

UserRecharge 用户续期

账号授权模式下的续期入口:用户用充值卡密给自己的账号续期。无需密码,只需用户名 + 卡密。适合「用户在软件里自助充值续费」场景。

项目
actionUserRecharge
入口Handle POST https://www.a7p.cn/api/verify/{ApiPassword}
是否计入验证统计

调用步骤

  1. 完成 Init 握手,拿到 ApiPassword
  2. 拼接明文:action=UserRecharge&UserName=账号&Card=充值卡密
  3. RC4 加密 + MD5 签名,POST 到 Handle 接口。
  4. code == 200 → 读取 data.expire_atdata.added_days

请求参数

字段类型必填说明
actionstring固定值 UserRecharge
UserNamestring用户名。等价别名:username
Cardstring充值卡密。等价别名:card

明文示例:

text
action=UserRecharge&UserName=testuser01&Card=8KFD-LM2Q-W9X3-RE77

业务规则

  • UserNameCard 必填,缺失返回 1013
  • 用户名不存在返回 1016;账号被停封(status==2)返回 1006
  • 充值卡密不存在或不属于当前产品返回 1004
  • 按次卡不能用于续期:传按次卡返回 1024,按次卡请走 SingleLogin
  • 若账号已有未过期激活记录,则在原到期时间上叠加;已过期则从当前时间起算。
  • 按小时卡(duration_type=hour)按小时叠加,其余按时长天数叠加,added_days 字段会注明单位(30天 / 24小时)。

请求示例

python
# 复用 /api/handle 页面中的 handle() 与 rc4() 函数
API_PW = "A1B2C3D4E5F6G7H8I9J0K1L2M3N4O5P6"

plain = "action=UserRecharge&UserName=testuser01&Card=8KFD-LM2Q-W9X3-RE77"
result = handle(API_PW, plain)

code = result["code"]
if code == 200:
    d = result["data"]
    print(f"续期成功,新增 {d['added_days']},到期 {d['expire_at']}")
elif code == 1016:
    print("用户未注册")
elif code == 1024:
    print("按次卡不能用于续期,请走卡密登录")
else:
    print(f"续期失败 {code}: {result['message']}")
csharp
// 复用 /api/handle 页面中的 A7Client
var client = new A7Client(apiPassword);

string plain = "action=UserRecharge&UserName=testuser01&Card=8KFD-LM2Q-W9X3-RE77";
JsonElement result = await client.HandleAsync(plain);

int code = result.GetProperty("code").GetInt32();
switch (code)
{
    case 200:
        JsonElement d = result.GetProperty("data");
        Console.WriteLine($"续期成功,新增 {d.GetProperty("added_days").GetString()},到期 {d.GetProperty("expire_at").GetString()}");
        break;
    case 1016:
        Console.WriteLine("用户未注册");
        break;
    case 1024:
        Console.WriteLine("按次卡不能用于续期,请走卡密登录");
        break;
    default:
        Console.WriteLine($"续期失败 {code}: {result.GetProperty("message").GetString()}");
        break;
}
javascript
// 复用 /sdk/nodejs 中的 A7Client
const client = new A7Client({ appId: '150018', appKey: 'YOUR_APP_KEY' })
await client.init()

const result = await client.call('UserRecharge', {
  UserName: 'testuser01',
  Card: '8KFD-LM2Q-W9X3-RE77',
})

if (result.code === 200) {
  console.log(`续期成功,新增 ${result.data.added_days},到期 ${result.data.expire_at}`)
} else if (result.code === 1024) {
  console.log('按次卡不能用于续期,请走卡密登录')
} else {
  console.error(`续期失败 ${result.code}: ${result.message}`)
}
text
.版本 2

.子程序 A7_用户续期, 逻辑型
.参数 ApiPassword, 文本型
.参数 账号, 文本型
.参数 卡密, 文本型
.局部变量 TimeStamp, 文本型
.局部变量 加密参数, 文本型
.局部变量 Sign, 文本型
.局部变量 返回文本, 文本型
.局部变量 状态码, 文本型

TimeStamp = 到文本 (时间_取现行时间戳 ())
加密参数 = RC4加密 (ApiPassword, "action=UserRecharge&UserName=" + 账号 + "&Card=" + 卡密)
Sign = 取数据摘要 (到字节集 (ApiPassword + TimeStamp + 加密参数))
返回文本 = 到文本 (网页_访问 ("https://www.a7p.cn/api/verify/" + ApiPassword, 1, "TimeStamp=" + TimeStamp + "&Sign=" + Sign + "&Data=" + 加密参数))

状态码 = JSON_解析 (返回文本, "code")
.判断开始 (状态码 = "200")
    信息框 ("续期成功,到期:" + JSON_解析 (返回文本, "data.expire_at"), 0, )
.判断 (状态码 = "1024")
    信息框 ("按次卡不能用于续期,请走卡密登录", 0, )
.默认
    信息框 ("续期失败:" + JSON_解析 (返回文本, "message"), 0, )
.判断结束
返回 (假)

成功响应

json
{
  "code": 200,
  "message": "success",
  "data": {
    "username": "testuser01",
    "expire_at": "2026-10-01 12:00:00",
    "added_days": "30天",
    "status": "active"
  }
}
字段类型说明
usernamestring用户名
expire_atstring续期后的新到期时间
added_daysstring本次增加时长,带单位(如 30天24小时
statusstringactive

按小时卡续期

json
{
  "code": 200,
  "message": "success",
  "data": {
    "username": "testuser01",
    "expire_at": "2026-03-01 18:00:00",
    "added_days": "24小时",
    "status": "active"
  }
}

失败响应

json
{ "code": 1013, "message": "参数不完整: UserName, Card 必填", "data": null }
json
{ "code": 1016, "message": "用户未注册", "data": null }
json
{ "code": 1006, "message": "账户已被停封", "data": null }
json
{ "code": 1004, "message": "充值卡密无效", "data": null }
json
{ "code": 1024, "message": "按次卡密不能用于用户续期,请使用卡密登录方式", "data": null }

错误码

错误码含义解决方案
1013参数不完整UserNameCard 必填
1016用户未注册引导先调用 UserRegin
1006账户已被停封 / 已被禁用读取 data.remark(如有)展示原因
1004充值卡密无效卡密不存在或不属于当前产品
1024按次卡密不能续期按次卡请走 SingleLogin

完整列表见错误码对照表

相关文档

A7验证 · 软件授权与网络验证平台