| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- 'use strict';
- const uniADConfig = require('uni-config-center')({
- pluginId: 'uni-ad'
- }).config()
- const signIn = require('sign-in')
- let ip = null
- async function nextFn(data) {
- //写自己的业务逻辑
- switch (data.extra) {
- case "uniSignIn": //签到
- let {
- user_id
- } = data;
- await signIn({
- user_id,
- ip
- })
- break;
- default:
- break;
- }
- return {
- "isValid": true //如果不返回,广点通会2次调用本云函数
- }
- }
- const crypto = require('crypto');
- const db = uniCloud.database();
- exports.main = async (event, context) => {
- ip = context.CLIENTIP;
- //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 trans_id = event.trans_id;
- //去uni-config-center通过adpid获取secret
- const secret = uniADConfig[event.adpid]
- const sign2 = crypto.createHash('sha256').update(`${secret}:${trans_id}`).digest('hex');
- if (event.sign !== sign2) {
- console.log('验签失败');
- return null;
- }
- //自己的逻辑
- try {
- return await nextFn(data)
- } catch (e) {
- console.error(e)
- return {
- "isValid": false
- }
- }
- };
|