CHENAF
CHENAF
  • 发布:2022-12-20 17:30
  • 更新:2022-12-23 14:17
  • 阅读:233

unicloud开发微信公众号如何放回XML格式?

分类:uniCloud

如题,想要开发被动回复用户消息的功能,也响应了xml的格式,但是公众号依旧是显示服务故障,想问一下大家有没有这方面的例子可以参考指教一番。

2022-12-20 17:30 负责人:无 分享
已邀请:
呆狗的一生

呆狗的一生 - 呆狗的一生

以前做过。在开发自己的后台之前的准备工作是设置好公众号里的设置,比如开发者接口(例如:www.abcd.com/reply),和用于信息加密的我的token,详细信息,查看官方文档,点击查看接入指南

根据微信开放平台的说明文档得知:
在自己的服务器,/reply接口,要有一个get和一个post接口,get接口用于信息验证(目的是验证咱们的服务器收到的信息是否是来自微信官方服务器),如果咱们验证成功,就返回微信给我们传的来的echostr字符串。而post接口用于接收信息(就是你图中发的这个1),微信给咱们传过来的是xml数据,服务器收到你发的这个1之后,处理数据后,返回xml数据,就行了。

  • CHENAF (作者)

    您好,大佬,您的意思是不是微信服务器会请求/reply接口两次,一次是get请求一次是post请求,然后我们通过云函数event对象中的请求方式,如果是get请求则返回echostr字符串,如果是post请求则返回xml数据对吧


    2022-12-21 18:50

  • 呆狗的一生

    回复 CHENAF: 对的,你是怎么做的?


    2022-12-23 00:47

  • CHENAF (作者)

    回复 呆狗的一生: 弄出来了,代码放评论里面,害,官方文档写的不清楚


    2022-12-23 14:19

CHENAF

CHENAF (作者) - 世人慌慌张张,不过是图碎银几两,偏偏这碎银几两,能解世间万种慌张。

'use strict';  
  
const sha1 = require('sha1');  
const xml2js= require('xml2js');  
const wxToken = '';//公众号配置的token  
  
exports.main = async (event, context) => {  
	const {  
		httpMethod,  
		queryStringParameters,  
		body  
	} = event;  
	const {  
		signature,  
		timestamp,  
		nonce,  
		echostr  
	} = queryStringParameters;  
	// const mySignature = sha1([wxToken, timestamp, nonce].sort().join(''));  
	// if (mySignature === signature) {  
	// 	return echostr  
	// } else {  
	// 	return false  
	// }  
	const requestBody = await xml2js.parseStringPromise(body, {  
		explicitArray: false  
	});  
	const {  
		ToUserName,  
		FromUserName,  
		MsgType,  
		Content  
	} = requestBody.xml;  
	if (MsgType === 'text') {  
		//	文本消息  
		return {  
			mpserverlessComposedResponse: true, // 使用阿里云返回集成响应是需要此字段为true  
			statusCode: 200,  
			headers: {  
				'content-type': 'text/html'  
			},  
			body: '<xml>' +  
				'<ToUserName><![CDATA[' + FromUserName + ']]></ToUserName>' +  
				'<FromUserName><![CDATA[' + ToUserName + ']]></FromUserName>' +  
				'<CreateTime>' + parseInt(new Date().valueOf() / 1000) + '</CreateTime>' +  
				'<MsgType><![CDATA[text]]></MsgType>' +  
				'<Content><![CDATA[回复文本消息]]></Content>' +  
				'</xml>'  
		}  
	}  
};
  • 呆狗的一生

    你注释掉的那一段就是get方法的。要写出来


    2022-12-23 19:47

  • CHENAF (作者)

    回复 呆狗的一生: 对头,好像只有添加URL的时候有用到,后面好像都没用到了,所以我就给注释掉了


    2022-12-26 14:01

要回复问题请先登录注册