uni-app 小程序激励广告服务端回调

发布于 1周前 作者 zlyuanteng 来自 Uni-App

uni-app 小程序激励广告服务端回调

示例代码:

{
  "access_token": "83_CMYZWJanDk5FNFLSV2f1Lnq-J6_nF7Al-8oWEgy3_U7ylQdchcT-9sr5tBp2vFCLytRUzq4V7tGyW77o6LVNyho8UD6BDj9vnPX4itCpf0ynRpu_CMyTdzfdSFIZZZfAJARRR",
  "expires_in": 7200,
  "status": 200,
  "connection": "keep-alive",
  "content-type": "application/json; encoding=utf-8",
  "date": "Sat, 31 Aug 2024 14:00:10 GMT",
  "content-length": "173"
}
{
  "status": 200,
  "statusCode": 200,
  "statusMessage": "OK",
  "connection": "keep-alive",
  "content-type": "application/json; encoding=utf-8",
  "date": "Sat, 31 Aug 2024 14:00:10 GMT",
  "content-length": "173",
  "size": 173,
  "aborted": false,
  "rt": 460,
  "keepAliveSocket": false,
  "data": {
    "access_token": "83_CMYZWJanDk5FNFLSV2f1Lnq-J6_nF7Al-8oWEgy3_U7ylQdchcT-9sr5tBp2vFCLytRUzq4V7tGyW77o6LVNyho8UD6BDj9vnPX4itCpf0ynRpu_CMyTdzfdSFIZZZfAJARRR",
    "expires_in": 7200
  },
  "requestUrls": ["https://api.weixin.qq.com/cgi-bin/stable_token"],
  "timing": null,
  "remoteAddress": "101.91.34.103",
  "remotePort": 443,
  "socketHandledRequests": 1,
  "socketHandledResponses": 1
}
{
  "dcloudAppid": "UNI3D199CD",
  "platform": "weixin-mp",
  "provider": "weixin-mp",
  "appid": "wx7b6c96bc1c1659ce"
}
{
  "access_token": "83_CMYZWJanDk5FNFLSV2f1Lnq-J6_nF7Al-8oWEgy3_U7ylQdchcT-9sr5tBp2vFCLytRUzq4V7tGyW77o6LVNyho8UD6BDj9vnPX4itCpf0ynRpu_CMyTdzfdSFIZZZfAJARRR"
}
{
  "args": {
    "userPayload": "",
    "triggerTime": "2024-08-31T14:00:00Z",
    "triggerName": "TIMER_LATEST"
  },
  "requestId": "timer1725112806073-b7cf9c70-4d85-4bb1-94e3-93526034cc2d"
}

操作步骤:

1

预期结果:

激励广告服务端回调

实际结果:

未收到激励广告服务端回调

bug描述:

按文档配置了 看uni-open-bridge 日志返回succes 但是服务器还是未收到回调请求! uniAdCallback 没有任何日志 附件携带相关设置配置

项目信息
产品分类 uniapp/小程序/微信
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win7
HBuilderX类型 正式
HBuilderX版本号 4.24
第三方开发者工具版本号 1.05
基础库版本号 2.25.4
项目创建方式 HBuilderX

Image 1 Image 2 Image 3 Image 4 Image 5


2 回复

如果云函数UniAdCallback没有日志, 需要排查文档中的第2步 安全网络


在处理uni-app小程序中的激励广告服务端回调时,通常需要与广告平台(如微信、字节跳动等)的服务器进行交互。这些平台通常会提供一个API端点,供开发者在广告展示、点击、完成等事件发生时发送回调请求。以下是一个简化的示例,展示如何在Node.js环境下实现这一功能。

首先,确保你的服务器端能够处理HTTP请求。这里我们使用express框架来创建一个简单的服务器。

  1. 安装必要的依赖:
npm install express axios
  1. 创建服务器并设置回调路由:
const express = require('express');
const axios = require('axios');
const app = express();
const port = 3000;

// 假设广告平台提供的回调URL
app.post('/reward-ad-callback', async (req, res) => {
  const { adId, userId, isCompleted, ...otherData } = req.body;

  // 验证回调数据的合法性(例如签名验证)
  // 这里省略验证步骤,实际开发中必须验证

  // 根据广告平台的要求,构造回调响应数据
  const callbackData = {
    ad_id: adId,
    user_id: userId,
    status: isCompleted ? 'completed' : 'skipped',
    // 其他必要字段
    ...otherData,
  };

  try {
    // 发送回调请求到广告平台的服务器
    const response = await axios.post('https://ad-platform.com/callback-endpoint', callbackData, {
      headers: {
        'Content-Type': 'application/json',
        // 可能需要添加其他认证信息,如API密钥
      },
    });

    // 处理广告平台的响应
    if (response.status === 200) {
      res.status(200).send({ message: 'Callback sent successfully' });
    } else {
      res.status(500).send({ error: 'Failed to send callback' });
    }
  } catch (error) {
    console.error('Error sending callback:', error);
    res.status(500).send({ error: 'Internal server error' });
  }
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

在上述代码中,我们创建了一个Express服务器,并定义了一个POST路由/reward-ad-callback来处理广告平台的回调请求。服务器接收到回调后,验证数据的合法性(此步骤在示例中省略,但非常重要),然后构造回调数据并发送到广告平台提供的回调端点。

注意,实际开发中需要根据广告平台的具体要求调整回调数据的格式和验证方式。此外,还需要处理网络异常、超时等情况,确保回调的可靠性和稳定性。这个示例提供了一个基础框架,你可以根据实际需求进行扩展和优化。

回到顶部