将你的爱发电接入到你的网站中--爱发电API使用指南(实现网页显示爱发电赞助者名单)

爱发电接入网站(PHP)实现

前言:有许多开发者拥有自己的网站和爱发电,可能需要赞助支持运营,而更好的获取到赞助者名单以及将其公示以表感谢是非常有必要的。小编我是因为我在一个我的世界服务器做技术,刚好需要这一类需求,于是摸索总结给需要的人。事例:https://catland.com.cn/afd.php

一、进入爱发电开发者后台

后台地址:https://afdian.net/dashboard/dev

需要您的user_id和api token(注意保密,不要泄露!!!)


二、PHP实现api对接

在您网站的目录下创建一个.php文件,用于获取api内容以及显示内容。

api接口:https://afdian.net/api/open/query-sponsor

api字段: 订单(爱发电官网原文)

total_count     赞助者总数
total_page      页数,默认每页50条,请求时,传 page ,curr_page < total_page则可继续请求

out_trade_no 订单号
custom_order_id 自定义信息
user_id 下单用户ID
plan_id 方案ID,如自选,则为空
title 订单描述
month 赞助月份
total_amount 真实付款金额,如有兑换码,则为0.00
show_amount 显示金额,如有折扣则为折扣前金额
status 2 为交易成功。目前仅会推送此类型
remark 订单留言
redeem_id 兑换码ID
product_type 0表示常规方案 1表示售卖方案
discount 折扣
sku_detail 如果为售卖类型,以数组形式表示具体型号
address_person 收件人
address_phone 收件人电话
address_address 收件人地址

api字段: 赞助者(爱发电官网原文)

total_count     赞助者总数
total_page      页数,默认每页20条,请求时,传 page ,curr_page < total_page则可继续请求

sponsor_plans    []数组类型,具体节点为多个赞助方案。
current_plan     当前赞助方案,如果节点仅有 name:"",不包含其它内容时,表示无方案
all_sum_amount   累计赞助金额,此处为折扣前金额。如有兑换码,则此处为虚拟金额,回比实际提现的多
create_time      int 秒级时间戳,表示成为赞助者的时间,即首次赞助时间
last_pay_time    int 秒级时间戳,最近一次赞助时间

user 节点表示用户属性
user_id    用户唯一ID
name        昵称,非唯一,可重复
avatar    头像

通过阅读爱发电官方的API文档我们可知以下内容(爱发电官网原文)

签名介绍

为了保证数据安全与灵活性,平台做了一个简单的签名逻辑。平台接收的参数如下。 

user_id: 上面的 user_id,表明你是谁
params: 具体接口传参的json字符串
ts: 发出请求时秒级时间戳
sign: 针对上面3个数据的签名,防止伪造数据。

sign 的计算规则为:md5(token+请求数据按key排序拼接key和value)

具体到这次场景,参数key为固定值,只有上面四个字段 sign 签名可以简化为
sign = md5({token}params{params}ts{ts}user_id{user_id})
{}包的数据为具体数值

也就是说他需要和他通讯时进行签名验证,如下(爱发电官网原文)

示例

假设当前数据如下
user_id abc
params  {"a":333}
ts      1624339905
token   123        注意这个不传递到服务端,仅参与签名计算

sign = md5('123params{"a":333}ts1624339905user_idabc')

sign = a4acc28b81598b7e5d84ebdc3e91710c

注意token直接写具体值,其它参数写kv,没有任何连接字符,直接拼接

JSON请求示例 

{"user_id":"abc", "params": "{\"a\":333}", "ts": 1624339905, "sign":"a4acc28b81598b7e5d84ebdc3e91710c"}

这里他会回一个响应码(也就是文档提到的ec),若ec=200,则我们的和API的交接成功,我们连接到了爱发电并获取到了信息,获取到赞助者信息事例如下(事例为爱发电官网原文)

{
  "ec": 200,
  "em": "",
  "data": {
    "total_count": 14,
    "total_page": 2,
    "list": [
      {
        "sponsor_plans": [],
        "current_plan": {
          "name": ""
        },
        "all_sum_amount": "0.00",
        "create_time": 1581011280,
        "last_pay_time": 1598852327,
        "user": {
          "user_id": "3524370d11e8ae8852540025c377",
          "name": "Hee",
          "avatar": "https://pic1.afdiancdn.com/user/27f7sss7/avatar/2d9659585fc4798068efbb652e56c08a.jpg"
        }
      },
      {
        "sponsor_plans": [
          {
            "plan_id": "sdfsf",
            "rank": 0,
            "user_id": "34343",
            "status": 3,
            "name": "独立永久方案",
            "pic": "",
            "desc": "啊1;",
            "price": "1.00",
            "update_time": 1621084278,
            "pay_month": 1,
            "show_price": "1.00",
            "independent": 1,
            "permanent": 1,
            "can_buy_hide": 0,
            "need_address": 0,
            "product_type": 0,
            "sale_limit_count": -1,
            "need_invite_code": false,
            "expire_time": 2114352000,
            "sku_processed": [],
            "rankType": 21
          }
        ],
        "current_plan": {
          "plan_id": "sdfsfsf",
          "rank": 0,
          "user_id": "3453535",
          "status": 3,
          "name": "独立永久方案",
          "pic": "",
          "desc": "啊1;",
          "price": "1.00",
          "update_time": 1621084278,
          "pay_month": 1,
          "show_price": "1.00",
          "independent": 1,
          "permanent": 1,
          "can_buy_hide": 0,
          "need_address": 0,
          "product_type": 0,
          "sale_limit_count": -1,
          "need_invite_code": false,
          "expire_time": 2114352000,
          "sku_processed": [],
          "rankType": 21
        },
        "all_sum_amount": "13.00",
        "first_pay_time": 1576776221,
        "last_pay_time": 1581083107,
        "user": {
          "user_id": "sfff",
          "name": "sfsf:十五种幸福(新版)",
          "avatar": "https://pic1.afdiancdn.com/user/sdfsfsf/avatar/c13b6125cbd9fbe7810c79256df1f5b2_w4032_h3024_s3215.jpeg"
        }
      }
    ]
  }
}

ec的字段

ec 字段异常错误码

200 成功
400001  params incomplete
400002  time was expired
400003  params was not valid json string
400004  no valid token found
400005  sign validation failed

目前我们只需要赞助者的名称和id还有累积赞助金额,则我们需要用到[user][user_id]和[user][name]和[all_sum_amount]这些key

简单代码实现如下(用json实现收发):

<?php

// 你的用户ID
$user_id = "你的用户ID";

// 生成的API Token
$token = "你的API Token";

// 获取当前时间戳
$ts = time();

// 构建请求参数
$params = [
    "page" => 1 // 查询第一页的赞助者
];

// 按照要求的格式拼接字符串
$kv_string = "params" . json_encode($params) . "ts" . $ts . "user_id" . $user_id;

// 计算签名
$sign = md5($token . $kv_string);

// 构建请求数据
$request_data = [
    "user_id" => $user_id,
    "params" => json_encode($params),
    "ts" => $ts,
    "sign" => $sign
];

// 转换为 JSON 格式
$json_data = json_encode($request_data);

// 设置请求的 URL
$url = "https://afdian.net/api/open/query-sponsor";

// 初始化 cURL
$curl = curl_init();

// 设置 cURL 选项
curl_setopt_array($curl, [
    CURLOPT_URL => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => $json_data,
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Content-Length: ' . strlen($json_data)
    ],
]);

// 发送请求并获取响应
$response = curl_exec($curl);

// 关闭 cURL 资源
curl_close($curl);

// 处理响应数据
if ($response) {
    $data = json_decode($response, true);

    if (isset($data['ec']) && $data['ec'] == 200) {
        // 查询成功
        $sponsors = $data['data']['list'];

        // 输出赞助者信息
        echo '<h1>赞助者列表</h1>';
        foreach ($sponsors as $sponsor) {
            echo '<p>用户ID: ' . $sponsor['user']['user_id'] . '</p>';
            echo '<p>昵称: ' . $sponsor['user']['name'] . '</p>';
            echo '<p>累计赞助金额: ' . $sponsor['all_sum_amount'] . '</p>';
            echo '<hr>';
        }
    } else {
        // 查询失败
        echo '查询赞助者失败: ' . $data['em'];//这里反馈了ec状态
    }
} else {
    // 请求失败
    echo '请求失败';
}

?>

这里我们获取到了用户的id和昵称和累积赞助金额

如果您觉得不够美观,可以进阶使用CSS来排版,示例代码如下

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>赞助者列表</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 0;
            background-color: #f4f4f4;
            color: #333;
        }
        .container {
            max-width: 800px;
            margin: 20px auto;
            padding: 20px;
            background-color: #fff;
            border-radius: 8px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
        }
        .sponsor {
            border-bottom: 1px solid #ccc;
            padding: 20px 0;
            display: flex;
            align-items: center;
        }
        .avatar {
            width: 80px;
            height: 80px;
            border-radius: 50%;
            margin-right: 20px;
        }
        .info {
            flex: 1;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>赞助者列表</h1>
        <?php
        /*api代码*/
        ?>
    </div>
</body>
</html>

然后以上就可以实现下图

以上就是全部教程,如有疑问可以留言询问

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FMC,即青少年对抗性和脆弱环境的心理健康和社会发展项目,是一个为青少年提供心理健康和社会支持的项目。接下来,我将为您介绍FMC使用指南和CDsN的使用说明。 首先,FMC使用指南提供了有关如何使用该项目的详细说明和指导。它包含以下内容: 1.项目背景和目标:解释了FMC的背景和目标,以及为什么这个项目是如此重要和必要。 2.项目组成和资源:介绍了项目所使用的各种资源和工具,如心理咨询师、社会工作者、情感支持小组等。 3.项目流程和时间安排:详细描述了FMC的实施流程和时间安排,包括评估、干预、跟踪和评估阶段的内容和时间框架。 4.技能培训和支持:阐述了为项目工作人员提供的必要培训和支持,以确保他们能够有效地执行他们的工作。 而CDsN,即社会发展支持网络,是FMC的核心内容之一。它是为青少年提供社会支持和发展机会的一个网络。CDsN的使用说明包括以下内容: 1.目标和原则:解释了CDsN的目标和原则,如为青少年创造一个互助和支持的社会网络等。 2.网络成员和功能:介绍了CDsN的不同成员及其在网络的功能,如社会工作者、学校老师、志愿者等。 3.资源和活动:列举了CDsN提供的不同资源和活动,如社区活动、培训课程、就业机会等。 4.参与和支持:说明了如何参与CDsN以及如何提供支持,如加入志愿者团队、提供赞助等。 通过FMC使用指南和CDsN的使用说明,青少年可以更好地了解和使用FMC项目,从而获得更好的心理健康和社会发展支持。这些详细的指南和说明可以为青少年、项目工作人员和其他参与者提供必要的指导和支持,确保FMC项目的顺利实施和有效运作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值