收藏
回答

我是使用unicloud开发了一个公众号自动回复的接口,日志请求返回成功了,但是微信一直收不到?

我是使用unicloud开发了一个公众号自动回复的接口,日志请求返回成功了,但是微信一直收不到?

不知道是问题,也没有报错?

回答关注问题邀请回答
收藏

1 个回答

  • 存在
    存在
    2023-07-10

    const sha1 = require('sha1');

    exports.main = async (event, context) => {

    let {

    httpMethod,

    queryStringParameters,

    body

    } = event;

    if (httpMethod == "POST") {

    return await postFun(body);

    } else {

    //返回数据给客户端

    return getFun(queryStringParameters);

    }


    };


    function getFun(params) {

    let {

    signature,

    echostr,

    timestamp,

    nonce

    } = params;

    let token = 'xxxxx';


    //字典排序

    const str = [token, timestamp, nonce].sort().join('');

    const result = sha1(str);

    let res;

    if (result === signature) {

    res = echostr;

    } else {

    res = "fail";

    }

    return res;

    }


    async function postFun(body) {

    console.log(body, 'body')

    var parseString = require('xml2js').parseString

    parseString(body, async (err, xmlObj) => {

    console.log(xmlObj, 'xmlObj')

    let {

    ToUserName, // appid

    FromUserName, // openid

    MsgType, // text,event

    EventKey,

    Content,

    } = xmlObj


    let content = 'hello'

    //返回数据给客户端

    let xmlData = '<xml>' +

    '<ToUserName><![CDATA[' + FromUserName + ']]></ToUserName>' +

    '<FromUserName><![CDATA[' + ToUserName + ']]></FromUserName>' +

    '<CreateTime>' + parseInt(new Date().valueOf() / 1000) + '</CreateTime>' +

    '<MsgType><![CDATA[text]]></MsgType>' +

    '<Content><![CDATA[' + content + ']]></Content>' +

    '</xml>'


    return xmlData

    // 返回回复 XML 数据给微信公众号

    // return {

    // // headers: {

    // // 'Content-Type': 'application/xml',

    // // },

    // body: xmlData,

    // };

    })



    }

    2023-07-10
    有用
    回复
登录 后发表内容