From f76ae8c6af78b27385c5edbd541c56cb64239661 Mon Sep 17 00:00:00 2001 From: hdx Date: Thu, 24 Nov 2022 16:32:13 +0800 Subject: [PATCH] =?UTF-8?q?ad-rewarded-video=EF=BC=9A=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E5=9B=9E=E8=B0=83=E7=A4=BA=E4=BE=8B=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/component/ad-rewarded-video.md | 75 +++++++++++++++++++++++++++-- 1 file changed, 70 insertions(+), 5 deletions(-) diff --git a/docs/component/ad-rewarded-video.md b/docs/component/ad-rewarded-video.md index b50f58b98..17fbdb712 100644 --- a/docs/component/ad-rewarded-video.md +++ b/docs/component/ad-rewarded-video.md @@ -475,11 +475,76 @@ exports.main = async (event, context) => { #### 用户云函数详细说明 -如果业务使用了uniCloud,可以直接在云函数内部处理 +1. 如果业务使用了uniCloud,可以直接在云函数内部处理 +2. 没有使用uniCloud,将结果通过http发送给已有服务器 -也可以将结果发送给已有业务服务器 +示例代码: 用户业务系统在uniCloud +```js +'use strict'; -示例代码 +const crypto = require('crypto'); + +const db = uniCloud.database(); + +const collectionName = "ad-callback-log"; // 如果选择了腾讯云,需要手动预创建表 + +class DB { + + static save(data) { + return new DB().add(data); + } + + add(data) { + const collection = db.collection(collectionName); + const data2 = Object.assign(data, { + ad_type: 0, + create_date: new Date() + }) + return collection.add(data2); + } +} + +exports.main = async (event, context) => { + //event为客户端上传的参数 + console.log('event : ', event); + + const { + path, + queryStringParameters + } = event; + + const data = { + adpid: event.adpid, + platform: event.platform, + provider: event.provider, + trans_id: event.trans_id, + sign: event.sign, + user_id: event.user_id, + extra: event.extra, + } + + // 注意::必须验签请求来源 + const secret = "";// uniad 后台开通激励视频回调后生成的 Security key + const trans_id = event.trans_id; + const sign2 = crypto.createHash('sha256').update(`${secret}:${trans_id}`).digest('hex'); + if (event.sign !== sign2) { + return null; + } + + // 可选将回调记录保存到uniCloud,避免用户服务器没有响应时有日志可查,如果选择了保存记录需要做定时清理日志,避免日志过多影响性能 + // try { + // await DB.save(data); + // } catch (e) { + // console.log(e); + // } + + // 开发者在此处处理自己的回调业务,需要返回值 + + return null +}; +``` + +示例代码: 用户业务系统不在uniCloud,通过http的方式发送数据到已有服务器 ```js 'use strict'; @@ -587,8 +652,8 @@ exports.main = async (event, context) => { // console.log(e); // } - //const url = "https://"; // 用户业务服务器地址,为了避免请求被伪造,必须使用签名的方式请求 - //let reuslt = await UserServer.send(url, data); + const url = "https://"; // 用户业务服务器地址,为了避免请求被伪造,必须使用签名的方式请求 + let reuslt = await UserServer.send(url, data); return reuslt }; -- GitLab